Créer une sonnette Wi-Fi avec un Raspberry Pi Pico W
Voici un tutoriel simple mais pratique qui vous aidera à comprendre comment déclencher l'envoi d'un email (ou l'apparition d'une notification sur votre téléphone) lorsqu'un bouton connecté au Raspberry Pi Pico W est pressé. Ainsi, vous pouvez utiliser votre Pico W comme une sonnette Wi-Fi !
Dans ce projet, vous apprendrez à faire des requêtes HTTP pour vous connecter aux points de terminaison IFTTT.
Vidéo
Pièces nécessaires
Raspberry Pi Pico W avec des en-têtes
Câblage du Raspberry Pi
Pour connecter le Raspberry Pi Pico W au bouton :
- Connecter un côté du bouton à un GPIO14
- Connecter l'autre côté d'un bouton à une broche de 3,3V
Notez qu'il existe des boutons à quatre broches et des boutons à deux broches.
Si vous disposez d'un bouton à quatre broches, vous pouvez connecter les fils de liaison en diagonale pour vous assurer qu'ils se trouvent sur des côtés opposés.
Si vous disposez d'une broche à deux broches, il suffit de connecter les broches opposées.
Configurer IFTTT pour envoyer un e-mail
IFTTT signifie SI Tson, Tpoule Tchapeau.
Au lieu d'écrire votre propre code, nous utiliserons IFTTT pour faciliter les choses.
Cliquez ici pour aller à IFTTT.com et ouvrir un compte.
Une fois que vous vous êtes inscrit, cliquez sur "Créer"
Dans la partie "Si cela", cliquez sur "Ajouter" pour définir un événement. Celui-ci définit les conditions requises pour déclencher la partie "Alors que", c'est-à-dire l'envoi d'une notification.
Dans l'écran suivant, "Choose a service", tapez "Webhooks" et cliquez dessus.
Cliquez ensuite sur "Recevoir une requête web".
Tapez le nom de l'événement pico_w_request et faites défiler vers le bas et "Create Trigger" (Créer un déclencheur).
Vous revenez à l'écran "Si ceci, alors cela". Il est temps de configurer votre partie "Alors que", alors cliquez dessus.
Recherchez Gmail et cliquez dessus. Cliquez ensuite sur "S'envoyer un e-mail"
Choisissez votre email.
Tapez ensuite un sujet. Nous avons écrit "Quelqu'un a sonné à la porte !".
Dans le corps du texte, nous avons plus ou moins reproduit le message de l'objet, sauf que nous avons ajouté
{{OccurredAt}} pour indiquer l'heure à laquelle cette action a été déclenchée.
Cliquez "Créer une action". Sur l'écran suivant, cliquez sur "Continuer".
Saisissez ensuite un nom pour l'applet. Nous avons utilisé "Pico W to Gmail".
Cool ! Il est temps de cliquer sur "Terminer".
Configurer IFTTT pour envoyer une notification à l'application du téléphone
Vous pouvez également utiliser IFTTT pour envoyer une notification à l'application chaque fois que quelqu'un sonne à la porte.
Le processus est très similaire à celui de la notification par courrier électronique.
Pour la partie "If This", choisissez "Webhooks" comme service et choisissez "Receive a web request". Saisissez un nom pour l'événement. Nous avons utilisé "door_bell_rang".
Pour la partie "ensuite", c'est là que les choses se passent différemment.
Vous choisirez plutôt un service "Notifications" puis "Envoyer une notification depuis l'application IFTTT".
Lorsque les cases "Si ceci" et "Alors cela" sont remplies, cliquez sur "Continuer". Tapez un titre d'applet et cliquez sur "Terminer".
Trouver vos identifiants IFTTT
Maintenant que l'applet If-Then est configurée, vous pouvez rechercher vos informations d'identification pour que la Pico W puisse se connecter à IFTTT.
Pour ce faire :
- Cliquez sur votre photo de profil en haut à droite
- Cliquez sur "Mes services"
- Cliquez sur Webhooks
- Cliquez sur le bouton Documentation.
Vous verrez sur cette page quelques informations, dont votre clé secrète.
Connecter le Raspberry Pi Pico W à IFTTT
Tous notre code est maintenant sur notre repo Githubque vous pouvez trouver ici.
Téléchargez le code et décompressez-le. Copiez le code sur le Raspberry Pi Pico W.
Vous devrez modifier secrets.py.
Remplacer ssid avec le SSID de votre réseau WiFi, puis mettez le mot de passe dans le champ pw domaine.
Utilisez la clé que vous avez obtenue dans la section précédente et collez-la dans le champ ifttt_keyLa valeur du
Code sonnette
Le code de la sonnette s'appuie sur les tutoriels précédents. En bref, voici ce que fait le code :
- Importe les paquets nécessaires
- Configure le WiFi et se connecte au réseau
Voici le code spécifique à la sonnette :
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Si vous vous souvenez, nous avons connecté le bouton à GPIO14. Nous voulons donc créer un objet qui lit la valeur de ce GPIO.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
Nous voulons que IFTTT envoie une notification uniquement si l'état passe de Faux à Vrai. Nous voulons également éviter que IFTTT n'envoie plusieurs notifications si le bouton a été pressé une fois.
D'où ces garanties :
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Le problème est que lorsque vous appuyez sur le bouton, vous pouvez le maintenir enfoncé pendant un certain temps sans même vous en rendre compte. Cela peut vous sembler être une seule pression, mais pour le Pico W, cela peut en être cinq. Nous voulons donc éviter de recevoir cinq notifications.
C'est ici que le dernier_état et état_courant Les variables entrent en ligne de compte.
Lorsque vous appuyez sur le bouton, état_courant devient Vrai.
Cela déclenche le code qui se connecte à IFTTT.
Une fois que cela est fait, il y a une pause de deux secondes grâce à time.sleep(2).
Ensuite, dernier_état devient Vrai car il prend la valeur de état_courant.
Cela empêche donc tout nouvel appui enregistré de déclencher d'autres notifications, puisque les deux variables sont maintenant Vraià cause de cette ligne :
if last_state == False and current_state == True:
Une fois que les presses supplémentaires sont passées, dernier_état retourne à False et est donc prêt à recevoir un Vrai pour rétablir la connexion avec IFTTT.
Choisissez votre méthode de notification
C'est ici que vous choisissez votre voie.
Si vous avez créé une notification d'envoi de courrier électronique, vous pouvez décommenter cette ligne :
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Cela suppose que vous avez nommé votre événement "pico_w_request". Sinon, remplacez cette partie de l'URL par le nom que vous lui avez donné.
Si vous souhaitez recevoir une notification d'application, vous devrez utiliser la ligne suivante :
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Quelle est la suite des événements ?
Avec ce projet simple, vous pouvez aller loin.
Un bouton peut être utilisé pour déclencher de nombreuses choses une fois que vous êtes familiarisé avec l'interaction avec les API.
Par exemple, vous pouvez programmer le bouton pour qu'il tape sur l'API Spotify afin d'arrêter votre musique ou de passer une piste.
Vous voulez rester au courant des nouvelles et des autres projets de Pico ? Cliquez ici :
Comment configurer cette sonnette Wi-Fi Pico pour qu'elle réponde à vos besoins ?
Salutations
J'ai voulu essayer quelques uns de vos projets RPI Pico W, par exemple IFTT send mail et le projet webpage. J'ai rencontré un problème, lorsque j'ai exécuté l'exemple IFTT, le programme micropython recherchait un module 'sockets'. Je n'ai pas pu trouver de module sockets pour permettre au programme de fonctionner correctement. Pouvez-vous m'aider à résoudre ce problème ?
[...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP requests & IFTTT) [...]
[...] Notamment, ce projet n'est pas très différent de notre tutoriel sur la sonnette Pico W que nous avons partagé en juillet de l'année dernière. [...]
[...] Vous souhaitez rendre votre maison plus intelligente ? Un Raspberry Pi peut servir à la fois de dispositif central et de périphérique pour tout automatiser. Par exemple, vous pouvez le transformer en caméra de surveillance ou en système de sécurité, vous pouvez l'utiliser comme assistant vocal, vous pouvez créer un miroir intelligent avec lui, ou vous pouvez l'utiliser pour un éclairage intelligent. Vous pouvez même l'utiliser pour arroser les plantes, surveiller les oiseaux dans votre jardin ou pour une sonnette intelligente ! [...]