INHOUDSOPGAWE:
- Stap 1: Benodighede en verbindings
- Stap 2: PI -opstelling
- Stap 3: Laai die kode af en stel dit op
- Stap 4: Gebruik dit
- Stap 5: Hoe die kode werk
- Stap 6: Aanpassing en vriendelike name
Video: Alexa Raspberry Pi Relay Controller: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Ek het hierdie Instructable geskep om my ervarings met die integrasie van IOT -toestelle met Amazon se Alexa te deel.
Met hierdie projek kan 'n aflosbord wat aan 'n framboospi gekoppel is, beheer word vanaf die smarthome -beheerder.
Dit is met Alexa getoets, maar dit lyk ook asof dit goed werk met Samsung Smartthings en ander bedieningsinterfaces, aangesien dit 'n reeks Belkin Wemo -voetstukke naboots.
Daar is BAIE voorbeelde wat gebaseer is op die uitstekende FAUXMO-kode, maar dit beteken om python te leer en gee my nie die gedetailleerde beheer wat ek nodig het vir my toestelle nie, en daarom het ek besluit om een van nuuts af te skep met C as my basiese koderingstaal.
Ek wou ook nie na die dieptes van lambda -kode op Amazon.com gaan nie, so ek het dit eenvoudig gehou.
Ek het die bron en notas op Github geplaas:
github.com/Switchdoctorstu/StuPiMo
Die tutoriaal gaan eintlik oor hoe om dit te laat werk en om my notas te publiseer as dit ander help.
Stap 1: Benodighede en verbindings
Die dinge wat u benodig, is maklik beskikbaar op Amazon / eBay:
- Framboos PI *
- Pi kragbron
- Dupont -verbindings
- Relay Board
- Ou mikro -USB -kabel (om in die helfte te sny vir krag vir die relaiskaart)
Enige framboos Pi sal werk, ek het dit op 'n Model B en Zero getoets.
*As u Pi Zero gebruik, benodig u 'n OTG -netwerkadapter (tensy u die 'W' -weergawe met buit in WiFi koop)
U moet die Pi aan die netwerk koppel.
Gebruik die dupont -konnetors om die relaiskaart aan die Pi te koppel.
Let daarop dat die relaiskaart eksterne krag moet gebruik (verwyder die skakel en koppel aan eksterne 5v). Dit werk op die PI, maar word nie aanbeveel vir produksie nie.
Vir my opstelling gebruik ek 'n ekstern aangedrewe USB HUB. Dit bied die PI krag.
Ek het ook die einde van 'n ou USB -kabel gesny en die relais van 'n 2de USB -verbinding na die hub gevoer om veilig te bly. My 'produksie' -weergawe gebruik 'n klein 5V 5A skakelaar -kragbron. Ek sny weer 'n USB-kabel in die helfte om die Pi via mikro-USB aan te dryf en sny twee van die dupont-aansluitings af om die relaisbord aan te dryf. Daar is 4 drade in die USB -kabel, die meeste gebruik rooi/swart om die 5V -toevoer aan te dui, maar as u twyfel, gebruik 'n meter om seker te maak dat u die korrekte drade kry.
Die aflospenne op die bord is gekoppel aan die relevante GPIO -penne op die PI -kop.
Met die kode kan u die GPIO -penne kies, maar die standaard wat ek gebruik het, was:
- Relay Pin 1 - Grond
- Relay Pin 2 - Relay 1 - GPIO 0
- Relay Pin 3 - Relay 2 - GPIO 1
- Relay Pin 4 - Relay 3 - GPIO 2
- Relay Pin 5 - Relay 4 - GPIO 3
- Relay Pin 6 - Relay 5 - GPIO 4
- Relay Pin 7 - Relay 6 - GPIO 5
- Relay Pin 8 - Relay 7 - GPIO 6
- Relay Pin 9 - Relay 8 - GPIO 7
- Relay Pin 10 - +5v vir logika
Stap 2: PI -opstelling
Ek gaan nie weer 'n handleiding skep oor hoe u u PI aan die gang kan kry en aan die netwerk kan koppel nie.
Daar is baie gidse, waaronder 'n uitstekende instruksie by:
www.instructables.com/id/Ultimate-Raspberr…
U moet uself bereik tot die punt waar die PI op die netwerk sigbaar is en u kan daaraan koppel.
Dit maak nie saak of dit via Ethernet of draadloos is nie.
Hierdie projek kan voltooi word met slegs die Raspberry PI met behulp van die Geany Programmers Editor, maar ek vind dit persoonlik makliker om my kodevoorbereiding op 'n rekenaar te doen met Visual Studio of Eclipse (of selfs Notepad ++) en dit dan op te laai na die PI vir ontfouting met 'n VNC -verbinding. Weereens gaan ek dit nie hier bespreek nie, want daar is baie uitstekende instruksies oor die opstel van VNC op 'n RPi.
Al wat u nodig het, is om die punt te bereik waar u die kode kan oplaai en saamstel.
'N Belangrike opmerking is dat aangesien die UPNP -hanteerder UDP -multicast benodig, die gebruikte koppelvlakke in die' Promiscuous' -modus gestel moet word.
Dit kan op die opdragreël gedoen word:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
en / of
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Dit moet permanent gemaak word, so ek het die /etc/rc.local geredigeer
sudo nano / etc / rc.local
om die reël in te sluit:
sudo ifconfig eth0 promisc
na die eerste stel banner # -reëls om te verseker dat die koppelvlakke ingestel is by die aanvang.
Stap 3: Laai die kode af en stel dit op
Die kode self sit in my Github -repsitorium;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
terwyl daar 'korrekte' maniere is om die bewaarplek te kloon. Ek het dit makliker gevind om die Geany -redakteur op die Pi -lessenaar oop te maak en die kode in te plak.
Net so, as u die opdragreël gebruik;
Skep 'n nuwe gids
mkdir Stu
Verander dit
cd Stu
Maak 'n nuwe tekslêer
nano StuPiMo.c
Kopieer die kode van die Github raw en plak dit in die nuwe lêer
Stoor en verlaat.
Sodra u die lêer as 'n C -bronkode -voorwerp het, kan u dit saamstel met behulp van
gcc -o StuPiMo StuPiMo.c -l bedradingPi
let op die "-l wiringPi" is nodig om te verseker dat die kompliseerder in die vereiste wiringPi-biblioteek skakel.
Die kode kan dan met behulp van
./StuPiMo
Weereens, as u wil hê dat dit tydens die opstart moet begin, gebruik die opdrag:
sudo nano /etc/rc.local
om die volgende reël by te voeg
sudo/home/pi/Stu/StuPiMo &
na u /etc/rc.local lêer. Moenie vergeet om u lêer by die uitgang te stoor nie.
Let op die '&' is noodsaaklik om te verseker dat 'n subproses ontstaan om te verseker dat die script nie op hierdie stadium geblokkeer word nie.
Stap 4: Gebruik dit
Sodra u die kode aan die gang het, vra alexa 'Ontdek toestelle' en sy moet al 8 die virtuele Wemo -toestelle vind.
Dan is dit net 'n geval om te sê: "Alexa skakel aansluiting 1 aan" of "Alexa skakel aansluiting 6" ens uit, en die relevante aflos sal verander word.
Stap 5: Hoe die kode werk
Die kode werk deur 'n reeks Belkin Wemo -sokapparate na te boots.
Om dit te bereik, moet dit twee hooffunksies hanteer
- 'n UPNP -ontdekkingsuitsending hanteerder
- 'n 'apparaat hanteerder' (een per virtuele toestel) om die opdragte wat na die toestel gestuur is, te bestuur en die nodige antwoorde.
'N' Bonus' -kenmerk is dat dit ook 'n webbladsy publiseer om toestelle te beheer.
UPNP -verwerker
Die UPNP -hanteerder maak 'n sok oop om SSDP -protokolpakkies op 239.255.255.250 poort 1900 te monitor.
Dit reageer op enige 'M-SEARCH'-navrae wat kom met 'n ontdekkingsreaksie-pakket wat die individuele wemo-emulators aankondig vir almal wat dit vra.
Toestelhanteerder
Die apparaathanteerders (een per virtuele toestel) monitor 'n reeks IP -poorte en reageer op versoeke.
Dit sal 'n setup.xml -antwoord gee wanneer dit gevra word
Dit sal 'n gebeurtenisbeskrywingslêer bedien wanneer dit gevra word
Dit sal reageer op 'n GETBINARYSTATE -versoek
Dit sal 'n SETBINARYSTATE -versoek verwerk en daarop reageer
Webbediener
Die webbediener is 'n eenvoudige roetine wat 'n HTML -vorm bou wat 'n knoppie per aflos bevat.
Dit sal reageer op die knoppies wat gedruk word en die toestand van die aflos dienooreenkomstig verander.
Stap 6: Aanpassing en vriendelike name
Ek is nie mal oor die kode om dit eenvoudig en redigeerbaar te hou nie.
Die basiese beginsels kan aangepas word deur definisies aan die begin van die kode:
// globale definisies#definieer WEBPORT 5353 // poort waarop die webbediener uitgevoer kan word
#define NUMDEVICES 8 // Aantal virtuele toestelle om te skep
#define PORTBASE 43450 // basis IP -poort om van te verhoog
WEBPORT is die poortnommer waarop die ingeboude webbediener werk. Dit kan op 80 sit om dinge makliker te maak, maar ek het gevind dat dit in stryd is met tomcat of ander dienste wat plaaslik uitgevoer word.
NUMDEVICES definieer die aantal individuele WEMO -emulators wat begin moet word. As u 'n relaiskaart met 2 poort het, stel dit dan op 2, 4 poort = 4, ens.
Die vriendelike name vir die toestelle word opgestel in 'n roetine met die naam setup_names:
int setup_names (char vriendelik [NUMDEVICES] [NAMELEN]) {int i = 0;
// gebruik hierdie lus
vir (i = 0; i <NUMDEVICES; i ++) {
sprintf (vriendelik , "Socket %d", i + 1);
}
// of die volgende handleidingstabel om toestelname te vul
/*
strcpy (vriendelik [0], "Slaapkamer -TV");
strcpy (vriendelik [1], "Elektriese kombers");
strcpy (vriendelik [2], "Slaapkamerlamp");
strcpy (vriendelik [3], "Socket 4");
strcpy (vriendelik [4], "Socket 5");
strcpy (vriendelik [5], "Socket 6");
strcpy (vriendelik [6], "Socket 7");
strcpy (vriendelik [7], "Socket 8");
*/
terugkeer i;
}
Ek het 'n lus gebruik om elk van die toestelle 'Socket n' te noem, maar u kan hierdie lus verwyder en u eie vriendelike name byvoeg (maak seker dat u dieselfde nommer as NUMDEVICES byvoeg) as u die / * * /
Onthou om die kode weer saam te stel as u veranderings aanbring.
Aanbeveel:
I2C Relay Met Arduino IDE: 5 stappe
I2C Relay Met Arduino IDE: Ek bestel 'n lekker relayboard, maar daar was geen ArduinoIDE -instruksie nie, net Raspberry Pi e.o. Ek vind uit hoe ek dit met Arduino kan gebruik en wil dit deel, sodat u die tyd kan bespaar. Oorspronklike RaspberryPi -voorbeeld: wiki.52pi.com/index.php/DockerPi_4_Channel_R
Alexa IoT TV-Controller ESP8266: 10 stappe (met foto's)
Alexa IoT TV-Controller ESP8266: Onlangs het ek 'n Amazon Echo Dot gekoop tydens die Amazon Prime-dag vir ongeveer 20 €. Hierdie klein stemassistente is goedkoop en ideaal vir DIY Home Automation as u weet wat moontlik is en hoe om slim toestelle te bou. Ek het 'n Samsung Smart TV, maar ek wou
DIY - Relay Module: 8 stappe
DIY - Relay Module: Relay modules wat in die mark beskikbaar is, word saam met onbeperkte nuttelose komponente gebundel. As u die behoefte het om 'n eenvoudige
Raspberry Pi DIY Relay Board: 3 stappe (met foto's)
Raspberry Pi DIY Relay Board: Vir sommige projekte met framboos en die kleiner arduino's moet ek 'n paar aflos skakel. As gevolg van die GPIO -uitgangsniveau (3,3V), is dit moeilik om relais te vind wat groter vragte kan skakel en direk kan werk met die gegewe 3,3 volt
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 stappe (met foto's)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Ek het ryan97128 heeltemal afgesny op sy ontwerp vir Nintendo Controller MP3, weergawe 2.0 en ek hoor dat hy die idee gekry het van die alwyse Morte_Moya, so ek kan nie krediet daarvoor neem nie almal van hulle genie. Ek wou net die gemak byvoeg en herlaai