Skapa en Wi-Fi-dörrklocka med en Raspberry Pi Pico W

Raspberry Pi Pico W projekterar WiFi-dörrklocka och avisering

Här är en enkel men praktisk handledning som hjälper dig att förstå hur du kan få ett e-postmeddelande att skickas (eller ett meddelande att visas på din telefon) när du trycker på en knapp som är ansluten till Raspberry Pi Pico W. På så sätt kan du använda din Pico W som en Wi-Fi-dörrklocka!

Genom det här projektet lär du dig hur du gör HTTP-förfrågningar för att ansluta till IFTTT-slutpunkterna.

Video

Delar som behövs

Raspberry Pi Pico W med rubriker

Koppla upp Raspberry Pi

raspberry pi pico w knapp

För att ansluta Raspberry Pi Pico W till knappen:

  • Anslut ena sidan av knappen till en GPIO14
  • Anslut den andra sidan av en knapp till ett 3,3V-stift

Observera att det finns knappar som har fyra spetsar och knappar som har två spetsar.

Om du har en fyrpolig knapp kan du ansluta bygelkablarna diagonalt för att säkerställa att de sitter på motsatta sidor.

Om du har ett stift med två stift kopplar du bara ihop de motsatta stiften.

Konfigurera IFTTT för att skicka ett e-postmeddelande

IFTTT-meddelande

IFTTT står för IF Thans, Then Thatt.

Istället för att skriva din egen kod använder vi IFTTT för att göra allt enklare.

Klicka här för att komma till IFTTT.com och registrera dig för ett konto.

När du har registrerat dig klickar du på "Skapa"

I delen "If This" klickar du på "Add" för att skapa en händelse. Detta skapar de villkor som krävs för att utlösa "Then That"-delen, som är att skicka en avisering.

På följande skärm, "Välj en tjänst", skriv "Webhooks" och klicka på den.

Klicka sedan på "Ta emot en webbförfrågan".

Skriv in evenemangets namn pico_w_begäran och bläddra ner och "Skapa trigger".

Du kommer tillbaka till skärmen "If This Then That". Det är dags att ställa in din "Then That"-del, så klicka på den.

Sök efter Gmail och klicka på det. Klicka sedan på "Skicka ett e-postmeddelande till dig själv"

Välj din e-postadress.

Skriv sedan in ett ämne. Vi skrev "Någon ringde på dörrklockan!"

I brödtexten kopierade vi mer eller mindre ämnesordets meddelande, förutom att vi lade in

{{OccurredAt}} för att visa vilken tid detta utlöstes.

Klicka "Skapa åtgärder". På nästa skärm klickar du på "Fortsätt".

Skriv sedan in ett namn för appleten. Vi använde "Pico W to Gmail".

Coolt! Det är dags att klicka på "Slutför".

Konfigurera IFTTT för att skicka meddelande till telefonapp

Du kan också få IFTTT att skicka ett meddelande till appen varje gång någon ringer på dörrklockan.

Processen är mycket lik den som gäller för e-postmeddelanden.

För "If This"-delen väljer du "Webhooks" som tjänst och väljer "Receive a web request". Skriv in ett namn för händelsen. Vi använde "door_bell_rang".

För "Then That"-delen är det här det skiljer sig åt.

Du ska istället välja en "Notifications"-tjänst och sedan "Send a notification from the IFTTT app".

När både "If This" och "Then That" är ifyllda klickar du på "continue". Skriv in en Applet Title och klicka på Finish.

Hitta dina IFTTT-autentiseringsuppgifter

Nu när du har konfigurerat If-Then-appleten kan du fortsätta med att hitta dina autentiseringsuppgifter så att Pico W kan ansluta till IFTTT.

För att kunna göra detta:

  • Klicka på din profilbild längst upp till höger
  • Klicka på "Mina tjänster"
  • Klicka på Webhooks
  • Klicka på knappen Dokumentation.

Du kommer att se en del information på den här sidan, bland annat din hemliga nyckel.

Ansluta Raspberry Pi Pico W till IFTTT

Alla vår kod finns nu på vår Github reposom du kan hitta här.

Ladda ner koden och packa upp den. Kopiera koden till Raspberry Pi Pico W.

Du kommer att behöva ändra secrets.py.

Byt ut ssid med ditt WiFi-nätverks SSID och lägg sedan in lösenordet i pw fält.

Använd nyckeln som du fick från föregående avsnitt och klistra in den i ifttt_nyckel's värde.

Kod för dörrklocka

Kod för dörrklocka bygger vidare på de tidigare handledningarna. Kort sagt, här är vad koden gör:

  • Importerar nödvändiga paket
  • Ställer in WiFi och ansluter till nätverket

Här är den dörrklocksspecifika koden:

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

Om du minns det så kopplade vi knappen till GPIO14. Därför vill vi skapa ett objekt som läser värdet på den GPIO:n.

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

Vi vill att IFTTT ska skicka ett meddelande endast om statusen ändras från Falsk till Sant. Vi vill också undvika att IFTTT skickar flera meddelanden om knappen har tryckts in en gång.

Därav dessa skyddsåtgärder:

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

Problemet här är att när du trycker på knappen kan du hålla den intryckt ett tag utan att ens märka det. Det kan verka som ett tryck för dig, men för Pico W kan det vara fem. Så vi vill undvika att få fem notiser.

Det är här som senaste_stat och nuvarande_tillstånd variabler kommer in.

När du trycker på knappen, nuvarande_tillstånd blir Sant.

Detta utlöser koden som ansluter till IFTTT.

När det är gjort blir det en paus på två sekunder tack vare tid.sömn(2).

Då så, senaste_stat blir Sant eftersom den får värdet av nuvarande_tillstånd.

Detta förhindrar därför att ytterligare inspelade tryckningar utlöser fler meddelanden, eftersom båda variablerna nu är Santpå grund av den här linjen:

  if last_state == False and current_state == True:

När de extra pressarna har passerat, senaste_stat återgår till False och är därför redo att ta emot en Sant för att aktivera anslutningen till IFTTT igen.

Välj din aviseringsmetod

Nu är det här du väljer din väg.

Om du har skapat ett e-postmeddelande kan du ta bort kommentarerna på denna rad:

 # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']

Detta förutsätter att du har döpt din händelse till "pico_w_request". Annars ändrar du den delen av URL:en till det namn du har gett den.

Om du vill ha ett appmeddelande måste du använda nästa rad:

 ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']

Hur går du vidare nu?

Med detta enkla projekt kan du nå långt.

En knapp kan användas för att utlösa många saker när du är bekant med att interagera med API:er.

Du kan t.ex. programmera knappen så att den träffar Spotify API för att stoppa musiken eller hoppa över ett spår.

Vill du hålla dig uppdaterad med nyheter och andra Pico-projekt? Klicka här:

Hur skulle du ställa in denna Pico Wi-Fi-dörrklocka för att passa dina behov?

4 Kommentarer

  1. Tom den augusti 12, 2022 kl 3:06 f m

    Hälsningar

    Jag ville prova några av dina RPI Pico W-projekt, dvs. IFTT skicka e-post och webbplatsprojektet. Jag stötte på problem, när jag körde IFTT-exemplet letade micropython-programmet efter en "sockets" -modul. Jag kunde inte hitta en sockets-modul för att göra det möjligt för programmet att fungera korrekt. Kan du ge råd om korrekt problemet

  2. [...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Dörrklocka handledning (HTTP-förfrågningar & IFTTT) [...]

  3. [...] Framför allt skiljer sig detta projekt inte så mycket från vår Pico W Doorbell Tutorial som vi delade tillbaka i juli förra året. [...]

  4. [...] Vill du göra ditt hem smartare? En Raspberry Pi kan fungera som både central och perifer enhet för att automatisera allt. Du kan t.ex. göra om den till en övervakningskamera eller ett säkerhetssystem, använda den som röstassistent, skapa en smart spegel eller använda den för smart belysning. Du kan till och med använda den för att vattna växter, övervaka fåglarna i din trädgård eller för en smart dörrklocka! [...]

Lämna en kommentar