Indholdsfortegnelse:
- Trin 1: Forbrugsvarer og forbindelser
- Trin 2: PI -opsætning
- Trin 3: Download og kompilering af koden
- Trin 4: Brug det
- Trin 5: Sådan fungerer koden
- Trin 6: Tilpasning og venlige navne
Video: Alexa Raspberry Pi Relay Controller: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Jeg skabte denne Instructable for at dele mine oplevelser med at integrere IOT -enheder med Amazons Alexa.
Dette projekt gør det muligt at styre et relækort, der er forbundet til en hindbær pi, fra smarthome controller.
Det er blevet testet med Alexa, men ser også ud til at fungere fint med Samsung Smartthings og andre kontrolgrænseflader, da det efterligner en række Belkin Wemo -stik.
Der er Masser af eksempler baseret på den fremragende FAUXMO-kode, men det betød, at jeg lærte python og gav mig ikke den detaljerede kontrol, jeg havde brug for til mine enheder, og derfor besluttede jeg mig for at genskabe en fra bunden ved hjælp af C som mit basiskodningssprog.
Jeg ønskede heller ikke at skulle gå til dybden af lambda -kode på Amazon.com, så jeg har holdt det virkelig simpelt.
Jeg har postet kilden og noterne på Github:
github.com/Switchdoctorstu/StuPiMo
Tutorialen er virkelig til at dække hvordan man får det til at fungere og til at offentliggøre mine noter, hvis det hjælper andre.
Trin 1: Forbrugsvarer og forbindelser
De ting, du har brug for, er let tilgængelige på Amazon / EBay:
- Hindbær PI *
- Pi strømforsyning
- Dupont -stik
- Stafetavle
- Gammelt mikro -USB -kabel (skæres i halve for strøm til relækortet)
Enhver hindbær Pi vil fungere, jeg har testet dette på en Model B og Zero.
*Hvis du bruger Pi Zero, skal du bruge en OTG -netværksadapter (medmindre du køber 'W' -versionen med buit i WiFi)
Du skal forbinde Pi til netværket.
Brug dupont -konnektorerne til at slutte relækortet til Pi.
Bemærk, at relækortet skal bruge ekstern strøm (fjern linket og tilslut til ekstern 5v). Det fungerer fra PI'en, men det anbefales ikke til produktionskørsel.
Til min opsætning brugte jeg en eksternt drevet USB HUB. Dette giver strøm til PI.
Jeg skar også enden af et gammelt USB -kabel og drev relæerne fra en 2. USB -forbindelse til hubben for at være sikker. Min 'produktion' version bruger en lille 5V 5A switch mode strømforsyning. Igen skar jeg bare en USB-ledning i halve for at drive Pi via Micro-USB og skære to af dupont-stikene ned for at drive relækortet. Der er 4 ledninger i USB -kablet, de fleste bruger rød/sort til at betegne 5v -forsyningen, men hvis du er i tvivl, skal du bruge en måler for at sikre, at du får de korrekte ledninger.
Relæstifterne på kortet er forbundet med de relevante GPIO -ben på PI -headeren.
Koden giver dig mulighed for at vælge GPIO -benene, men den standard, jeg brugte, var:
- Relæ Pin 1 - Jord
- Relæ Pin 2 - Relæ 1 - GPIO 0
- Relæ Pin 3 - Relæ 2 - GPIO 1
- Relæstift 4 - Relæ 3 - GPIO 2
- Relæ Pin 5 - Relæ 4 - GPIO 3
- Relæstift 6 - Relæ 5 - GPIO 4
- Relæstift 7 - Relæ 6 - GPIO 5
- Relæstift 8 - Relæ 7 - GPIO 6
- Relæstift 9 - Relæ 8 - GPIO 7
- Relæ Pin 10 - +5v til logik
Trin 2: PI -opsætning
Jeg vil ikke genskabe en tutorial om, hvordan du får din PI til at køre og er forbundet til netværket.
Der er mange guider, herunder en fremragende instruerbar på:
www.instructables.com/id/Ultimate-Raspberr…
Du skal komme til det punkt, hvor PI'en er synlig på netværket, og du kan oprette forbindelse til det.
Det er ligegyldigt om dette er via Ethernet eller Trådløs.
Dette projekt kan afsluttes med bare Raspberry PI ved hjælp af Geany Programmers Editor, men jeg synes personligt, at det er lettere at forberede min kode på en pc ved hjælp af Visual Studio eller Eclipse (eller endda Notepad ++) og derefter uploade det til PI'en til fejlfinding ved hjælp af en VNC -forbindelse. Igen vil jeg ikke dække det her, da der er mange fremragende instruktioner om opsætning af VNC på en RPi.
Alt du behøver er at komme til det punkt, hvor du kan uploade og kompilere koden.
En bemærkning, der er vigtig, er, at da UPNP -håndtereren kræver UDP -multicast, skal de anvendte grænseflader indstilles til 'Promiskuøs' tilstand.
Dette kan gøres på kommandolinjen:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
og / eller
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Dette skal gøres permanent, så jeg redigerede /etc/rc.local
sudo nano / etc / rc.local
at inkludere linjen:
sudo ifconfig eth0 promisc
efter det første sæt banner # linjer for at sikre, at grænsefladerne blev sat ved opstart.
Trin 3: Download og kompilering af koden
Selve koden sidder i mit Github repsoitory;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
mens der er 'korrekte' måder at klone depotet på. jeg fandt det lettere bare at åbne Geany -editoren på Pi -skrivebordet og indsætte koden.
På samme måde, hvis du bruger kommandolinjen;
Opret et nyt bibliotek
mkdir Stu
Skift til det
cd Stu
Opret en ny tekstfil
nano StuPiMo.c
Kopiér koden fra Github raw og indsæt den i den nye fil
Gem og luk.
Når du har filen som et C -kildekodeobjekt, kan du kompilere den ved hjælp af
gcc -o StuPiMo StuPiMo.c -l wiringPi
Bemærk, at "-l wiringPi" er nødvendig for at sikre, at komplimeren linker i det nødvendige wiringPi-bibliotek.
Koden kan derefter køres vha
./StuPiMo
Igen, hvis du vil have dette til at køre ved opstart, skal du bruge kommandoen:
sudo nano /etc/rc.local
for at tilføje følgende linje
sudo/home/pi/Stu/StuPiMo &
til din /etc/rc.local -fil. Glem ikke at gemme din fil ved afslutning.
Bemærk, at '&' er afgørende for at sikre, at en underproces er affødt for at sikre, at scriptet ikke blokeres på dette tidspunkt.
Trin 4: Brug det
Når du har koden kørende, skal du bede alexa om 'Discover Devices', og hun skal finde alle 8 af de virtuelle Wemo -enheder.
Så er det bare et tilfælde at sige: "Alexa tænd stik 1" eller "Alexa sluk stik 6" osv., Og det relevante relæ ændres.
Trin 5: Sådan fungerer koden
Koden fungerer ved at efterligne en række Belkin Wemo -sokkelenheder.
For at opnå dette skal den håndtere 2 hovedfunktioner
- en UPNP discovery broadcast -handler
- en 'enhedsbehandler' (en pr. virtuel enhed) til at styre de kommandoer, der sendes til enheden, og de nødvendige svar.
En 'bonus' -funktion er, at den også udgiver en webside for at tillade kontrol af enhederne.
UPNP Handler
UPNP -handler åbner en sokkel til overvågning af SSDP -protokolpakker på 239.255.255.250 port 1900.
Den reagerer på enhver 'M-SEARCH' forespørgsel, der kommer med en opdagelsesresponspakke, der annoncerer de enkelte wemo-emulatorer til alle, der spørger.
Enhedshåndterer
Enhedshåndtererne (en pr. Virtuel enhed) overvåger en række IP -porte og reagerer på anmodninger.
Det tjener et setup.xml -svar, når du bliver spurgt
Det vil vise en begivenhedsbeskrivelsesfil, når du bliver spurgt
Det vil besvare en GETBINARYSTATE -anmodning
Det behandler og reagerer på en anmodning fra SETBINARYSTATE
Webserver
Webserveren er en enkel rutine, der bygger en HTML -formular, der indeholder en knap pr. Relæ.
Den reagerer på, at der trykkes på knapperne og skifter relæets tilstand i overensstemmelse hermed.
Trin 6: Tilpasning og venlige navne
Jeg er ikke blevet gal med koden for at holde den enkel og redigerbar.
Det grundlæggende kan tilpasses efter definitioner i starten af koden:
// globale definitioner#definere WEBPORT 5353 // port til at køre webserveren på
#define NUMDEVICES 8 // Antal virtuelle enheder, der skal oprettes
#define PORTBASE 43450 // base IP -port til stigning fra
WEBPORT er det portnummer, som den indbyggede webserver kører på. Dette kunne gøres til at sidde på 80 for at gøre tingene lette, men jeg fandt ud af, at det var i konflikt med tomcat eller andre tjenester, der kører lokalt.
NUMDEVICES definerer antallet af individuelle WEMO -emulatorer, der skal startes. Hvis du har et 2 -port relækort, skal du indstille dette til 2, 4 port = 4 osv.
De venlige navne til enhederne er angivet i en rutine kaldet setup_names:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;
// brug denne loop
for (i = 0; i <NUMDEVICES; i ++) {
sprintf (venlig , "Socket %d", i + 1);
}
// eller den følgende manuelle tabel for at udfylde enhedsnavne
/*
strcpy (venlig [0], "Soveværelse TV");
strcpy (venlig [1], "elektrisk tæppe");
strcpy (venlig [2], "Soveværelseslampe");
strcpy (venlig [3], "Socket 4");
strcpy (venlig [4], "Socket 5");
strcpy (venlig [5], "Socket 6");
strcpy (venlig [6], "Socket 7");
strcpy (venlig [7], "Socket 8");
*/
returnere i;
}
Jeg brugte en loop til at kalde hver af enhederne 'Socket n', men du kan slette denne loop og tilføje dine egne venlige navne i stedet (bare sørg for at tilføje det samme nummer som NUMDEVICES), hvis du sletter / * * /
Husk at kompilere koden igen, hvis du foretager ændringer.
Anbefalede:
Alexa IoT TV-controller ESP8266: 10 trin (med billeder)
Alexa IoT TV-Controller ESP8266: For nylig købte jeg en Amazon Echo Dot under Amazon Prime-dagen for ~ 20 €. Disse små stemmeassistenter er billige og gode til DIY Home Automation, hvis du ved, hvad der er muligt, og hvordan du bygger smarte enheder. Jeg har et Samsung Smart TV, men jeg ville
Lora Arduino Control Relay Modul Circuit: 12 trin
Lora Arduino Control Relay Modul Circuit: I dette Lora -projekt vil vi se, hvordan man styrer højspændingsenheder med LoRa Arduino relay control circuit. I dette Arduino Lora projekt vil vi bruge Reyax RYLR896 Lora modul, Arduino og 12v relæmodul til at styre 5 husholdningsapparater med
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: 4 trin
YABC - Endnu en Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: Hej Makers, jeg begyndte for nylig at dyrke svampe derhjemme, østers svampe, men jeg har allerede 3x af denne controllere derhjemme til fermenteringstemperaturkontrol til mit hjemmebrygg, kone gør også denne Kombucha -ting nu og som termostat til varme
Raspberry Pi DIY Relay Board: 3 trin (med billeder)
Raspberry Pi DIY Relay Board: For nogle projekter med hindbær og de mindre arduinoer skal jeg skifte nogle relæer. På grund af GPIO -udgangsniveauet (3,3V) er det svært at finde nogle relæer, der er i stand til at skifte større belastninger og kan fungere direkte med de givne 3,3 volt.Så jeg
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 trin (med billeder)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Jeg rippede helt ryan97128 af hans design til Nintendo Controller MP3, version 2.0, og jeg hører, at han fik ideen fra den kloge Morte_Moya, så jeg kan ikke tage æren for alt deres geni. Jeg ville bare tilføje bekvemmeligheden og genoplade