Inhaltsverzeichnis:
- Schritt 1: Verbrauchsmaterialien und Anschlüsse
- Schritt 2: PI-Setup
- Schritt 3: Herunterladen und Kompilieren des Codes
- Schritt 4: Verwenden Sie es
- Schritt 5: So funktioniert der Code
- Schritt 6: Anpassung und Anzeigenamen
Video: Alexa Raspberry Pi Relay Controller - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Ich habe dieses Instructable erstellt, um meine Erfahrungen mit der Integration von IOT-Geräten mit Amazons Alexa zu teilen.
Dieses Projekt ermöglicht die Steuerung einer mit einem Himbeer-Pi verbundenen Relaisplatine vom Smarthome-Controller.
Es wurde mit Alexa getestet, scheint aber auch mit Samsung Smartthings und anderen Steuerschnittstellen gut zu funktionieren, da es eine Reihe von Belkin Wemo-Steckdosen emuliert.
Es gibt viele Beispiele, die auf dem ausgezeichneten FAUXMO-Code basieren, aber dies bedeutete, Python zu lernen und gab mir nicht die detaillierte Kontrolle, die ich für meine Geräte brauchte.
Ich wollte auch nicht in die Tiefen des Lambda-Codes auf Amazon.com gehen müssen, also habe ich es wirklich einfach gehalten.
Ich habe die Quelle und Notizen auf Github gepostet:
github.com/Switchdoctorstu/StuPiMo
Das Tutorial soll wirklich behandeln, wie man es zum Laufen bringt und meine Notizen veröffentlicht, falls es anderen hilft.
Schritt 1: Verbrauchsmaterialien und Anschlüsse
Die Dinge, die Sie brauchen, sind bei Amazon / EBay leicht verfügbar:
- Himbeer-PI *
- Pi-Netzteil
- Dupont-Anschlüsse
- Relaisplatine
- Altes Micro-USB-Kabel (zum Halbieren für die Stromversorgung der Relaiskarte)
Jeder Raspberry Pi wird funktionieren, ich habe dies auf einem Model B und Zero getestet.
*Wenn Sie Pi Zero verwenden, benötigen Sie einen OTG-Netzwerkadapter (es sei denn, Sie kaufen die 'W'-Version mit eingebautem WiFi)
Sie müssen den Pi mit dem Netzwerk verbinden.
Verwenden Sie die Dupont-Anschlüsse, um die Relaiskarte mit dem Pi zu verbinden.
Beachten Sie, dass die Relaiskarte eine externe Stromversorgung verwenden sollte (entfernen Sie die Verbindung und schließen Sie sie an externe 5 V an). Es funktioniert mit Strom vom PI, wird aber nicht für den Produktionsbetrieb empfohlen.
Für mein Setup habe ich einen extern betriebenen USB-HUB verwendet. Dies liefert die Leistung an den PI.
Ich habe auch das Ende eines alten USB-Kabels abgeschnitten und die Relais von einer zweiten USB-Verbindung zum Hub mit Strom versorgt, um sicher zu bleiben. Meine 'Produktions'-Version verwendet ein kleines 5V 5A Schaltnetzteil. Wieder schneide ich einfach ein USB-Kabel in zwei Hälften, um den Pi über Micro-USB mit Strom zu versorgen, und schneide zwei der Dupont-Anschlüsse ab, um die Relaisplatine mit Strom zu versorgen. Es gibt 4 Drähte im USB-Kabel, die meisten verwenden rot / schwarz, um die 5-V-Versorgung anzuzeigen, aber im Zweifelsfall verwenden Sie ein Messgerät, um sicherzustellen, dass Sie die richtigen Drähte erhalten.
Die Relaispins auf der Platine sind mit den entsprechenden GPIO-Pins des PI-Headers verbunden.
Der Code ermöglicht es Ihnen, die GPIO-Pins auszuwählen, aber der Standard, den ich verwendet habe, war:
- Relais Pin 1 - Masse
- Relais Pin 2 - Relais 1 - GPIO 0
- Relais Pin 3 - Relais 2 - GPIO 1
- Relais Pin 4 - Relais 3 - GPIO 2
- Relais Pin 5 - Relais 4 - GPIO 3
- Relais Pin 6 - Relais 5 - GPIO 4
- Relais Pin 7 - Relais 6 - GPIO 5
- Relais Pin 8 - Relais 7 - GPIO 6
- Relais Pin 9 - Relais 8 - GPIO 7
- Relais Pin 10 - +5V für Logik
Schritt 2: PI-Setup
Ich werde kein Tutorial erstellen, wie Sie Ihren PI zum Laufen bringen und mit dem Netzwerk verbinden.
Es gibt viele Führer, darunter ein ausgezeichnetes anweisbares bei:
www.instructables.com/id/Ultimate-Raspberr…
Sie müssen sich an den Punkt bringen, an dem der PI im Netzwerk sichtbar ist und Sie eine Verbindung herstellen können.
Dabei spielt es keine Rolle, ob dies über Ethernet oder Wireless erfolgt.
Dieses Projekt kann nur mit dem Raspberry PI mit dem Geany Programmers Editor abgeschlossen werden, aber ich persönlich finde es einfacher, meine Codevorbereitung auf einem PC mit Visual Studio oder Eclipse (oder sogar Notepad ++) durchzuführen und sie dann zum Debuggen mit a auf den PI hochzuladen VNC-Verbindung. Wieder werde ich das hier nicht behandeln, da es viele ausgezeichnete Anleitungen zum Einrichten von VNC auf einem RPi gibt.
Sie müssen lediglich an den Punkt gelangen, an dem Sie den Code hochladen und kompilieren können.
Wichtig ist, dass, da der UPNP-Handler UDP-Multicast erfordert, die verwendeten Schnittstellen auf den 'Promiscuous'-Modus gesetzt werden müssen.
Dies kann in der Befehlszeile erfolgen:
pi@raspberrypi:~ $ ifconfig eth0 promisc
und / oder
pi@raspberrypi:~ $ ifconfig wlan0 promisc
Dies muss dauerhaft gemacht werden, also habe ich die /etc/rc.local. bearbeitet
sudo nano \etc\rc.local
um die Zeile einzuschließen:
sudo ifconfig eth0 promisc
nach dem ersten Satz von # Bannerzeilen, um sicherzustellen, dass die Schnittstellen beim Start festgelegt wurden.
Schritt 3: Herunterladen und Kompilieren des Codes
Der Code selbst befindet sich in meinem Github-Repository;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
während es "richtige" Möglichkeiten gibt, das Repository zu klonen. Ich fand es einfacher, den Geany-Editor auf dem Pi-Desktop zu öffnen und den Code einzufügen.
Ebenso, wenn Sie die Befehlszeile verwenden;
Erstellen Sie ein neues Verzeichnis
mkdir Stu
Wechseln Sie dazu
CD Stu
Erstellen Sie eine neue Textdatei
nano StuPiMo.c
Kopiere den Code aus dem Github Raw und füge ihn in die neue Datei ein
Speichern und schließen.
Sobald Sie die Datei als C-Quellcodeobjekt haben, können Sie sie mit kompilieren
gcc -o StuPiMo StuPiMo.c -l wiringPi
Beachten Sie, dass das "-l wiringPi" benötigt wird, um sicherzustellen, dass der Compiler in der erforderlichen wiringPi-Bibliothek verlinkt.
Der Code kann dann ausgeführt werden mit
./StuPiMo
Auch hier, wenn Sie möchten, dass dies beim Start ausgeführt wird, verwenden Sie den Befehl:
sudo nano /etc/rc.local
um die folgende Zeile hinzuzufügen
sudo /home/pi/Stu/StuPiMo &
in Ihre /etc/rc.local-Datei. Vergessen Sie nicht, Ihre Datei beim Beenden zu speichern.
Beachten Sie, dass das '&' unbedingt erforderlich ist, um sicherzustellen, dass ein Unterprozess gestartet wird, um sicherzustellen, dass das Skript an dieser Stelle nicht blockiert wird.
Schritt 4: Verwenden Sie es
Sobald Sie den Code ausgeführt haben, bitten Sie Alexa, „Geräte zu entdecken“und sie sollte alle 8 virtuellen Wemo-Geräte finden.
Dann heißt es nur noch: „Alexa schalte Buchse 1 ein“oder „Alexa schalte Buchse 6 aus“usw. und das entsprechende Relais wird getauscht.
Schritt 5: So funktioniert der Code
Der Code emuliert eine Reihe von Belkin Wemo-Socket-Geräten.
Um dies zu erreichen, muss es 2 Hauptfunktionen erfüllen
- ein UPNP-Discovery-Broadcast-Handler
- einen „Gerätehandler“(einer pro virtuellem Gerät), um die an das Gerät gesendeten Befehle und die erforderlichen Antworten zu verwalten.
Ein "Bonus"-Feature ist, dass es auch eine Webseite veröffentlicht, um die Steuerung der Geräte zu ermöglichen.
UPNP-Handler
Der UPNP-Handler öffnet einen Socket, um SSDP-Protokollpakete auf Port 1900 239.255.255.250 zu überwachen.
Es antwortet auf alle eingehenden 'M-SEARCH'-Anfragen mit einem Discovery-Antwortpaket, das jedem, der fragt, die einzelnen wemo-Emulatoren mitteilt.
Gerätehandler
Die Gerätehandler (einer pro virtuellem Gerät) überwachen eine Reihe von IP-Ports und antworten auf Anfragen.
Es wird eine setup.xml-Antwort liefern, wenn Sie gefragt werden
Auf Nachfrage wird eine Ereignisbeschreibungsdatei bereitgestellt
Es wird auf eine GETBINARYSTATE-Anfrage antworten
Es verarbeitet und antwortet auf eine SETBINARYSTATE-Anfrage
Webserver
Der Webserver ist eine einfache Routine, die ein HTML-Formular erstellt, das eine Schaltfläche pro Relais enthält.
Es reagiert auf das Drücken der Tasten und schaltet den Status des Relais entsprechend um.
Schritt 6: Anpassung und Anzeigenamen
Ich bin nicht verrückt geworden mit dem Code, um ihn einfach und bearbeitbar zu halten.
Die Grundlagen können durch Definitionen am Anfang des Codes angepasst werden:
// globale Definitionen#define WEBPORT 5353 // Port zum Ausführen des Webservers
#define NUMDEVICES 8 // Anzahl der zu erstellenden virtuellen Geräte
#define PORTBASE 43450 // Basis-IP-Port zum Hochzählen von
WEBPORT ist die Portnummer, auf der der integrierte Webserver läuft. Dies könnte auf 80 eingestellt werden, um die Dinge zu vereinfachen, aber ich fand, dass es mit Tomcat oder anderen lokal ausgeführten Diensten in Konflikt stand.
NUMDEVICES definiert die Anzahl der einzelnen zu startenden WEMO-Emulatoren. Wenn Sie eine 2-Port-Relaiskarte haben, setzen Sie diese auf 2, 4 Port = 4 usw.
Die Anzeigenamen für die Geräte werden in einer Routine namens setup_names festgelegt:
int setup_names(char friendly[NUMDEVICES][NAMELEN]) { int i = 0;
// benutze diese Schleife
für (i = 0; i < NUMDEVICES; i++) {
sprintf(friendly, "Socket %d", i + 1);
}
// oder die folgende manuelle Tabelle zum Auffüllen von Gerätenamen
/*
strcpy(friendly[0], "Schlafzimmer-TV");
strcpy(freundlich[1], "Elektrische Decke");
strcpy(freundlich[2], "Schlafzimmerlampe");
strcpy(freundlich[3], "Socket 4");
strcpy(freundlich[4], "Socket 5");
strcpy(freundlich[5], "Socket 6");
strcpy(freundlich[6], "Socket 7");
strcpy(freundlich[7], "Socket 8");
*/
Rückkehr ich;
}
Ich habe eine Schleife verwendet, um jedes der Geräte 'Socket n' aufzurufen, aber Sie können diese Schleife löschen und stattdessen Ihre eigenen Anzeigenamen hinzufügen (stellen Sie nur sicher, dass Sie dieselbe Nummer wie NUMDEVICES hinzufügen), wenn Sie /* */ löschen
Denken Sie daran, den Code neu zu kompilieren, wenn Sie Änderungen vornehmen.
Empfohlen:
"Alexa, sende mir den Text an _____": 9 Schritte (mit Bildern)
„Alexa, sende mir den Text an _____“: Hören Sie ein Lied, das Sie mitsingen möchten? Normalerweise müsstest du den Namen des Songs in Google eingeben, gefolgt von dem Wort "Lyrics". Sie würden normalerweise auch eine Menge Tippfehler machen, falsch klicken
So erstellen Sie einen Alexa-Skill: 10 Schritte
So erstellen Sie einen Alexa-Skill: Was ist ein Alexa-Skill?Alexa-Skills sind wie Apps. Sie können Skills mit der Alexa-App oder einem Webbrowser auf die gleiche Weise aktivieren und deaktivieren, wie Sie Apps auf Ihrem Smartphone oder Tablet installieren und deinstallieren. Skills sind sprachgesteuerte Alexa-Funktionen
Alexa Skill erstellen (German - English): 10 Schritte
Alexa Skill Erstellen (English | English): Was ist ein Alexa Skill?Alexa ist ein Cloud-basierter Sprachservice, der auf Geräten wie Amazon Echo, Echo Dot, Echo Show oder Echo Spot verfügbar ist. Entwickler can Alexa, Fähigkeiten hinzufügen, also bestimmte Skills mit denen die Nutzer ihr Gerä
Raspbian in Raspberry Pi 3 B ohne HDMI installieren - Erste Schritte mit Raspberry Pi 3B - Einrichten Ihres Raspberry Pi 3: 6 Schritte
Raspbian in Raspberry Pi 3 B ohne HDMI installieren | Erste Schritte mit Raspberry Pi 3B | Einrichten Ihres Raspberry Pi 3: Wie einige von Ihnen wissen, sind Raspberry Pi-Computer ziemlich großartig und Sie können den gesamten Computer nur auf einer einzigen winzigen Platine bekommen. Das Raspberry Pi 3 Model B verfügt über einen Quad-Core 64-Bit ARM Cortex A53 mit 1,2 GHz getaktet. Damit ist der Pi 3 ungefähr 50
IRC (Internet Relay Chat) verwenden: 5 Schritte
So verwenden Sie IRC (Internet Relay Chat): [EDIT] Dies ist ein Instructable, das als Starter für diejenigen gedacht ist, die Internet Relay Chat oder IRC noch nicht verstehen. Dieses Projekt soll nicht den gesamten Umfang des IRC und die Fähigkeiten jedes einzelnen Kunden abdecken, sondern zielt auf den Gewinn