Erstellen einer Wi-Fi-Türklingel mit einem Raspberry Pi Pico W
Hier ist ein einfaches, aber praktisches Tutorial, das Ihnen hilft zu verstehen, wie Sie eine E-Mail senden (oder eine Benachrichtigung auf Ihrem Telefon erscheinen lassen), wenn eine mit dem Raspberry Pi Pico W verbundene Taste gedrückt wird. So können Sie Ihren Pico W als Wi-Fi-Türklingel verwenden!
In diesem Projekt lernen Sie, wie Sie HTTP-Anfragen stellen, um sich mit den IFTTT-Endpunkten zu verbinden.
Video
Benötigte Teile
Raspberry Pi Pico W mit Kopfzeilen
Verkabelung des Raspberry Pi
Um den Raspberry Pi Pico W mit dem Knopf zu verbinden:
- Verbinden Sie eine Seite der Taste mit einem GPIO14
- Verbinden Sie die andere Seite einer Taste mit einem 3,3-V-Stift
Beachten Sie, dass es Knöpfe mit vier Zacken und Knöpfe mit zwei Zacken gibt.
Wenn Sie einen vierpoligen Knopf haben, können Sie die Überbrückungsdrähte diagonal verbinden, damit sie auf gegenüberliegenden Seiten liegen.
Wenn Sie einen zweistiftigen Stift haben, schließen Sie einfach die gegenüberliegenden Stifte an.
Einrichten von IFTTT zum Senden einer E-Mail
IFTTT steht für IF Tsein, Then THut.
Anstatt Ihren eigenen Code zu schreiben, werden wir IFTTT verwenden, um alles einfacher zu machen.
Klicken Sie hier, um zu IFTTT.com und melden Sie sich für ein Konto an.
Sobald Sie sich angemeldet haben, klicken Sie auf "Erstellen".
Klicken Sie im Teil "Wenn dies" auf "Hinzufügen", um ein Ereignis einzurichten. Dadurch werden die Bedingungen festgelegt, die erforderlich sind, um den Teil "Dann das" auszulösen, d. h. eine Benachrichtigung zu senden.
Geben Sie im folgenden Bildschirm "Dienst auswählen" "Webhooks" ein und klicken Sie darauf.
Klicken Sie dann auf "Eine Web-Anfrage empfangen".
Geben Sie den Namen des Ereignisses ein pico_w_anforderung und scrollen Sie nach unten und wählen Sie "Auslöser erstellen".
Sie kehren zum Bildschirm "Wenn dies, dann das" zurück. Es ist an der Zeit, Ihren "Dann das"-Teil einzurichten, also klicken Sie darauf.
Suchen Sie nach Gmail und klicken Sie darauf. Klicken Sie dann auf "Senden Sie sich eine E-Mail".
Wählen Sie Ihre E-Mail.
Geben Sie dann einen Betreff ein. Wir haben geschrieben: "Jemand hat an der Tür geklingelt!"
Im Hauptteil haben wir mehr oder weniger die Nachricht des Betreffs dupliziert, mit dem Unterschied, dass wir Folgendes eingefügt haben
{{OccurredAt}} um zu zeigen, wann dies ausgelöst wurde.
Klick "Aktion erstellen". Klicken Sie auf dem nächsten Bildschirm auf "Weiter".
Geben Sie dann einen Namen für das Applet ein. Wir haben "Pico W to Gmail" verwendet.
Super! Es ist Zeit, auf "Fertigstellen" zu klicken.
Einrichten von IFTTT zum Senden von Benachrichtigungen an die Telefon-App
Sie können IFTTT auch dazu veranlassen, jedes Mal eine Benachrichtigung an die App zu senden, wenn jemand an der Tür klingelt.
Das Verfahren ist dem der E-Mail-Benachrichtigung sehr ähnlich.
Wählen Sie für den Teil "Wenn dies" den Dienst "Webhooks" und wählen Sie "Eine Webanfrage empfangen". Geben Sie einen Namen für das Ereignis ein. Wir haben "door_bell_rang" verwendet.
Der "Then That"-Teil unterscheidet sich hiervon.
Wählen Sie stattdessen einen "Benachrichtigungsdienst" und dann "Benachrichtigung von der IFTTT-App senden".
Wenn die beiden Felder "Wenn dies" und "Dann das" ausgefüllt sind, klicken Sie auf "Weiter". Geben Sie einen Applet-Titel ein und klicken Sie auf "Fertig stellen".
Ihre IFTTT-Anmeldedaten finden
Nachdem Sie nun das If-Then-Applet eingerichtet haben, können Sie Ihre Anmeldedaten ermitteln, damit sich der Pico W mit IFTTT verbinden kann.
Um dies zu erreichen:
- Klicken Sie auf Ihr Profilbild oben rechts
- Klicken Sie auf "Meine Dienste".
- Klicken Sie auf Webhooks
- Klicken Sie auf die Schaltfläche Dokumentation.
Auf dieser Seite werden einige Informationen angezeigt, darunter Ihr geheimer Schlüssel.
Verbinden des Raspberry Pi Pico W mit IFTTT
Alle Unser Code ist jetzt auf unserem Github-Repositoriumdie Sie hier finden können.
Laden Sie den Code herunter und entpacken Sie ihn. Kopieren Sie den Code auf den Raspberry Pi Pico W.
Sie müssen Folgendes ändern geheimnisse.py.
Ersetzen Sie ssid mit der SSID Ihres WiFi-Netzwerks, dann geben Sie das Passwort in das Feld pw Feld.
Verwenden Sie den Schlüssel aus dem vorherigen Abschnitt und fügen Sie ihn in das Feld ifttt_schlüsselWert.
Türklingel-Code
Der Türklingelcode baut auf den vorherigen Tutorials auf. Kurz gesagt, der Code funktioniert folgendermaßen:
- Importiert notwendige Pakete
- Richtet WiFi ein und stellt eine Verbindung zum Netzwerk her
Hier ist der türglockenspezifische 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
Wenn Sie sich erinnern, haben wir die Taste mit GPIO14 verbunden. Daher wollen wir ein Objekt erstellen, das den Wert dieses GPIOs ausliest.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
Wir möchten, dass IFTTT nur dann eine Benachrichtigung sendet, wenn sich der Status von Falsch zu Wahr. Wir wollen auch vermeiden, dass IFTTT mehrere Benachrichtigungen sendet, wenn die Schaltfläche einmal gedrückt wurde.
Daher diese Sicherheitsvorkehrungen:
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
Das Problem dabei ist, dass Sie die Taste vielleicht eine Weile gedrückt halten, ohne es zu bemerken. Für Sie mag das wie ein einziger Tastendruck aussehen, für den Pico W könnten es aber fünf sein. Wir wollen also vermeiden, fünf Benachrichtigungen zu erhalten.
Dies ist der Ort, an dem die letzter_Zustand und aktueller_Zustand Variablen hinzukommen.
Wenn Sie die Taste drücken, aktueller_Zustand wird Wahr.
Dadurch wird der Code ausgelöst, der eine Verbindung zu IFTTT herstellt.
Sobald das erledigt ist, gibt es eine zwei Sekunden lange Pause dank time.sleep(2).
Dann, letzter_Zustand wird Wahr denn sie nimmt den Wert von aktueller_Zustand.
Dadurch wird verhindert, dass weitere aufgezeichnete Drücke weitere Benachrichtigungen auslösen, da beide Variablen nun Wahrwegen dieser Linie:
if last_state == False and current_state == True:
Sobald die zusätzlichen Pressen vorbei sind, letzter_Zustand auf False zurück und ist damit bereit, eine Wahr um die Verbindung zu IFTTT wieder herzustellen.
Wählen Sie Ihre Benachrichtigungsmethode
Jetzt können Sie Ihren Weg wählen.
Wenn Sie eine E-Mail-Benachrichtigung erstellt haben, können Sie diese Zeile auskommentieren:
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Dies setzt voraus, dass Sie Ihr Ereignis "pico_w_request" genannt haben. Andernfalls ändern Sie diesen Teil der URL in den Namen, den Sie ihm gegeben haben.
Wenn Sie eine App-Benachrichtigung wünschen, müssen Sie die nächste Zeile verwenden:
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Wie geht es jetzt weiter?
Mit diesem einfachen Projekt können Sie es weit bringen.
Sobald Sie mit der Interaktion mit APIs vertraut sind, können Sie mit einer Schaltfläche viele Dinge auslösen.
Sie können die Taste beispielsweise so programmieren, dass sie die Spotify-API trifft, um Ihre Musik zu stoppen oder einen Titel zu überspringen.
Möchten Sie über Neuigkeiten und andere Pico-Projekte auf dem Laufenden bleiben? Dann klicken Sie hier:
Wie würden Sie diese Pico Wi-Fi-Türklingel für Ihre Bedürfnisse einrichten?
Grüße
Ich wollte ein paar Ihrer RPI Pico W-Projekte ausprobieren, d.h. IFTT send mail und das Webpage-Projekt. Als ich das IFTT-Beispiel ausführte, stieß ich auf ein Problem: Das Micropython-Programm suchte nach einem "Sockets"-Modul. Ich konnte kein Sockets-Modul finden, um das Programm korrekt funktionieren zu lassen. Können Sie mir helfen, das Problem zu lösen?
[...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP requests & IFTTT) [...]
[...] Bemerkenswert ist, dass sich dieses Projekt nicht so sehr von unserem Pico W Doorbell Tutorial unterscheidet, das wir im Juli letzten Jahres veröffentlicht haben. [...]
[...] Sie möchten Ihr Zuhause intelligenter machen? Ein Raspberry Pi kann sowohl als zentrales als auch als peripheres Gerät dienen, um alles zu automatisieren. Sie können ihn zum Beispiel in eine Überwachungskamera oder ein Sicherheitssystem umwandeln, ihn als Sprachassistenten verwenden, einen intelligenten Spiegel einrichten oder ihn für eine intelligente Beleuchtung nutzen. Sie können es sogar zur Bewässerung von Pflanzen, zur Überwachung der Vögel in Ihrem Garten oder für eine intelligente Türklingel verwenden! [...]