Taula de continguts:
- Pas 1: subministraments i connexions
- Pas 2: Configuració de PI
- Pas 3: descàrrega i compilació del codi
- Pas 4: utilitzar-lo
- Pas 5: Com funciona el codi
- Pas 6: Personalització i noms amigables
Vídeo: Controlador de relés Alexa Raspberry Pi: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Vaig crear aquest Instructable per compartir les meves experiències amb la integració de dispositius IOT amb Alexa d’Amazon.
Aquest projecte permet controlar una placa de relé connectada a un raspberry pi des del controlador smarthome.
S'ha provat amb Alexa, però també sembla que funciona bé amb Samsung Smartthings i altres interfícies de control, ja que emula una sèrie de sòcols Belkin Wemo.
Hi ha MOLTS exemples basats en l’excel·lent codi FAUXMO, però això significava aprendre python i no em donava el control detallat que necessitava per als meus dispositius i, per tant, vaig decidir recrear-ne un de zero utilitzant C com a llenguatge de codificació base.
Tampoc no volia haver d'anar a la profunditat del codi lambda a Amazon.com, així que ho he mantingut molt senzill.
He publicat la font i les notes a Github:
github.com/Switchdoctorstu/StuPiMo
El tutorial tracta realment de com funcionar i publicar les meves notes per si ajuda els altres.
Pas 1: subministraments i connexions
Les coses que necessiteu estan disponibles a Amazon / EBay:
- Raspberry PI *
- Alimentació Pi
- Connectors Dupont
- Taula de relés
- Vell cable micro USB (per tallar a la meitat per alimentar la targeta de relé)
Qualsevol gerd Pi funcionarà, ho he provat en un model B i Zero.
* Si utilitzeu Pi Zero, necessitareu un adaptador de xarxa OTG (tret que compreu la versió "W" amb buit a WiFi)
Haureu de connectar el Pi a la xarxa.
Utilitzeu els connectors dupont per connectar la targeta de relé al Pi.
Tingueu en compte que la targeta de relé hauria d’utilitzar alimentació externa (traieu l’enllaç i connecteu-lo a 5v externs). Funcionarà amb alimentació des del PI, però no s’aconsella que s’executi la producció.
Per a la meva configuració he utilitzat un concentrador USB alimentat externament. Això proporciona energia al PI.
També vaig tallar l'extrem d'un cable USB antic i vaig alimentar els relés d'una segona connexió USB al concentrador per mantenir-me segur. La meva versió de "producció" utilitza una petita font d'alimentació en mode de commutació 5V 5A. Una vegada més, acabo de tallar un cable USB per la meitat per alimentar el Pi mitjançant micro-USB i vaig tallar dos dels connectors dupont per alimentar la placa de relés. Hi ha 4 cables al cable USB, la majoria utilitzen vermell / negre per indicar el subministrament de 5 V, però si teniu dubtes, utilitzeu un comptador per assegurar-vos que obtingueu els cables correctes.
Els pins del relé de la placa estan connectats als pins GPIO corresponents de la capçalera PI.
El codi us permet triar els pins GPIO, però el valor per defecte que he utilitzat era:
- Pin de relé 1: terra
- Pin de relé 2 - relé 1 - GPIO 0
- Pin de relé 3 - relé 2 - GPIO 1
- Pin de relé 4 - relé 3 - GPIO 2
- Pin de relé 5 - relé 4 - GPIO 3
- Pin de relé 6 - relé 5 - GPIO 4
- Pin de relé 7 - relé 6 - GPIO 5
- Pin de relé 8 - relé 7 - GPIO 6
- Pin de relé 9 - relé 8 - GPIO 7
- Pin de relé 10 - + 5v per a la lògica
Pas 2: Configuració de PI
No tornaré a crear un tutorial sobre com posar en marxa el vostre PI i connectar-lo a la xarxa.
Hi ha moltes guies que inclouen una excel·lent instrucció a:
www.instructables.com/id/Ultimate-Raspberr…
Haureu d’arribar al punt on el PI sigui visible a la xarxa i us pugueu connectar.
Tant se val si és via Ethernet o sense fils.
Aquest projecte es pot completar només amb el Raspberry PI mitjançant l’Editor de programadors de Geany, però personalment és més fàcil fer la preparació del meu codi en un PC mitjançant Visual Studio o Eclipse (o fins i tot Notepad ++) i després penjar-lo al PI per depurar-lo amb un Connexió VNC. Una vegada més no vaig a tractar això aquí, ja que hi ha molts instruccions excel·lents sobre la configuració de VNC en un RPi.
Tot el que necessiteu és arribar al punt on podeu penjar i compilar el codi.
Una nota important és que, atès que el controlador UPNP requereix multidifusió UDP, les interfícies utilitzades s'han d'establir al mode "Promiscu".
Això es pot fer a la línia d'ordres:
pi @ raspberrypi: ~ $ ifconfig eth0 promisc
i / o
pi @ raspberrypi: ~ $ ifconfig wlan0 promisc
Cal fer-ho permanent, de manera que he editat el fitxer /etc/rc.local
sudo nano / etc / rc.local
per incloure la línia:
sudo ifconfig eth0 promisc
després del primer conjunt de banderes # línies per assegurar-se que les interfícies es van configurar a l'inici.
Pas 3: descàrrega i compilació del codi
El codi en si es troba al meu repositori de Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
tot i que hi ha maneres "correctes" de clonar el dipòsit. Em va resultar més fàcil obrir l'editor Geany a l'escriptori Pi i enganxar-hi el codi.
De la mateixa manera, si utilitzeu la línia d'ordres;
Creeu un directori nou
mkdir Stu
Canvieu-hi
cd Stu
Feu un fitxer de text nou
nano StuPiMo.c
Copieu el codi en brut de Github i enganxeu-lo al fitxer nou
Guardar i sortir.
Un cop tingueu el fitxer com a objecte de codi font C, podeu compilar-lo mitjançant
gcc -o StuPiMo StuPiMo.c -l cablejatPi
tingueu en compte que es necessita "-l wiringPi" per assegurar-vos que el compilador enllaça a la biblioteca wiringPi necessària.
El codi es pot executar amb
./StuPiMo
Una vegada més, si voleu que això s'executi a l'inici, utilitzeu l'ordre:
sudo nano /etc/rc.local
per afegir la línia següent
sudo / home / pi / Stu / StuPiMo &
al fitxer /etc/rc.local. No oblideu desar el fitxer a la sortida.
Tingueu en compte que el "&" és essencial per assegurar-se que es genera un subprocés per garantir que l'script no estigui bloquejat en aquest moment.
Pas 4: utilitzar-lo
Un cop tingueu el codi en funcionament, demaneu a Alexa que "Descobriu els dispositius" i haurà de trobar els vuit dispositius Wemo virtuals.
Aleshores només es tracta de dir: "Alexa activa el sòcol 1" o "Alexa apaga el sòcol 6", etc., i es canviarà el relé corresponent.
Pas 5: Com funciona el codi
El codi funciona emulant una sèrie de dispositius de sòcol Belkin Wemo.
Per aconseguir-ho, ha de gestionar dues funcions principals
- un controlador d’emissions de descobriment d’UPNP
- un "gestor de dispositius" (un per dispositiu virtual) per gestionar les ordres enviades al dispositiu i les respostes necessàries.
Una característica "addicional" és que també publica una pàgina web per permetre el control dels dispositius.
Gestor UPNP
El controlador UPNP obre un sòcol per controlar els paquets de protocol SSDP al port 1900 239.255.255.250.
Respon a qualsevol consulta "M-SEARCH" amb un paquet de resposta al descobriment que anuncia els emuladors de wemo individuals a qualsevol persona que ho demani.
Gestor de dispositius
Els gestors de dispositius (un per dispositiu virtual) supervisen una sèrie de ports IP i responen a les sol·licituds.
Servirà una resposta setup.xml quan se li demani
Servirà un fitxer de descripció d'esdeveniments quan se li demani
Respondrà a una sol·licitud de GETBINARYSTATE
Processarà i respondrà a una sol·licitud de SETBINARYSTATE
Servidor web
El servidor web és una rutina senzilla que crea un formulari HTML que conté un botó per retransmissió.
Respondrà als botons que es premen i alternarà l'estat del relé en conseqüència.
Pas 6: Personalització i noms amigables
No m’he tornat boig amb el codi perquè sigui senzill i editable.
Els conceptes bàsics es poden personalitzar mitjançant definicions al començament del codi:
// definicions globals # define WEBPORT 5353 // port on executar el servidor web
#define NUMDEVICES 8 // Nombre de dispositius virtuals a crear
#define PORTBASE 43450 // port IP base per incrementar des de
WEBPORT és el número de port en què s’executa el servidor web integrat. Es podria fer que se situés als 80 anys per facilitar les coses, però vaig trobar que entrava en conflicte amb Tomcat o altres serveis que s’executaven localment.
NUMDEVICES defineix el nombre d'emuladors WEMO individuals que cal iniciar. Si teniu una targeta de retransmissió de 2 ports, configureu-la en 2, 4 ports = 4, etc.
Els noms simples dels dispositius es configuren en una rutina anomenada setup_names:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;
// utilitzeu aquest bucle
per a (i = 0; i <NUMDEVICES; i ++) {
sprintf (friendly , "Socket% d", i + 1);
}
// o la següent taula manual per omplir noms de dispositius
/*
strcpy (amable [0], "TV de dormitori");
strcpy (amigable [1], "Manta elèctrica");
strcpy (amigable [2], "Llum de dormitori");
strcpy (friendly [3], "Socket 4");
strcpy (friendly [4], "Socket 5");
strcpy (friendly [5], "Socket 6");
strcpy (friendly [6], "Socket 7");
strcpy (friendly [7], "Socket 8");
*/
tornar i;
}
He utilitzat un bucle per trucar a cadascun dels dispositius "Socket n", però podeu suprimir aquest bucle i afegir els vostres propis noms amistosos (assegureu-vos que afegiu el mateix número que NUMDEVICES) si suprimiu el fitxer / * * /
Recordeu que heu de tornar a compilar el codi si feu algun canvi.
Recomanat:
Domòtica amb Raspberry Pi mitjançant placa de relés: 7 passos
Automatització de la llar amb Raspberry Pi mitjançant la placa de relés: un gran nombre de persones volen una gran comoditat però a preus raonables. Ens fa mandra il·luminar les cases cada vespre quan es pon el sol i al matí següent, tornant a apagar els llums O a encendre / apagar el Aire condicionat / Ventilador / Escalfadors com era
Control de relés amb Raspberry Pi: 3 passos
Control de relés amb Raspberry Pi: la majoria de nosaltres ens hem enfrontat al problema quan la placa raspberry pi no és capaç de canviar entre diversos dispositius simultàniament. Per tant, no és possible connectar diversos dispositius mitjançant els 26 pins GPIO. A més, no es pot estendre més enllà de 26, així que mo
Controlador de jocs DIY basat en Arduino - Controlador de jocs Arduino PS2 - Jugar a Tekken amb el bricolatge Arduino Gamepad: 7 passos
Controlador de jocs DIY basat en Arduino | Controlador de jocs Arduino PS2 | Jugar a Tekken amb el bricolatge Arduino Gamepad: Hola nois, jugar sempre és divertit, però jugar amb el vostre propi controlador de jocs de bricolatge és més divertit
YABC - Un altre controlador Blynk - Controlador de temperatura i humitat al núvol IoT, ESP8266: 4 passos
YABC - Encara un altre controlador Blynk: controlador de temperatura i humitat del núvol IoT, ESP8266: Hola, fabricants, recentment he començat a cultivar bolets a casa, bolets ostres, però ja tinc 3 vegades aquests controladors a casa per al control de temperatura de fermentació per a la meva cervesa, esposa ara també fa això de Kombucha i com a termòstat de calor
NESblinky - Controlador de flaix de controlador de Nintendo: 12 passos (amb imatges)
NESblinky - Nintendo Controller Bike Flasher: vaig veure el missatge "Light Up Your Ride" i vaig reflexionar sobre què es podria tornar a proposar per augmentar la visibilitat de la meva moto, tot esperant que encegés un motorista o dos en un atac de ràbia retro. Vaig passar amb una vella Nintendo trencada