Stwórz dzwonek do drzwi Wi-Fi za pomocą Raspberry Pi Pico W
Oto prosty, ale praktyczny samouczek, który pomoże ci zrozumieć, jak uruchomić wysyłanie wiadomości e-mail (lub powiadomienie na telefonie) po naciśnięciu przycisku podłączonego do Raspberry Pi Pico W. W ten sposób można używać Pico W jako dzwonka do drzwi Wi-Fi!
Dzięki temu projektowi dowiesz się, jak tworzyć żądania HTTP, aby połączyć się z punktami końcowymi IFTTT.
Wideo
Potrzebne części
Raspberry Pi Pico W z nagłówkami
Okablowanie Raspberry Pi
Aby podłączyć Raspberry Pi Pico W do przycisku:
- Podłącz jedną stronę przycisku do GPIO14
- Podłącz drugą stronę przycisku do pinu 3,3 V
Istnieją przyciski z czterema bolcami i przyciski z dwoma bolcami.
Jeśli masz przycisk z czterema bolcami, możesz podłączyć przewody połączeniowe po przekątnej, aby upewnić się, że znajdują się po przeciwnych stronach.
Jeśli masz wtyk z dwoma bolcami, po prostu połącz przeciwległe bolce.
Konfiguracja IFTTT do wysyłania wiadomości e-mail
IFTTT oznacza IF Tjego, Tkura Tkapelusz.
Zamiast pisać własny kod, użyjemy IFTTT, aby wszystko ułatwić.
Kliknij tutaj, aby przejść do IFTTT.com i założyć konto.
Po zarejestrowaniu się kliknij przycisk "Utwórz".
W części "If This" kliknij "Add", aby skonfigurować zdarzenie. Spowoduje to ustawienie warunków wymaganych do uruchomienia części "Then That", czyli wysłania powiadomienia.
Na poniższym ekranie "Wybierz usługę" wpisz "Webhooks" i kliknij na nią.
Następnie kliknij "Odbierz żądanie internetowe".
Wpisz nazwę zdarzenia pico_w_request przewiń w dół i wybierz opcję "Utwórz wyzwalacz".
Nastąpi powrót do ekranu "Jeśli to, to tamto". Nadszedł czas, aby skonfigurować część "Then That", więc kliknij na nią.
Wyszukaj Gmaila i kliknij go. Następnie kliknij "Wyślij do siebie wiadomość e-mail"
Wybierz swój adres e-mail.
Następnie wpisz temat. Napisaliśmy "Ktoś zadzwonił do drzwi!".
W treści mniej więcej powieliliśmy wiadomość tematu, z wyjątkiem tego, że umieściliśmy w niej
{{OccurredAt}} aby pokazać, o której godzinie zostało to uruchomione.
Kliknij "Utwórz akcję". Na następnym ekranie kliknij "Kontynuuj".
Następnie wpisz nazwę apletu. My użyliśmy "Pico W to Gmail".
Super! Nadszedł czas, aby kliknąć "Zakończ".
Konfiguracja IFTTT do wysyłania powiadomień do aplikacji telefonu
IFTTT może również wysyłać powiadomienia do aplikacji za każdym razem, gdy ktoś zadzwoni do drzwi.
Proces ten jest bardzo podobny do procesu powiadomień e-mail.
W części "If This" wybierz "Webhooks" jako usługę i wybierz "Receive a web request". Wpisz nazwę zdarzenia. My użyliśmy "door_bell_rang".
Jeśli chodzi o część "Then That", to tutaj jest inaczej.
Zamiast tego wybierz usługę "Powiadomienia", a następnie "Wyślij powiadomienie z aplikacji IFTTT".
Gdy oba pola "If This" i "Then That" zostaną wypełnione, kliknij "continue". Wpisz tytuł apletu i kliknij przycisk Zakończ.
Znajdowanie poświadczeń IFTTT
Teraz, po skonfigurowaniu apletu If-Then, możesz przejść do znalezienia poświadczeń, aby Pico W mógł połączyć się z IFTTT.
Aby to zrobić:
- Kliknij swoje zdjęcie profilowe w prawym górnym rogu
- Kliknij "Moje usługi"
- Kliknij Webhooks
- Kliknij przycisk Dokumentacja.
Na tej stronie pojawi się kilka informacji, w tym tajny klucz.
Podłączanie Raspberry Pi Pico W do IFTTT
Wszystkie Nasz kod znajduje się teraz na naszym repozytorium Github, który można znaleźć tutaj.
Pobierz kod i rozpakuj go. Skopiuj kod na Raspberry Pi Pico W.
Będziesz musiał zmodyfikować sekrety.py.
Wymiana ssid z identyfikatorem SSID sieci Wi-Fi, a następnie wprowadź hasło w polu pw pole.
Użyj klucza uzyskanego w poprzedniej sekcji i wklej go do pliku ifttt_keywartość.
Kod dzwonka do drzwi
Kod dzwonka do drzwi opiera się na poprzednich samouczkach. W skrócie, oto co robi ten kod:
- Importuje niezbędne pakiety
- Konfiguruje WiFi i łączy się z siecią
Oto kod specyficzny dla dzwonka do drzwi:
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
Jeśli pamiętasz, podłączyliśmy przycisk do GPIO14. Dlatego chcemy utworzyć obiekt, który odczyta wartość tego GPIO.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
Chcemy, aby IFTTT wysyłał powiadomienie tylko wtedy, gdy stan zmieni się z Fałsz do Prawda. Chcemy również uniknąć wysyłania przez IFTTT wielu powiadomień, jeśli przycisk został naciśnięty raz.
Stąd te zabezpieczenia:
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
Problem polega na tym, że po naciśnięciu przycisku można go przytrzymać przez chwilę, nawet tego nie zauważając. Dla Ciebie może się to wydawać jednym naciśnięciem, ale dla Pico W może to być pięć. Chcemy więc uniknąć otrzymywania pięciu powiadomień.
To tutaj last_state oraz current_state wchodzą zmienne.
Po naciśnięciu przycisku, current_state staje się Prawda.
Uruchamia to kod, który łączy się z IFTTT.
Po wykonaniu tej czynności następuje dwusekundowa przerwa dzięki time.sleep(2).
Następnie, last_state staje się Prawda ponieważ przyjmuje wartość current_state.
W związku z tym uniemożliwia to dalszym zarejestrowanym naciśnięciom wyzwalanie większej liczby powiadomień, ponieważ obie zmienne są teraz Prawdaz powodu tej linii:
if last_state == False and current_state == True:
Po przejściu dodatkowych pras, last_state powraca do wartości False i tym samym jest gotowa do odebrania komunikatu Prawda aby ponownie uruchomić połączenie z IFTTT.
Wybierz metodę powiadamiania
Teraz to ty wybierasz swoją ścieżkę.
Jeśli utworzyłeś powiadomienie o wysłaniu wiadomości e-mail, możesz usunąć komentarz w tym wierszu:
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Zakłada to, że wydarzenie zostało nazwane "pico_w_request". W przeciwnym razie zmień tę część adresu URL na nazwę, którą mu nadałeś.
Jeśli chcesz otrzymywać powiadomienia z aplikacji, musisz użyć następnej linii:
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Co dalej?
Dzięki temu prostemu projektowi możesz zajść daleko.
Przycisk może być używany do wyzwalania wielu rzeczy, gdy jesteś zaznajomiony z interakcją z interfejsami API.
Na przykład, można zaprogramować przycisk tak, aby trafiał w interfejs API Spotify w celu zatrzymania muzyki lub pominięcia utworu.
Chcesz być na bieżąco z nowościami i innymi projektami Pico? Kliknij tutaj:
Jak skonfigurowałbyś ten dzwonek do drzwi Pico Wi-Fi, aby odpowiadał Twoim potrzebom?
Pozdrowienia
Chciałem wypróbować kilka projektów RPI Pico W, tj. IFTT send mail i projekt strony internetowej. Napotkałem problem, gdy uruchomiłem przykład IFTT, program micropython szukał modułu "sockets". Nie mogłem znaleźć modułu sockets, aby program działał poprawnie. Czy możesz doradzić, jak poprawnie rozwiązać ten problem?
[...] 参考にしたサイト:Raspberry Pi Pico W Wi-Fi Doorbell tutorial (HTTP requests & IFTTT) [...]
[...] Warto zauważyć, że ten projekt nie różni się zbytnio od naszego samouczka dzwonka do drzwi Pico W, który udostępniliśmy w lipcu ubiegłego roku. [...]
[...] Chcesz uczynić swój dom inteligentniejszym? Raspberry Pi może służyć zarówno jako urządzenie centralne, jak i peryferyjne w automatyzacji wszystkiego. Możesz na przykład przekształcić go w kamerę monitorującą lub system bezpieczeństwa, możesz użyć go jako asystenta głosowego, możesz stworzyć inteligentne lustro lub użyć go do inteligentnego oświetlenia. Możesz nawet użyć go do podlewania roślin, monitorowania ptaków na podwórku lub do inteligentnego dzwonka do drzwi! [...]