Spisu treści:
- Krok 1: Materiały eksploatacyjne i połączenia
- Krok 2: Konfiguracja PI
- Krok 3: Pobieranie i kompilowanie kodu
- Krok 4: Korzystanie z niego
- Krok 5: Jak działa kod
- Krok 6: Dostosowanie i przyjazne nazwy
Wideo: Kontroler przekaźnika Alexa Raspberry Pi: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Stworzyłem tę instrukcję, aby podzielić się moimi doświadczeniami z integracją urządzeń IOT z Alexą Amazona.
Ten projekt umożliwia sterowanie płytką przekaźnikową podłączoną do Raspberry Pi ze sterownika smarthome.
Został przetestowany z Alexą, ale wydaje się również działać dobrze z Samsung Smartthings i innymi interfejsami sterującymi, ponieważ emuluje serię gniazd Belkin Wemo.
Istnieje WIELE przykładów opartych na doskonałym kodzie FAUXMO, ale oznaczało to naukę Pythona i nie dawało mi szczegółowej kontroli, której potrzebowałem dla moich urządzeń, dlatego postanowiłem odtworzyć go od zera, używając C jako podstawowego języka kodowania.
Nie chciałem też zagłębiać się w głębiny kodu lambda na Amazon.com, więc zachowałem to naprawdę prosto.
Zamieściłem źródło i notatki na Github:
github.com/Switchdoctorstu/StuPiMo
Samouczek ma na celu omówienie tego, jak go uruchomić i opublikować moje notatki, jeśli pomoże to innym.
Krok 1: Materiały eksploatacyjne i połączenia
Rzeczy, których potrzebujesz, są łatwo dostępne na Amazon / EBay:
- Malina PI *
- Zasilanie pi
- Złącza dupontowe
- Tablica przekaźnikowa
- Stary przewód micro USB (przeciąć na pół w celu zasilania karty przekaźnika)
Każda raspberry Pi będzie działać, przetestowałem to na Modelu B i Zero.
*Jeśli korzystasz z Pi Zero, potrzebujesz karty sieciowej OTG (chyba że kupisz wersję „W” z wbudowanym WiFi)
Musisz podłączyć Pi do sieci.
Użyj złączy dupontowych, aby podłączyć kartę przekaźnikową do Pi.
Zwróć uwagę, że karta przekaźnikowa powinna korzystać z zewnętrznego zasilania (usuń łącze i podłącz do zewnętrznego 5V). Będzie działał zasilany z PI, ale nie jest zalecany do uruchomienia produkcyjnego.
Do mojej konfiguracji użyłem koncentratora USB zasilanego zewnętrznie. Zapewnia to zasilanie PI.
Odciąłem też koniec starego kabla USB i zasilałem przekaźniki z drugiego połączenia USB do koncentratora, aby zachować bezpieczeństwo. Moja wersja „produkcyjna” korzysta z małego zasilacza impulsowego 5V 5A. Ponownie przeciąłem przewód USB na pół, aby zasilić Pi przez Micro-USB i odciąłem dwa złącza dupontowe, aby zasilić płytkę przekaźnikową. W przewodzie USB są 4 przewody, większość używa czerwonego/czarnego do oznaczenia zasilania 5 V, ale w razie wątpliwości użyj miernika, aby upewnić się, że masz prawidłowe przewody.
Piny przekaźnika na płycie są podłączone do odpowiednich pinów GPIO na nagłówku PI.
Kod pozwala wybrać piny GPIO, ale domyślnie użyłem:
- Przekaźnik Pin 1 - Uziemienie
- Przekaźnik Pin 2 - Przekaźnik 1 - GPIO 0
- Przekaźnik Pin 3 - Przekaźnik 2 - GPIO 1
- Przekaźnik Pin 4 - Przekaźnik 3 - GPIO 2
- Przekaźnik Pin 5 - Przekaźnik 4 - GPIO 3
- Przekaźnik Pin 6 - Przekaźnik 5 - GPIO 4
- Przekaźnik Pin 7 - Przekaźnik 6 - GPIO 5
- Przekaźnik Pin 8 - Przekaźnik 7 - GPIO 6
- Przekaźnik Pin 9 - Przekaźnik 8 - GPIO 7
- Przekaźnik Pin 10 - + 5 v dla logiki
Krok 2: Konfiguracja PI
Nie zamierzam ponownie tworzyć samouczka o tym, jak uruchomić i uruchomić PI i podłączyć do sieci.
Istnieje wiele przewodników, w tym doskonały instruktaż pod adresem:
www.instructables.com/id/Ultimate-Raspberr…
Musisz dotrzeć do punktu, w którym PI jest widoczny w sieci i możesz się z nim połączyć.
Nie ma znaczenia, czy odbywa się to przez Ethernet, czy bezprzewodowo.
Ten projekt można ukończyć tylko za pomocą Raspberry PI za pomocą edytora programistów Geany, ale osobiście uważam, że łatwiej jest przygotować mój kod na komputerze za pomocą Visual Studio lub Eclipse (lub nawet Notepad ++), a następnie przesłać go do PI w celu debugowania za pomocą Połączenie VNC. Znowu nie zamierzam tego tutaj omawiać, ponieważ istnieje wiele doskonałych instrukcji dotyczących konfigurowania VNC na RPi.
Wszystko, czego potrzebujesz, to dojść do punktu, w którym możesz przesłać i skompilować kod.
Ważną informacją jest to, że ponieważ program obsługi UPNP wymaga multiemisji UDP, używane interfejsy muszą być ustawione w trybie „Promiscuous”.
Można to zrobić w wierszu poleceń:
pi@raspberrypi:~ $ ifconfig eth0 promisc
i / lub
pi@raspberrypi:~ $ ifconfig wlan0 promisc
Musi to być stałe, więc edytowałem /etc/rc.local
sudo nano \etc\rc.local
dołączyć linię:
sudo ifconfig eth0 promisc
po pierwszym zestawie linii banera #, aby upewnić się, że interfejsy zostały ustawione podczas uruchamiania.
Krok 3: Pobieranie i kompilowanie kodu
Sam kod znajduje się w moim repozytorium Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
podczas gdy istnieją „poprawne” sposoby klonowania repozytorium. Uznałem, że łatwiej jest po prostu otworzyć edytor Geany na pulpicie Pi i wkleić kod.
Podobnie, jeśli używasz wiersza poleceń;
Utwórz nowy katalog
mkdir Stu
Zmień na to
CD Stu
Utwórz nowy plik tekstowy
nano StuPiMo.c
Skopiuj kod z surowego Github i wklej go do nowego pliku
Zapisz i wyjdź.
Gdy już masz plik jako obiekt kodu źródłowego C, możesz go skompilować za pomocą
gcc -o StuPiMo StuPiMo.c -l okablowaniePi
Zwróć uwagę, że "-l wirePi" jest potrzebne, aby upewnić się, że kompilator łączy się z wymaganą biblioteką wirePi.
Kod można następnie uruchomić za pomocą
./StuPiMo
Ponownie, jeśli chcesz, aby to działało podczas uruchamiania, użyj polecenia:
sudo nano /etc/rc.local
aby dodać następującą linię
sudo /home/pi/Stu/StuPiMo &
do twojego pliku /etc/rc.local. Nie zapomnij zapisać pliku przy wyjściu.
Zwróć uwagę, że „&” jest niezbędny, aby upewnić się, że proces podrzędny jest odradzany, aby upewnić się, że skrypt nie jest w tym momencie zablokowany.
Krok 4: Korzystanie z niego
Po uruchomieniu kodu poproś aleksę o „Odkryj urządzenia”, a powinna znaleźć wszystkie 8 wirtualnych urządzeń Wemo.
Wtedy wystarczy powiedzieć: "Alexa włącz gniazdo 1" lub "Alexa wyłącz gniazdo 6" itd. i odpowiedni przekaźnik zostanie zmieniony.
Krok 5: Jak działa kod
Kod działa poprzez emulację serii urządzeń gniazdowych Belkin Wemo.
Aby to osiągnąć, musi obsługiwać 2 główne funkcje
- moduł obsługi emisji wykrywania UPNP
- „obsługa urządzenia” (jeden na urządzenie wirtualne) do zarządzania poleceniami wysyłanymi do urządzenia i wymaganymi odpowiedziami.
Cechą „bonusową” jest to, że publikuje również stronę internetową, aby umożliwić kontrolę urządzeń.
Obsługa UPNP
Program obsługi UPNP otwiera gniazdo w celu monitorowania pakietów protokołu SSDP na porcie 239.255.255.250 1900.
Odpowiada na wszelkie przychodzące zapytania „M-SEARCH” z pakietem odpowiedzi wykrywania, który informuje o poszczególnych emulatorach wemo każdemu, kto o to poprosi.
Program obsługi urządzenia
Programy obsługi urządzeń (jeden na urządzenie wirtualne) monitorują szereg portów IP i odpowiadają na żądania.
Gdy zostaniesz o to poproszony, wyświetli odpowiedź setup.xml
Gdy zostaniesz o to poproszony, wyświetli plik opisu zdarzenia
Odpowie na żądanie GETBINARYSTATE
Przetworzy i odpowie na żądanie SETBINARYSTATE
Serwer internetowy
Serwer WWW to prosta procedura, która buduje formularz HTML zawierający przycisk na przekaźnik.
Będzie reagował na naciskane przyciski i odpowiednio przełączał stan przekaźnika.
Krok 6: Dostosowanie i przyjazne nazwy
Nie zwariowałem z kodem, aby był prosty i edytowalny.
Podstawy można dostosować za pomocą definicji na początku kodu:
// globalne definicje#define WEBPORT 5353 // port do uruchomienia serwera WWW
#define NUMDEVICES 8 // Liczba urządzeń wirtualnych do utworzenia
#define PORTBASE 43450 // bazowy port IP do zwiększenia z
WEBPORT to numer portu, na którym działa wbudowany serwer sieciowy. Można to ustawić na 80, aby było łatwo, ale okazało się, że jest to sprzeczne z tomcat lub innymi usługami działającymi lokalnie.
NUMDEVICES określa liczbę pojedynczych emulatorów WEMO do uruchomienia. Jeśli masz 2-portową kartę przekaźnikową, ustaw ją na 2, 4 porty = 4 itd.
Przyjazne nazwy urządzeń są ustawiane w procedurze o nazwie setup_names:
int setup_names(char friendly[NUMDEVICES][NAMELEN]) { int i = 0;
// użyj tej pętli
for (i = 0; i < LICZBA URZĄDZEŃ; i++) {
sprintf(friendly, "Gniazdo %d", i + 1);
}
// lub poniższa tabela ręczna, aby wypełnić nazwy urządzeń
/*
strcpy(friendly[0], "Telewizor w sypialni");
strcpy(friendly[1], "Koc elektryczny");
strcpy(przyjazny[2], "Lampa do sypialni");
strcpy(przyjazne[3], "Gniazdo 4");
strcpy(przyjazne[4], "Gniazdo 5");
strcpy(przyjazne[5], "Gniazdo 6");
strcpy(przyjazne[6], "Gniazdo 7");
strcpy(przyjazne[7], "Gniazdo 8");
*/
powrót ja;
}
Użyłem pętli do wywołania każdego urządzenia „Socket n”, ale możesz usunąć tę pętlę i zamiast tego dodać własne przyjazne nazwy (tylko upewnij się, że dodajesz ten sam numer co NUMDEVICES), jeśli usuniesz /* */
Pamiętaj, aby ponownie skompilować kod, jeśli dokonasz jakichkolwiek zmian.
Zalecana:
Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: 10 kroków
Alexa Smart Home System przy użyciu modułu przekaźnika NodeMCU: W tym projekcie IoT stworzyłem system Alexa Smart Home Automation przy użyciu NodeMCU ESP8266 & Moduł przekaźnikowy. Możesz łatwo sterować oświetleniem, wentylatorem i innymi urządzeniami gospodarstwa domowego za pomocą polecenia głosowego. Aby połączyć inteligentny głośnik Echo Dot z
Automatyka domowa na podczerwień za pomocą przekaźnika: 6 kroków (ze zdjęciami)
Automatyka domowa na podczerwień za pomocą przekaźnika: system zdalnej automatyki domowej na podczerwień (ostrzeżenie: replikuj projekt na własne ryzyko! Ten projekt obejmuje wysokie napięcie)
Jak zrobić automatyzację domu opartą na IoT za pomocą przekaźnika sterującego czujnikami NodeMCU: 14 kroków (ze zdjęciami)
Jak zrobić automatykę domową opartą na IoT za pomocą przekaźnika sterującego czujnikami NodeMCU: W tym projekcie opartym na IoT stworzyłem automatykę domową za pomocą modułu przekaźnika sterującego Blynk i NodeMCU z informacją zwrotną w czasie rzeczywistym. W trybie ręcznym tym modułem przekaźnikowym można sterować z telefonu komórkowego lub smartfona i przełącznika ręcznego. W trybie automatycznym ten inteligentny
Jak sterować urządzeniem za pomocą Raspberry Pi i przekaźnika - PODSTAWY: 6 kroków
Jak sterować urządzeniem za pomocą Raspberry Pi i przekaźnika - PODSTAWY: Jest to prosty i prosty samouczek dotyczący sterowania urządzeniem za pomocą Raspberry Pi i przekaźnika, pomocny w tworzeniu projektów IoT Ten samouczek jest dla początkujących, jest przyjazny dla postępuj zgodnie z instrukcjami, nawet jeśli nie masz żadnej wiedzy na temat korzystania z Raspberry
Kontroler gier DIY oparty na Arduino - Kontroler gier Arduino PS2 - Granie w Tekken z DIY Arduino Gamepad: 7 kroków
Kontroler gier DIY oparty na Arduino | Kontroler gier Arduino PS2 | Granie w Tekken z DIY Arduino Gamepad: Witajcie, granie w gry jest zawsze zabawne, ale granie z własnym niestandardowym kontrolerem do gier jest przyjemniejsze. Dlatego stworzymy kontroler do gier za pomocą arduino pro micro w tej instrukcji