Maak een Wi-Fi-deurbel met een Raspberry Pi Pico W
Hier is een eenvoudige maar praktische tutorial die je helpt te begrijpen hoe je een e-mail kunt laten versturen (of een melding op je telefoon kunt laten verschijnen) wanneer er op een knop wordt gedrukt die op de Raspberry Pi Pico W is aangesloten. Zo kun je je Pico W gebruiken als een Wi-Fi-deurbel!
In dit project leer je hoe je HTTP-verzoeken maakt om verbinding te maken met de IFTTT eindpunten.
Video
Benodigde onderdelen
Raspberry Pi Pico W met kopteksten
De Raspberry Pi aansluiten
Om de Raspberry Pi Pico W aan te sluiten op de knop:
- Verbind één kant van de knop met een GPIO14
- Verbind de andere kant van een knop met een 3,3V pin
Let op, er zijn knoppen met vier tanden en knoppen met twee tanden.
Als je een vierpolige knop hebt, kun je de jumper draden diagonaal aansluiten zodat ze aan tegenovergestelde kanten zitten.
Als je een pin met twee pinnen hebt, sluit dan gewoon de tegenoverliggende pinnen aan.
IFTTT instellen om een e-mail te versturen
IFTTT staat voor ALS Tzijn, Tkip Thoed.
In plaats van je eigen code te schrijven, zullen we IFTTT gebruiken om alles gemakkelijker te maken.
Klik hier om naar IFTTT.com en meld je aan voor een account.
Nadat u zich hebt aangemeld, klikt u op "Aanmaken".
Klik in het gedeelte "Als dit" op "Toevoegen" om een gebeurtenis in te stellen. Dit stelt de voorwaarden in die nodig zijn om het deel "Dan dat" te activeren, namelijk het verzenden van een melding.
Typ in het volgende scherm, "Kies een service", "Webhooks" en klik erop.
Klik vervolgens op "Een webverzoek ontvangen".
Typ de naam van de gebeurtenis pico_w_aanvraag en scrol omlaag naar "Trigger maken".
Je keert terug naar het scherm "Als dit dan dat". Het is tijd om je "Dan Dat" deel in te stellen, dus klik erop.
Zoek naar Gmail en klik erop. Klik dan op "Stuur jezelf een e-mail".
Kies je e-mailadres.
Typ dan een onderwerp in. Wij schreven "Iemand heeft aangebeld!".
In de body hebben we min of meer het bericht van het onderwerp gedupliceerd, behalve dat we er het volgende in hebben gezet
{{OccurredAt}} om te laten zien hoe laat dit werd geactiveerd.
Klik "Actie maken". Klik op het volgende scherm op "Doorgaan".
Voer dan een naam in voor de Applet. Wij gebruikten "Pico W to Gmail".
Gaaf! Het is tijd om op "Finish" te klikken.
IFTTT instellen om meldingen naar telefoon-app te sturen
Je kunt ook IFTTT een melding laten sturen naar de app telkens wanneer iemand aanbelt.
Het proces lijkt erg op het proces voor e-mailmeldingen.
Kies voor het gedeelte "Als dit" "Webhooks" als je service en kies "Een webverzoek ontvangen". Voer een naam in voor de gebeurtenis. Wij hebben "door_bell_rang" gebruikt.
Voor het "Dan dat" gedeelte, dit is waar het verschilt.
In plaats daarvan kies je een "Meldingen" service en vervolgens "Stuur een melding vanuit de IFTTT app".
Wanneer zowel je "Als dit" als "Dan dat" zijn ingevuld, klik je op "doorgaan". Typ een applettitel en klik op Voltooien.
Je IFTTT-referenties vinden
Nu je de If-Then applet hebt ingesteld, kun je verder gaan met het vinden van je referenties zodat de Pico W verbinding kan maken met IFTTT.
Om dit te doen:
- Klik op je profielfoto rechtsboven
- Klik op "Mijn services
- Klik op Webhooks
- Klik op de knop Documentatie.
Je ziet wat informatie op deze pagina, waaronder je geheime sleutel.
Raspberry Pi Pico W verbinden met IFTTT
Alle onze code staat nu op onze Github repodie je hier kunt vinden.
Download de code en pak deze uit. Kopieer de code naar de Raspberry Pi Pico W.
U moet het volgende wijzigen secrets.py.
vervangen ssid met de SSID van je WiFi-netwerk en zet dan het wachtwoord in de pw veld.
Gebruik de sleutel uit de vorige sectie en plak deze in de ifttt_sleutelwaarde.
Deurbel code
De code van de deurbel bouwt voort op de vorige tutorials. In het kort is dit wat de code doet:
- Importeert noodzakelijke pakketten
- WiFi instellen en verbinding maken met het netwerk
Hier is de deurbel-specifieke code:
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
Als je het je herinnert, hebben we de knop verbonden met GPIO14. Daarom willen we een object maken dat de waarde van die GPIO leest.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
We willen dat IFTTT alleen een melding stuurt als de status verandert van Vals naar Echt. We willen ook voorkomen dat IFTTT meerdere meldingen verstuurt als de knop eenmaal is ingedrukt.
Vandaar deze voorzorgsmaatregelen:
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
Het probleem hier is dat wanneer je op de knop drukt, je hem misschien een tijdje ingedrukt houdt zonder dat je het merkt. Voor jou lijkt het misschien één keer drukken, maar voor de Pico W kunnen het er wel vijf zijn. We willen dus voorkomen dat we vijf meldingen krijgen.
Dit is waar de laatste_staat en huidige_status variabelen binnenkomen.
Wanneer u op de knop drukt, huidige_status wordt Echt.
Dit activeert de code die verbinding maakt met IFTTT.
Zodra dat is gebeurd, is er een pauze van twee seconden dankzij time.sleep(2).
Dan, laatste_staat wordt Echt omdat het de waarde aanneemt van huidige_status.
Dit zorgt er dus voor dat er geen meldingen meer worden getriggerd als er nog meer op de knop wordt gedrukt, omdat beide variabelen nu Echtvanwege deze regel:
if last_state == False and current_state == True:
Zodra de extra persen voorbij zijn, laatste_staat keert terug naar False en is daarom klaar om een Echt om de verbinding met IFTTT opnieuw te activeren.
Kies je meldingsmethode
Nu kies je jouw pad.
Als je een e-mailverzendmelding hebt gemaakt, kun je deze regel uitcommentariëren:
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Dit gaat ervan uit dat je je gebeurtenis "pico_w_request" hebt genoemd. Of verander anders dat deel van de URL naar de naam die je het hebt gegeven.
Als je een app-melding wilt, moet je de volgende regel gebruiken:
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Hoe ga je nu verder?
Met dit eenvoudige project kun je het ver schoppen.
Een knop kan worden gebruikt om veel dingen te triggeren als je eenmaal bekend bent met de interactie met API's.
Je kunt de knop bijvoorbeeld zo programmeren dat hij de Spotify API aanroept om je muziek te stoppen of een nummer over te slaan.
Op de hoogte blijven van nieuws en andere Pico projecten? Klik dan hier:
Hoe zou je deze Pico Wi-Fi-deurbel instellen volgens jouw behoeften?
Groeten
Ik wilde een paar van je RPI Pico W projecten proberen, namelijk IFTTT send mail en het webpage project. Toen ik het IFTTT voorbeeld uitvoerde, zocht het micropython programma naar een 'sockets' module. Ik kon geen sockets module vinden om het programma correct te laten functioneren. Kunt u advies geven over de juiste oplossing?
[...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP-verzoeken & IFTTT) [...]
[...] Dit project verschilt niet veel van onze Pico W Doorbell Tutorial die we in juli vorig jaar deelden. [...]
[...] Wil je je huis slimmer maken? Een Raspberry Pi kan dienen als centraal en randapparaat om alles te automatiseren. Je kunt er bijvoorbeeld een bewakingscamera of beveiligingssysteem mee maken, je kunt het gebruiken als spraakassistent, je kunt er een slimme spiegel mee maken, of je kunt het gebruiken voor slimme verlichting. Je kunt het zelfs gebruiken om planten water te geven, de vogels in je tuin in de gaten te houden of voor een slimme deurbel! [...]