Cuprins:
- Pasul 1: consumabile și conexiuni
- Pasul 2: Configurare PI
- Pasul 3: Descărcarea și compilarea codului
- Pasul 4: Folosirea acestuia
- Pasul 5: Cum funcționează codul
- Pasul 6: Personalizare și nume prietenoase
Video: Controler de releu Alexa Raspberry Pi: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Am creat acest Instructable pentru a împărtăși experiențele mele cu integrarea dispozitivelor IOT cu Alexa Amazon.
Acest proiect permite o placă de releu conectată la un raspberry pi să fie controlată de la controlerul smarthome.
A fost testat cu Alexa, dar pare să funcționeze bine cu Samsung Smartthings și alte interfețe de control, deoarece emulează o serie de prize Belkin Wemo.
Există o mulțime de exemple bazate pe codul FAUXMO excelent, dar acest lucru a însemnat învățarea pythonului și nu mi-a oferit controlul detaliat de care aveam nevoie pentru dispozitivele mele și așa că am decis să recreez unul de la zero folosind C ca limbaj de codare de bază.
De asemenea, nu am vrut să trebuiască să merg la adâncimile codului lambda de pe Amazon.com, așa că l-am păstrat foarte simplu.
Am postat sursa și notele pe Github:
github.com/Switchdoctorstu/StuPiMo
Tutorialul este cu adevărat pentru a acoperi cum să funcționeze și pentru a publica notițele mele în caz că îi ajută pe ceilalți.
Pasul 1: consumabile și conexiuni
Lucrurile de care aveți nevoie sunt disponibile pe Amazon / EBay:
- Raspberry PI *
- Alimentare Pi
- Conectori Dupont
- Placa de releu
- Vechi cablu micro USB (pentru a tăia în jumătate pentru alimentarea cardului de releu)
Orice zmeură Pi va funcționa, am testat acest lucru pe un model B și Zero.
* Dacă utilizați Pi Zero, veți avea nevoie de un adaptor de rețea OTG (cu excepția cazului în care cumpărați versiunea „W” cu buit în WiFi)
Va trebui să conectați Pi la rețea.
Utilizați conectorii dupont pentru a conecta cardul de releu la Pi.
Rețineți că cardul de releu ar trebui să utilizeze alimentare externă (eliminați legătura și conectați-vă la 5v extern). Acesta va funcționa alimentat de la PI, dar nu este recomandat pentru rularea producției.
Pentru configurarea mea am folosit un HUB USB alimentat extern. Aceasta oferă puterea PI.
De asemenea, am tăiat capătul unui cablu USB vechi și am alimentat releele de la a doua conexiune USB la hub pentru a rămâne în siguranță. Versiunea mea de „producție” folosește o mică sursă de alimentare cu modul de comutare 5V 5A. Din nou, doar am tăiat un cablu USB în jumătate pentru a alimenta Pi prin Micro-USB și am tăiat doi dintre conectorii dupont pentru a alimenta placa releu. Există 4 fire în cablul USB, majoritatea folosind roșu / negru pentru a indica sursa de 5V, dar dacă aveți dubii, folosiți un contor pentru a vă asigura că obțineți firele corecte.
Pinii releului de pe placă sunt conectați la pinii GPIO relevanți de pe antetul PI.
Codul vă permite să alegeți pinii GPIO, dar valoarea implicită pe care am folosit-o a fost:
- Releul Pin 1 - Masă
- Releul 2 - Releul 1 - GPIO 0
- Releul Pin 3 - Releul 2 - GPIO 1
- Releul Pin 4 - Releul 3 - GPIO 2
- Releul Pin 5 - Releul 4 - GPIO 3
- Releu Pin 6 - Releu 5 - GPIO 4
- Releu Pin 7 - Releu 6 - GPIO 5
- Releul Pin 8 - Releul 7 - GPIO 6
- Releul Pin 9 - Releul 8 - GPIO 7
- Releu Pin 10 - + 5v pentru logică
Pasul 2: Configurare PI
Nu am de gând să recreez un tutorial despre cum să îți activezi PI-ul și să te conectezi la rețea.
Există multe ghiduri, inclusiv un instructaj excelent la:
www.instructables.com/id/Ultimate-Raspberr…
Va trebui să ajungeți la punctul în care PI este vizibil în rețea și vă puteți conecta la aceasta.
Nu contează dacă acest lucru este prin Ethernet sau fără fir.
Acest proiect poate fi completat doar cu Raspberry PI folosind Geany Programmers Editor, dar personal îmi este mai ușor să-mi pregătesc codul pe un computer folosind Visual Studio sau Eclipse (sau chiar Notepad ++) și apoi să-l încarc pe PI pentru depanare folosind un Conexiune VNC. Din nou, nu voi acoperi acest lucru aici, deoarece există multe instrumente excelente despre configurarea VNC pe un RPi.
Tot ce aveți nevoie este să ajungeți la punctul în care puteți încărca și compila codul.
O notă importantă este că, deoarece gestionarul UPNP necesită UDP multicast, interfețele utilizate trebuie setate la modul „Promiscuous”.
Acest lucru se poate face pe linia de comandă:
pi @ raspberrypi: ~ $ ifconfig eth0 promisc
și / sau
pi @ raspberrypi: ~ $ ifconfig wlan0 promisc
Acest lucru trebuie făcut permanent, așa că am editat /etc/rc.local
sudo nano / etc / rc.local
pentru a include linia:
sudo ifconfig eth0 promisc
după primul set de linii de banner # pentru a vă asigura că interfețele au fost setate la pornire.
Pasul 3: Descărcarea și compilarea codului
Codul în sine se află în repozitorul meu Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
în timp ce există modalități „corecte” de clonare a depozitului. Mi s-a părut mai ușor să deschid editorul Geany pe desktopul Pi și să lipesc codul.
În mod similar, dacă utilizați linia de comandă;
Creați un director nou
mkdir Stu
Schimbați-l
cd Stu
Creați un fișier text nou
nano StuPiMo.c
Copiați codul din Github brut și lipiți-l în noul fișier
Salvează și ieși.
Odată ce aveți fișierul ca obiect cod sursă C, îl puteți compila folosind
gcc -o StuPiMo StuPiMo.c -l cablarePi
rețineți că "-l wiringPi" este necesar pentru a vă asigura că completatorul se leagă în biblioteca wiringPi necesară.
Codul poate fi apoi rulat folosind
./StuPiMo
Din nou, dacă doriți ca aceasta să ruleze la pornire, utilizați comanda:
sudo nano /etc/rc.local
pentru a adăuga următoarea linie
sudo / home / pi / Stu / StuPiMo &
în fișierul dvs. /etc/rc.local. Nu uitați să salvați fișierul la ieșire.
Rețineți că „&” este esențial pentru a vă asigura că apare un subproces pentru a vă asigura că scriptul nu este blocat în acest moment.
Pasul 4: Folosirea acestuia
Odată ce ai rulat codul, cere-i lui Alexa să „Descopere dispozitive” și ea ar trebui să găsească toate cele 8 dispozitive virtuale Wemo.
Apoi este doar un caz de a spune: „Alexa pornește soclul 1” sau „Alexa oprește soclul 6” etc., iar releul relevant va fi schimbat.
Pasul 5: Cum funcționează codul
Codul funcționează prin emularea unei serii de dispozitive socket Belkin Wemo.
Pentru a realiza acest lucru, trebuie să se ocupe de 2 funcții majore
- un manager de difuzare a descoperirilor UPNP
- un „dispozitiv de gestionare” (unul pe dispozitiv virtual) pentru a gestiona comenzile trimise către dispozitiv și răspunsurile necesare.
O caracteristică „bonus” este că publică și o pagină web pentru a permite controlul dispozitivelor.
Handler UPNP
Handler-ul UPNP deschide un soclu pentru a monitoriza pachetele de protocol SSDP pe portul 239.255.255.250 1900.
Răspunde la orice întrebări „M-SEARCH” care vin cu un pachet de răspuns la descoperire care anunță emulatorii individuali de wemo oricui cere.
Handler dispozitiv
Dispozitivele de gestionare a dispozitivelor (câte unul pe dispozitiv virtual) monitorizează o serie de porturi IP și răspund solicitărilor.
Va primi un răspuns setup.xml când vi se va cere
Acesta va furniza un fișier de descriere a evenimentului atunci când vi se solicită
Acesta va răspunde unei solicitări GETBINARYSTATE
Acesta va procesa și răspunde la o cerere SETBINARYSTATE
Server Web
Serverul web este o rutină simplă care creează un formular HTML care conține un buton pe releu.
Acesta va răspunde la apăsarea butoanelor și va comuta starea releului în consecință.
Pasul 6: Personalizare și nume prietenoase
Nu am înnebunit cu codul pentru a-l păstra simplu și modificabil.
Elementele de bază pot fi personalizate prin definiții la începutul codului:
// definiții globale # define WEBPORT 5353 // port pentru a rula serverul web pe
#define NUMDEVICES 8 // Numărul de dispozitive virtuale de creat
#define PORTBASE 43450 // portul IP de bază pentru a crește din
WEBPORT este numărul de port pe care rulează serverul web încorporat. Acest lucru ar putea fi făcut să stea la 80 de ani pentru a ușura lucrurile, dar am constatat că este în conflict cu Tomcat sau alte servicii care rulează local.
NUMDEVICES definește numărul de emulatori WEMO individuali de lansat. Dacă aveți un card de releu cu 2 porturi, setați-l la 2, 4 porturi = 4 etc.
Numele prietenoase pentru dispozitive sunt setate într-o rutină numită setup_names:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;
// folosiți această buclă
pentru (i = 0; i <NUMDEVICES; i ++) {
sprintf (prietenos , "Socket% d", i + 1);
}
// sau următorul tabel manual pentru a completa numele dispozitivelor
/*
strcpy (prietenos [0], "TV dormitor");
strcpy (prietenos [1], „Pătură electrică”);
strcpy (prietenos [2], „Lampă dormitor”);
strcpy (prietenos [3], „soclul 4”);
strcpy (prietenos [4], „soclul 5”);
strcpy (prietenos [5], „soclul 6”);
strcpy (prietenos [6], „soclu 7”);
strcpy (prietenos [7], „soclu 8”);
*/
retur i;
}
Am folosit o buclă pentru a apela fiecare dispozitiv 'Socket n', dar puteți șterge această buclă și puteți adăuga propriile nume prietenoase (asigurați-vă că adăugați același număr ca NUMDEVICES) dacă ștergeți / * * /
Nu uitați să recompilați codul dacă faceți modificări.
Recomandat:
Sistem Alexa Smart Home folosind modulul de releu NodeMCU: 10 pași
Sistem Alexa Smart Home folosind modulul de releu NodeMCU: În acest proiect IoT, am realizat sistemul Alexa Smart Home Automation folosind NodeMCU ESP8266 & Modulul de releu. Puteți controla cu ușurință lumina, ventilatorul și alte aparate de uz casnic cu comanda vocală. Pentru a conecta difuzorul inteligent Echo Dot la
Comutator de releu IOT controlat vocal bazat pe Arduino (Google Home și Alexa acceptate): 11 pași
Comutator de releu IOT controlat prin voce bazat pe Arduino (Google Home și Alexa acceptate): Acest proiect descrie cum se realizează un comutator de releu IOT bazat pe Arduino, controlat vocal. Acesta este un releu pe care îl puteți activa și dezactiva de la distanță folosind o aplicație pentru iOS și Android, precum și conectarea la IFTTT și controlarea cu vocea dvs. utilizând Goog
Automatizare la domiciliu cu Raspberry Pi folosind placa de releu: 7 pași
Automatizare la domiciliu cu Raspberry Pi folosind placa de releu: un număr important de oameni doresc un confort deosebit, dar la prețuri rezonabile. Ne simțim leneși să aprindem casele în fiecare seară, când soarele apune și dimineața următoare, stingând din nou luminile Sau să pornim / oprim aparatul de aer condiționat / ventilatorul / încălzitoarele așa cum a fost
Controler de joc DIY bazat pe Arduino - Controler de joc Arduino PS2 - Jucând Tekken cu DIY Arduino Gamepad: 7 pași
Controler de joc DIY bazat pe Arduino | Controler de joc Arduino PS2 | Jucând Tekken cu DIY Arduino Gamepad: Bună, băieți, jocul este întotdeauna distractiv, dar jocul cu propriul controler personalizat DIY este mai distractiv
YABC - încă un controler Blynk - controler de temperatură și umiditate în cloud IoT, ESP8266: 4 pași
YABC - încă un alt controler Blynk - controler de temperatură și umiditate în cloud IoT, ESP8266: Bună ziua, producători, am început recent să cultiv ciuperci acasă, ciuperci de stridii, dar am deja 3x din aceste controlere acasă pentru controlul temperaturii fermentatorului pentru berea mea de acasă, soție face, de asemenea, acest lucru Kombucha acum și ca termostat pentru căldură