Inhaltsverzeichnis:
- Schritt 1: Laden Sie ein Pi mit Rasbian Stretch
- Schritt 2: Aktualisieren und Hinzufügen von Funktionen zu Node-Red
- Schritt 3: Mosquitto MQTT-Installation
- Schritt 4: Einrichten der roten Knotenschnittstelle
- Schritt 5: Einrichten des Arduino-Systems für die Neuprogrammierung von Sonoff-Geräten
- Schritt 6: Neuprogrammierung eines Sonoff-Schalters
- Schritt 7: Sicherheit
- Schritt 8: Erste Schritte für die Erweiterung
- Schritt 9: Nachtrag - Laden von Raspbian Stretch Lite
Video: Leistungsstarkes eigenständiges Hausautomationssystem - Pi, Sonoff, ESP8266 und Node-Red - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Diese Anleitung sollte Sie zur ersten Basis führen, an der Sie ein Licht oder ein Gerät über jedes Gerät ein- und ausschalten können, das sich mit Ihrem lokalen Netzwerk verbinden kann, und mit einer großartigen anpassbaren Weboberfläche. Die Möglichkeiten zur Erweiterung/Ergänzung von Funktionen sind groß, darunter das Versenden von E-Mails, Twitter-Nachrichten, das Auslesen von Sensoren (z. B. Temperatur). Sie können ganz einfach Regeln festlegen, z. B. – Wenn die Temperatur um 23:00 Uhr unter 15 °C liegt, schalten Sie die Heizdecke für 30 Minuten ein. Das System verwendet das MQTT-Protokoll mit TCP, das erheblich zuverlässiger ist als UDP - das überraschenderweise von einigen kommerziellen Heimautomatisierungsgeräten verwendet wird. Sobald die hier beschriebene harte Arbeit des Einrichtens des Systems erledigt ist, kann der Spaß beginnen. Node Red bietet eine fantastische Benutzeroberfläche, die intuitiv, schnell und einfach einzurichten ist und erstaunliche Fähigkeiten bietet.
Das Ergebnis ist ein leistungsstarkes Hausautomationssystem, das vollständig unter eigener Kontrolle ist und sich vollständig in einem lokalen Netzwerk befindet. Viele der auf Instructables gezeigten Systeme arbeiten mit Cloud-basierten Servern und stellen daher ein Sicherheitsrisiko dar und können ein Abonnement erfordern. Diese sind einfacher einzurichten, bergen jedoch ein höheres Sicherheitsrisiko und möglicherweise höhere Kosten. Ich sollte hinzufügen, dass man ein VPN (virtuelles privates Netzwerk) zum Pi einrichten kann, um eine sichere Verbindung zum Heimnetzwerk / -system zu ermöglichen, wenn ein Zugriff von außen nützlich wäre (Google Pi OpenVPN für Anweisungen).
Dieses System erfordert die Neuprogrammierung von Sonoff-Geräten mit einem großartigen Open-Source-System namens Sonoff-Tasmoda. Dies kann mit einem speziellen Arduino-Setup und einem USB-Seriell-Konverter erfolgen. Die Sonoff-Geräte verwenden den ESP8266-Wi-Fi-Chip, sodass Sie auch Ihre eigenen Geräte mit ESP8266-Modulen herstellen oder an andere Gegenstände anbringen können, um eine drahtlose Konnektivität bereitzustellen.
Die größte Aufgabe besteht darin, einen Raspberry Pi als Hub einzurichten. Dieser führt den MQTT-Broker (oder Server) aus, der die Kommunikation mit den angeschlossenen Geräten verwaltet. Auf dem Pi läuft auch ein System namens Node-Red, das Nachrichten und Daten abfangen und Befehle ausgeben kann – etwa wann die Heizdecke eingeschaltet werden soll. Node-Red bietet auch eine Schnittstelle, um die Webseite zu bedienen, auf der Sie sich über Smartphone/Tablet/PC/Laptop anmelden können, um zu sehen, was los ist, und um das manuelle Schalten von Lichtern usw. zu ermöglichen.
Mein Ziel mit diesem instructable ist es, jeden Schritt so detailliert zu geben, dass ein Anfänger das System zum Laufen bringen kann.
Die Schritte sind:
- Laden Sie einen Pi mit Rasbian Stretch
- Aktualisieren und fügen Sie Node-Red Funktionen hinzu
- Installieren Sie den Mosquitto MQTT-Broker
- Richten Sie die Arduino-Umgebung zum Hochladen der Sonoff-Tasmota-Firmware ein
- Einen Sonoff-Schalter neu programmieren
- Einrichten der Node-Red-Schnittstelle
- Testen Sie es funktioniert alles.
Hardware, die Sie benötigen:
- Raspberry Pi und Netzteil (und Tastatur und Monitor für die Ersteinrichtung) (hier wird Modell B verwendet)
- Sonoff-Schalter
- USB-Seriell-Konverter
- Optional – ESP-Entwicklungsboard wie die NodeMCU.
Meine Erfahrung mit dem Raspberry Pi ist, dass das Einrichten von allem mit erheblich mehr Schmerzen verbunden zu sein scheint, als man es sich jemals vorstellen kann, wenn Dinge nicht funktionieren oder bei einem trivialen Schritt stecken bleiben, bei dem die Erklärung hätte besser sein können. Die Foren bekommen nicht immer Ratschläge, die funktionieren! Ich habe mehrere Routen gefunden, die aus dem einen oder anderen Grund einfach nicht funktionierten. Das kostet 3 Tage! Ich habe dann alles gelöscht und neu angefangen und in weniger als einem (langen) Tag fertig. Dieser verwendete jedoch die ältere Raspian Jessie. Danach habe ich einen Weg gefunden, die aktuelle und kürzlich veröffentlichte Version (Stretch) zu verwenden und habe alles noch einmal gemacht. Diese Anleitung ermöglicht das Kopieren und Einfügen von Anweisungen in den Pi. Sie sollten also in ein paar Stunden fertig sein. Wie auch immer, ich hoffe, das bringt Sie schneller und mit viel weniger Schmerzen auf die Lernkurve. Glauben Sie mir, es lohnt sich für das Endergebnis.
Schritt 1: Laden Sie ein Pi mit Rasbian Stretch
Dies sollte ziemlich einfach sein. Beginnen Sie mit einer 8-GB- oder 16-GB-SD-Karte. Laden Sie die neueste Version herunter von:
www.raspberrypi.org/downloads/
Der Hauptthread hier geht davon aus, dass die Vollversion geladen ist. Sie können jedoch die Lite-Version verwenden, um Platz zu sparen. Wenn Sie Raspbian Stretch Lite verwenden, fahren Sie mit diesem Schritt fort und fahren Sie dann mit Schritt 9 am Ende fort.
Beim Entpacken der heruntergeladenen Datei wird ein Ordner mit der.img-Datei angezeigt. 7Zip wird für Windows (und The Unarchiver Mac) empfohlen. Das Image muss auf die SD-Karte gebrannt werden – allerdings muss ein spezielles Programm verwendet werden, da das Dateisystem nicht mit Windows kompatibel ist. Die empfohlene Software heißt Etcher und kann heruntergeladen werden von:
etcher.io/
Die Anleitung für Etcher steht auf deren Website und könnte kaum einfacher sein. Wählen Sie das Image und das Laufwerk aus und klicken Sie auf Flash.
Jetzt mit unserer geflashten SD-Karte mit kann der Pi zum Laufen gebracht werden.
Wenn Sie die IP-Adresse kennen, die Ihr Pi verwendet, oder diese gerne finden, indem Sie sich bei Ihrem Router anmelden, können Sie die Notwendigkeit von Tastatur und Monitor vermeiden und sofort SSH verwenden. Fügen Sie einfach eine leere Datei namens SSH zur SD-Karte hinzu, legen Sie sie ein, verbinden Sie sie mit dem Ethernet und schalten Sie sie ein. Ansonsten folgen Sie der Anleitung unten.
Verbinden Sie den Pi mit Internet, Bildschirm, Maus und Tastatur und verbinden Sie ihn mit der Stromversorgung. Das erste, was wir tun werden, ist SSH zu aktivieren, damit wir den Großteil der Einrichtung bequem von einem PC aus durchführen können. Es kann natürlich direkt gemacht werden, aber es hilft sehr, dieser Anleitung auf demselben Gerät folgen zu können, auf dem der Pi fährt, und für die meisten Anweisungen Kopieren und Einfügen zu verwenden. Auch in meinem Fall ist mein PC-Arbeitsplatz schön und komfortabel, aber auch nicht groß genug für einen Pi.
Es gibt eine Anleitung für einen guten Teil der Arbeit an einem YouTube-Video. Hier habe ich angefangen. Sie können das Video parallel dazu ausführen, indem Sie diese Anweisungen befolgen. Als ich den Prozess jedoch beim Schreiben noch einmal durchging, fand ich es einfacher, den Anweisungen hier zu folgen. Es gibt einige erhebliche Abweichungen. Es gibt auch einige Abschnitte, in denen ich empfohlen habe, dem Video zu folgen, anstatt die Schritte hier aufzulisten. Ich würde jedoch empfehlen, es sich anzusehen, um MQTT, Node-Red und den breiten Einrichtungsprozess zu verstehen. Das Video ist 38 Minuten lang, also mach es dir bequem. Das Video beginnt damit, dass es zeigt, was Node Red kann, und behandelt dann die Installation und Einrichtung von Pi, gefolgt vom Upgrade von Node Red und der Installation von Mosquitto. Wichtige Zeitangaben, falls Sie zu einem Abschnitt zurückkehren möchten:
00:00 Einführung in das Video
03:00 Node Red Demonstration
14:14 Dashboard-Elemente in Node Red importieren
21:05 Pi Ersteinrichtung, einschließlich SSH
23:35 Installation des Node Red-Unterstützungscodes
27:00 Einführung in MQTT
29:12 Mosquitto (MQTT) Installation (Hinweis funktioniert nur für Raspian Jessie)
33:00 Knoten Rot Beispiele
Ich werde die Befehle in fetter Kursivschrift auflisten (anstatt "") zu verwenden. Diese Formatierung wird ignoriert, wenn Sie sie kopieren und in das Pi einfügen.
Die Einführung in Node Red gibt Ihnen eine Vorstellung davon, was das System kann und gibt ein Bild davon, wo wir landen werden.
Das YouTube-Video ist unter:
Folgen Sie dem Installationsvorgang von 21:05 bis 23:35 Uhr. Beachten Sie, dass der Standard-Login user: pi und das Passwort: raspberry ist. Suchen Sie vor dem Neustart die IP-Adresse des pi. Klicken Sie entweder auf das „Pfeil nach oben+unten“-Symbol in der Desktop-Top-Leiste oder geben Sie die folgende Anweisung im Terminal/Terminal-Fenster ein:
sudo ifconfig-Adresse
Dann notieren Sie sich die IP-Adresse nach: inet addr:. Es hat die Form 192.168.x.y
Notieren Sie sich diese Adresse und starten Sie neu (geben Sie ein: sudo shutdown –r now)
Der Schlüssel an dieser Stelle ist, dass SSH aktiviert wurde und man von einem PC aus eine Verbindung zum Pi herstellen kann (Mac und Linux enthalten SSH-Schnittstellen). Ein gutes Programm dafür ist ein kostenloser Download namens PuTTY, der auch als serielle Schnittstelle verwendet werden kann und Telnet beherrscht. Spachtelmasse ist erhältlich bei:
www.chiark.greenend.org.uk/~sgtatham/putty…
Laden Sie PuTTY herunter und installieren Sie es.
Starten Sie nun nach dem Neustart des Pi PuTTY und geben Sie die zuvor notierte IP-Adresse ein. Siehe Beispiel unten:
Klicken Sie nun auf Öffnen
Nach Login als: pi. eingeben
Geben Sie dann Ihr Passwort ein.
Folgen Sie nun den Anweisungen hier und starten Sie das Video optional ab 23:35 Uhr. Sie können in den meisten Fällen kopieren und einfügen. Markieren Sie den Text und verwenden Sie Strg+C zum Kopieren. Klicken Sie dann mit der rechten Maustaste in PuTTY, um es einzufügen. Manchmal wird der Text nicht sofort angezeigt, also warten Sie ein paar Sekunden. Wenn Sie zweimal eingeben, verwenden Sie die Rücktaste, um den zweiten Eintrag zu löschen. Drücken Sie die Eingabetaste, um jede Anweisung auszuführen.
sudo raspi-update
Ich habe einen Befehl nicht gefunden und habe diesen und die folgende Anweisung zum Herunterfahren / Neustarten ignoriert:
sudo shutdown -r jetzt
sudo apt-get -y update
sudo apt-get -y upgrade
Das dauert eine Weile…..
sudo apt-get autoremove
sudo apt-get -y update
sudo shutdown -r jetzt
An diesem Punkt haben wir das Pi-Betriebssystem geladen und aktualisiert, bereit für den nächsten Schritt.
Schritt 2: Aktualisieren und Hinzufügen von Funktionen zu Node-Red
Die PuTTY-Verbindung ist durch den Neustart am Ende des vorherigen Schrittes verloren gegangen. Schließen Sie also PuTTY und nachdem Sie auf das Booten des Pi gewartet haben, melden Sie sich wie zuvor wieder an.
Ich bin zu einer einfacheren und zuverlässigeren Methode zum Laden von Node-Red übergegangen – nach dem Ansatz unter https://nodered.org/docs/hardware/raspberrypi. Dies verwendet ein Skript und installiert oder aktualisiert Node-Red – der Ansatz ist also der gleiche, der von der Voll- oder Lite-Version von Raspbian Stretch aus funktioniert. Geben Sie also ein:
bash <(curl -sL
Geben Sie Y ein, wenn Sie dazu aufgefordert werden (zweimal). Dieses Skript lädt auch Dateien, die zum Aktivieren des Autostarts von Node-Red benötigt werden.
An dieser Stelle haben wir unser Pi geladen und aktualisiert und mit den für Node Red benötigten Updates. Es schadet nicht, vor der nächsten Stufe einen Neustart zu machen.
sudo shutdown -r jetzt
Schritt 3: Mosquitto MQTT-Installation
Wenn Sie dies noch nicht getan haben, lohnt es sich, sich ab 27:00 Uhr die Video-Einführung in MQTT im Video anzusehen.
Hier müssen wir einen anderen Weg einschlagen. Das im Video beschriebene Verfahren funktioniert nur für die ältere Jessie-Version von Raspian. Es gibt eine Diskussion auf der Mückenseite, aber kein klares Ergebnis gezeigt und daher wird an einem einfacheren und sichereren Weg festgehalten.
Melden Sie sich also mit PuTTY an und geben Sie Folgendes ein:
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
Ja
sudo /etc/init.d/mosquitto stop
sudo /etc/init.d/mosquitto start
Die letzten beiden Anweisungen stoppen und starten mosquitto und zeigen, dass unser MQTT-Broker funktioniert.
Öffnen Sie für einen schnellen Test zwei weitere PuTTY-Sitzungen und melden Sie sich jeweils an.
Sie wissen inzwischen, dass MQTT auf dem Gerät funktioniert, das Daten benötigt, die ein 'Thema' abonnieren. Der Broker sendet alle Daten mit dem gleichen 'Thema'. Dann veröffentlicht das Gerät, das Daten/Anweisungen senden möchte, diese an den Broker unter Verwendung desselben 'Themas'.
Geben Sie in einer PuTTY-Sitzung Folgendes ein:
mosquitto_sub -d -t hallo/world
Dies ist eine Anweisung zum Abonnieren des Themas: hallo/world.
Im anderen geben Sie ein:
mosquitto_pub -d -t hallo/world -m "Hallo aus Terminalfenster 2!"
Dies ist eine Veröffentlichungsanweisung mit demselben Thema mit einer Nachricht. Der Text: „Hallo aus Terminalfenster 2!“sollte nun im anderen Terminal erscheinen.
Gut gemacht, so weit gekommen zu sein. Wir haben jetzt den Pi geladen und mit den für Node-Red benötigten Updates aktualisiert und mit dem Moskito-MQTT-Broker installiert und getestet. Von nun an wird das Leben einfacher und macht mehr Spaß. Schließen Sie die beiden PuTTY-Sitzungen, die für den MQTT-Test verwendet wurden.
Schritt 4: Einrichten der roten Knotenschnittstelle
Zuerst müssen wir Node Red starten. Geben Sie die Anweisung ein:
node-red-pi --max-old-space-size=256
Warten Sie, bis es ausgeführt wird und Sie den Text "Gestartete Flows" sehen.
Öffnen Sie nun einen Browser, verwenden Sie Chrome und geben Sie die zuvor notierte pi-IP-Adresse ein, gefolgt von: 1880, dh etwa 192.168.0.8:1880
Sie sollten jetzt die Node Red-Programmierseite wie folgt sehen:
Sie können jetzt den Node Red-Beispielen ab 33:00 Uhr folgen oder direkt mit einem kleinen zusätzlichen Setup fortfahren und den ersten Flow laden, der den Link zu MQTT anzeigt und bereit ist, unseren Switch zu steuern.
Die zusätzliche Einrichtung, die erforderlich ist, besteht darin, die Dashboard-Elemente hinzuzufügen, die eine Webschnittstelle aktivieren.
Diese werden im Video um 14:14 Uhr gezeigt.
Folgen Sie den Anweisungen zum Laden von node-red-dashboard.
Jetzt können wir ein wenig spielen und zeigen, wie MQTT funktioniert und von Node-Red angetrieben wird. Dies ist nicht auf dem Video, aber der Schlüssel zu diesem Projekt. Sie können entweder meinen Anweisungen folgen und/oder die Flows aus der angehängten Datei NRtest1.txt importieren.
Fügen Sie zunächst einen Input-Inject-Knoten und einen Output-Mqtt-Knoten hinzu und verknüpfen Sie sie miteinander.
Doppelklicken Sie auf den Injektionsknoten (der anfänglich als Zeitstempel bezeichnet ist). Verwenden Sie im Abschnitt Payload den Twiddly, um zu String zu wechseln und geben Sie ein: Hello from me. Lassen Sie das Thema leer, da wir dies in den MQTT-Knoten eingeben können. Klicken Sie auf Fertig
Doppelklicken Sie nun auf den MQTT-Knoten. Klicken Sie auf das Stiftsymbol rechts neben dem Abschnitt Server. Dies öffnet einen neuen Dialog. Geben Sie im Abschnitt Server Folgendes ein: localhost. Klicken Sie auf Hinzufügen. Geben Sie nun wieder im Knoten Edit mqtt out unser Thema im Abschnitt Thema ein: hello/world. QoS auf 1 setzen. Klicken Sie auf Fertig. Klicken Sie nun auf Bereitstellen. Sie sollten unter dem mqtt-Knoten einen grünen Blob und "connected" sehen.
Fügen Sie nun zwei weitere Knoten hinzu – input mqtt und output debug, und verbinden Sie diese miteinander. Doppelklicken Sie nun auf den Eingabeknoten mqtt und geben Sie hello/world in den Themenbereich ein. Der Server sollte bereits localhost:1883 anzeigen. QoS auf 1 setzen. Klicken Sie auf Fertig. Klicken Sie dann auf Bereitstellen, und klicken Sie im rechten Bereich auf die Registerkarte Debug. Klicken Sie nun auf das graue Quadrat links neben dem Injektionsknoten „Hallo von mir“. Dadurch wird die Text-Payload mit dem Thema hello/world an den MQTT-Broker gesendet. Der Broker weiß, dass der mqtt-Eingabeknoten dasselbe Thema abonniert hat, und leitet die Nutzdaten weiter. Der mqtt-Eingabeknoten sendet dies dann an den Debug-Tab (RHS) und der Text 'Hallo von mir' sollte erscheinen.
Dies ist ein weiteres Kästchen, da Node Red mit unserem MQTT-Broker spricht. Beachten Sie, dass Node Red nur ein Client für den Broker ist – wie die Sonoff-Geräte, die wir später verbinden werden. Es ermöglicht jedoch eine ausgeklügelte Automatisierung und bietet eine großartige Benutzeroberfläche.
Jetzt können wir ein paar kleine Änderungen vornehmen und die Flows für unseren Sonoff-Schalter einrichten.
Löschen Sie also den Input-Inject-Knoten (klicken Sie zum Markieren und drücken Sie die Löschtaste). Fügen Sie nun einen Schalter aus dem Dashboard-Bereich hinzu und verbinden Sie ihn mit dem mqtt-Ausgang. Doppelklicken Sie auf den Schalter. Klicken Sie auf den Bleistift rechts neben Gruppe. Geben Sie in Name ein: Licht. Klicken Sie dann auf den Bleistift rechts neben der Registerkarte und geben Sie in den Bereich Name ein: Lounge. Klicken Sie erneut auf Hinzufügen/Aktualisieren und erneut auf Hinzufügen/Aktualisieren. Stellen Sie nun, zurück im Edit Switch Node, die On- und Off-Payloads ein. Verwenden Sie die Twidlys, um die Zeichenfolge auszuwählen, und geben Sie ON für die On-Nutzlast und OFF für die OFF-Nutzlast ein. Klicken Sie auf Fertig
Gehen Sie nun zu jedem der mqtt-Knoten und ändern Sie das Thema in cmnd/sonoff/POWER. Überprüfen Sie beim Kopieren und Einfügen, dass am Ende kein Leerzeichen eingefügt wurde. Dies ist ein anderes Thema und wird mit dem Sonoff nicht funktionieren. Die Suche nach einem verirrten Platz kann eine Stunde oder so dauern – glauben Sie mir! Ich ging auch zum Dashboard>Theme und wählte: Dunkel. Klicken Sie auf Bereitstellen und wählen Sie die Registerkarte Debug.
Öffnen Sie nun eine neue Browsersitzung in einem neuen Fenster und vergrößern Sie diese wie ein Mobiltelefon über der Node Red-Sitzung. Geben Sie die Adresse ein: Ihre Pi-IP-Adresse:1880/ui/#/0, also etwa 192.168.0.8:1880/ui/#/0. Sie sollten einen Bildschirm mit Lounge und Light sehen und wechseln. Klicken Sie auf den Schalter ein und dann aus. Das Debug-Fenster sollte die ON- und OFF-Nutzlasten anzeigen. Wenn Sie möchten, melden Sie sich jetzt auch über ein Handy an. Beachten Sie, dass die Schalterstellung synchronisiert ist. Es spielt keine Rolle, dass unser Sonoff noch nicht verbunden ist. Wenn dies der Fall ist, wird es durch das Abonnieren des Themas die Nachricht/Nutzlast aufnehmen und darauf reagieren.
Ein letzter kleiner Schritt besteht darin, Node Red automatisch starten zu lassen, nachdem der Pi hochgefahren ist.
Node Red hat eine Anleitung unter:
Die benötigten Dateien sind jedoch bereits geladen, sodass keine Installation erforderlich ist.
Um Node-RED dann bei jedem Booten und bei Abstürzen automatisch laufen zu lassen, geben Sie ein (öffnen Sie die PuTTY-Sitzung):
sudo systemctl enable nodered.service
Wenn Sie dies jemals deaktivieren müssen, geben Sie Folgendes ein:
sudo systemctl deaktivieren nodered.service
Fahren Sie nun den Pi mit sudo shutdown now herunter und entfernen Sie die Stromversorgung.
Damit ist unser Pi nun gesperrt und einsatzbereit geladen. Wir haben unseren PC/Mobiltelefon mit Node Red verbunden und dieses kommuniziert mit unserem MQTT-Server. Das war ein langer Weg und einen großen Klaps auf die Schulter wert. Gut erledigt. Ich fand das nächste Arduino-Bit viel einfacher!
Schritt 5: Einrichten des Arduino-Systems für die Neuprogrammierung von Sonoff-Geräten
Alle Informationen dazu finden Sie auf dem Sonoff-Tasmota GitHub. Der einzige Teil, mit dem ich Schwierigkeiten hatte, war der Thementext – aber ich habe Sie listigerweise schon dazu gebracht, diesen einzugeben!
Gehe zu
Sie finden die Setup-Anweisungen auf der Registerkarte Wiki im Abschnitt Upload-Tools:
Anstatt jeden Schritt durchzugehen, notiere ich nur die wichtigsten Aspekte, die ich für wichtig halte oder an denen ich hängengeblieben bin.
Die Anleitung ist gut, braucht aber viel Liebe zum Detail. Ich war gestolpert, weil ein ESP8266-Ordner in einem Ordner erforderlich war, der sich in einem anderen Ordner namens ESP8266 befand und daher zwei Ebenen verpasste.
Ich folgte der Empfehlung für ein völlig separates Arduino-Setup. Ich habe einen neuen Ordner namens ‚ArduinoSonoff‘erstellt, der von meinem bestehenden Arduino-Ordner getrennt ist. Das Setup ist ziemlich fortgeschritten und daher ist es eine sehr gute Idee, es getrennt zu halten. Wenn dies Ihr erstes Arduino-Setup ist, stellen Sie sicher, dass Sie es ein zweites Mal in einem "Arduino" oder einem anderen Ordner für andere Arduino-Arbeiten installieren, einschließlich der Arbeit an ESP8266s.
Laden Sie die neueste Arduino-IDE von https://www.arduino.cc/en/Main/Software herunter. Entpacken Sie die Datei in Ihren neuen Ordner.
Die Anweisungen umfassen das Herunterladen des Sonoff-Tasmoda-Systems von der https://github.com/arendst/Sonoff-Tasmota-Hauptseite über: Klonen oder Download>ZIP herunterladen. Entpacken Sie die Datei in Ihren neuen Ordner.
Befolgen Sie die Anweisungen sorgfältig. Ich habe den Abschnitt Optional: Vorbereiten für OTA-Upload nicht gemacht. Wir werden dies für einen anderen Tag lassen.
Starten Sie nun die Arduino IDE (Doppelklick arduino.exe). Laden Sie die Sonoff-Tasmota-Skizze über File>Sketchbook>sonoff. Es müssen keine Änderungen vorgenommen werden. Alle Einstellungen werden nach dem Laden der Firmware über eine serielle Verbindung vorgenommen. Diese werden im EEPROM gespeichert. Somit kann die Firmware aktualisiert und alle Einstellungen beibehalten werden. Das ist ziemlich kluges Zeug. Sie können hier jedoch ein paar Schritte vermeiden, indem Sie zur Datei user-config.h gehen und Ihre WLAN-SSID und Ihr Passwort sowie MQTT_HOST eingeben (ersetzen Sie „domus1“– zweite Referenz durch Ihre Pi-IP-Adresse). Später möchten Sie vielleicht auch einen MQTT-Benutzer und ein Passwort eingeben. Überprüfen Sie vor dem Download die Board-Einstellungen unter Tools. Diese benötigen einige Änderungen, um den im Wiki festgelegten Anforderungen zu entsprechen. Klicken Sie nun auf Kompilieren (Häkchensymbol). Es sollte OK kompilieren. Wenn dies nicht der Fall ist oder die erforderlichen Board-Einstellungen nicht verfügbar sind, gehen Sie zurück und überprüfen Sie jeden Schritt des Setups.
Schritt 6: Neuprogrammierung eines Sonoff-Schalters
Wir sind jetzt zum Download bereit. Zu diesem Zeitpunkt kann man entweder geradeaus gehen und einen Sonoff-Schalter flashen oder man kann zuerst ein ESP8266-Modul flashen. Letzteres habe ich gemacht, zum Teil weil meine Switches noch nicht angekommen waren (gerade angekommen, während ich dies tippe!), aber auch vorsichtshalber, da das Flashen des Sonoff-Switches eine Einbahnstraße ist, da die Original-Firmware soweit nicht öffentlich verfügbar ist Ich bin mir bewusst. Ich habe ein paar NodeMCU-Boards. Diese sind einfach anzuschließen, da sie einen integrierten USB-Seriell-Konverter haben. Die Nodemcu-Reset-Methode funktioniert jedoch nicht mit diesem System. Lassen Sie also Tools>Reset Method auf „ck“eingestellt. Führen Sie die normale manuelle Blitzeinrichtung durch, indem Sie die Blitztaste (GPIO 0 auf Masse) gedrückt halten, während Sie Reset (Auf Masse zurücksetzen) drücken und loslassen. Ich bin mir nicht sicher, ob dies eine Zeitüberschreitung hat oder ich GPIO 0 nicht lange genug niedrig gehalten habe, aber ich brauchte mehrere Versuche, einschließlich der Ausführung während der Arduino-IDE kompiliert!
Wenn Sie die Antworten überprüfen möchten, ist der Relaisausgang D6 auf NodeMCU-Boards. Bei ESP12 ist dies GPIO 12. Der LED-Ausgang ist D7 (NodeMCU) oder GPIO 13 (ESP12).
Sonoff-Schalter.
WARNUNG: Ich muss sagen „auf keinen Fall an das Stromnetz anschließen, wenn das Gehäuse geöffnet ist“. Beachten Sie, dass die Platine (zumindest beim Sonoff Basic (in-line-Schalter) nur über 'einzelne Isolation'-Abstände zwischen dem Niederspannungsteil und dem Netz verfügt. Daher sollte man jeden Teil der Sonoff-Schaltung als Netzspannung behandeln. Der Sonoff- Tasmota GitHub zeigt den Anschluss eines Temperatur- und Feuchtigkeitssensors an einen Sonoff S20. Ich würde dies aus Isolationsgründen nicht tun. Wenn Sie dies also tun möchten, besorgen Sie sich ein ESP12- oder NodeMCU-Modul und richten Sie dieses separat mit einer richtigen Doppelisolierung ein oder geerdete Stromversorgung.
Der Sonoff S20 Plug-in-Schalter ist ein guter Ausgangspunkt, da er keine Netzverkabelung benötigt. Diese kann geöffnet werden, indem man eine Schraube (unter dem Sicherheitssiegel) entfernt und das Gehäuse aufhebelt. Das Foto unten zeigt, wo sich die Tags befinden. Das Zusammendrücken des Gehäuses an diesen Stellen hilft.
USB-Seriell-Konverter
Mein Lieblingskonverter ist die FTDI-Version. Dies ist jedoch nicht ausreichend, um die Anforderungen von Sonoff 3.3v zu erfüllen. Die FTDI-Spezifikation sagt maximal 50mA. Die nächstbeste Alternative ist die Verwendung des CP2102-Chips. Dies hat jedoch eine Grenze von 100 mA, die immer noch nicht ausreicht. Offensichtlich verwenden viele diesen Konverter direkt, aber es gibt auch Berichte über fehlgeschlagene Ladevorgänge. Ich würde die Zeit begrenzen, die es angeschlossen ist, da es sich unter der Last erwärmt. Tun Sie dies auf eigene Gefahr. Die ideale Lösung besteht darin, auch einen 3,3-V-Regler zu haben, z. ein AMS1117 3.3. Ich machte eine kleine Platine, um dies zu ermöglichen. Siehe Programmierer für Sonoff-Geräte.
Meine Reihenfolge beim Programmieren ist wie folgt:
Öffnen Sie die Arduino-IDE.
Überprüfen Sie unter Tools, ob die Einstellungen wie im Wiki sind.
Nehmen Sie alle erforderlichen Änderungen an user_config.h vor. Ich habe die Wifi-SSID und das Passwort sowie die MQTT-Broker-Adresse und die Details zur Zeitzone/Sommerzeit eingestellt.
Klicken Sie auf "Überprüfen", um zu überprüfen, ob die Kompilierung OK ist.
Schließen Sie den USB-Seriell-Konverter (allein) an den PC an. Notieren Sie die Portnummer.
Trennen Sie nun das serielle USB-Kabel vom PC und verbinden Sie es mit dem Sonoff-Schalter. Überprüfen Sie, ob die Masse- und 3v3-Anschlüsse richtig herum sind (Masse ist mit der Masseplatte auf der Sonoff-Platine verbunden).
Halten Sie das Programmiergerät so, dass die Kontakte sicher sind, während Sie gleichzeitig die Taste drücken.
Stecken Sie nun das USB-Kabel in den PC, überprüfen Sie, ob die Portnummer korrekt ist (in Tools), und klicken Sie dann auf Download.
Ich halte die Taste während der gesamten Programmierung weiterhin gedrückt, da ich die Verbindungen nicht stören möchte.
Wenn Sie fertig sind, sollten Sie einen Bildschirm wie unten sehen:
Der Sonoff benötigt ein paar Informationen, um sich mit unserem System zu verbinden: die WLAN-SSID und das Passwort des lokalen Netzwerks sowie die Pi-IP-Adresse. Dazu gibt es mehrere Möglichkeiten, eine davon besteht darin, die Datei config.ino wie bereits erwähnt zu ändern. Wenn Sie ein Smartphone haben, können Sie (nach dem Zusammenbauen des Schalters) relativ schnell die Sonoff-Taste 4 Mal drücken, um es in einen Webserver-Modus zu versetzen. Die LED blinkt. Ich musste mehrmals versuchen, das zum Laufen zu bringen. Suchen Sie dann auf Ihrem Smartphone nach dem neuen Sonoff-Netzwerk und stellen Sie eine Verbindung her. Es erscheint eine Webseite, auf der Sie die erforderlichen Daten einstellen können. Die IP-Adresse des Pi geht in den Hostnamen ein. Ich habe auch die zweite SSID und das Passwort in etwas langes und im Grunde unbrauchbares geändert.
Alternativ kann es direkt nach dem Laden über die serielle Verbindung eingerichtet werden. Öffnen Sie den Arduino Serial Monitor (unter Tools).
Befehle zur Eingabe:
SSid yourWiFiSSID
Passwort yourWiFiPassword
MqttHost 192.168.x.y (PI-IP-Adresse)
Sie können auch SSId1 und Password1 gefolgt von etwas Langem und Unbrauchbarem eingeben, um dies effektiv zu deaktivieren.
Jetzt können Sie den Sonoff-Schalter einpacken, Node-Red und das Node-red-Dashboard öffnen und auf die Schalterschaltfläche klicken und sich die Debug-Registerkarte ansehen, die jetzt die Antworten von Sonoff enthalten sollte. Damit haben wir einen weiteren großen Schritt erreicht - unser erster Switch wird von einem PC/Smartphone aus gesteuert.
Bis jetzt haben wir Sicherheit nicht erwähnt. Es besteht die Möglichkeit, verschlüsselte Kommunikation zu nutzen. Dies ist ziemlich komplex einzurichten und wahrscheinlich besser geeignet, wenn ein Cloud-basierter Broker verwendet wird. Es besteht auch die Möglichkeit, Benutzernamen und Passwörter für alle verbundenen Geräte hinzuzufügen und anonyme Benutzer nicht zuzulassen. Dies ist ziemlich einfach einzurichten. Und nun zur Sicherheit.
Schritt 7: Sicherheit
MQTT erlaubt Benutzernamen und Passwörter für jeden Client. Dies ist einfach einzurichten. Es ist wahrscheinlich einfacher, jedes Gerät zuerst umzubenennen und dann seine Benutzernamen und Passwörter festzulegen. Dies kann über MQTT-Befehle erfolgen, und Node-Red ist wahrscheinlich der einfachste Weg, diese zu senden. Entscheiden Sie sich zunächst für eine Namenskonvention. Eine Möglichkeit besteht darin, Namen nach Standort und Funktion zu gründen. Dann sollten Sie den Benutzernamen (Thema) und das Kennwort zusammen mit dem Fallback-Thema aufzeichnen. Beachten Sie, dass es auch eine „Reset-Option“gibt, um die Sonoff-Einstellungen auf den ursprünglichen Download zurückzusetzen (siehe Wiki-Nutzung> Schaltflächenfunktionen).
Schalten Sie den Pi ein und öffnen Sie nach einigen Sekunden einen Browser für Node-Red (IP-Adresse: 1880).
Richten Sie in Node-Red einen Inject-Knoten ein und verknüpfen Sie diesen mit einer mqtt-Ausgabe und setzen Sie den mqtt-Server auf localhost. Lassen Sie Thema, Benutzer und Kennwort leer, da wir diese im Inject-Knoten festlegen. Richten Sie auch einen mqtt-Eingabeknoten ein und verbinden Sie diesen mit einem Debug-Knoten, damit wir die Antworten sehen können. Setzen Sie die mqtt-Eingabenotiz auf localhost (sollte bereits gesetzt sein) und geben Sie +/+/+ für das Thema ein, damit der gesamte Datenverkehr erfasst wird.
Geben Sie im Inject-Knoten die folgende Sequenz von Einstellungen ein.
Überprüfen Sie zuerst die Konnektivität mit
Thema: cmnd/sonoff/Status
Nachricht: 6
Klicken Sie auf „Einmal beim Start injizieren“. Einsetzen. Wir sollten Debug sehen, einschließlich 7 Datenzeilen von stat/sonoff/STATUS6
Geben Sie Thema ein: cmnd/sonoff/Thema und Nachricht: Loungelight. Einsetzen. Dadurch ändert sich der Schaltername von sonoff in loungelight
Die Registerkarte Debug sollte zeigen, dass das Gerät mit seinem neuen Namen/Thema neu gestartet wird
Thema: cmnd/loungelight/MqttUser
Nachricht: Loungelight
Klicken Sie auf Bereitstellen. Ein Debug sollte von stat/loungelight/RESULT mit {“MtqqUser”:”loungelight”} angezeigt werden.
Thema: cmnd/loungelight/MqttPassword
Nachricht: loungelightPW (Achtung, einfallsreicher sein!)
Löschen Sie die Registerkarte Debug und Bereitstellen.
Eine Antwort sollte von stat/loungelight/RESULT mit {"MqttPassword":"loungelightPW"} angezeigt werden.
Geben Sie nun NodeRed und NodeRedPW als Benutzername und Passwort im mqtt out-Knoten ein. Dies geschieht über das Server-Bleistiftsymbol und die Registerkarte Sicherheit im sich öffnenden Fenster. Dies wird automatisch auf die anderen MQTT-Knoten kopiert.
Überprüfen Sie noch einmal mit
Thema: cmnd/loungelight/Status und Meldung: 6. Einsetzen.
Und dass die Antwort gesendet wird.
An dieser Stelle haben wir unser Sonof-Gerät umbenannt, sodass es auf cmnd/loungelight/……-Themen hört und sich mit dem Benutzernamen loungelight und dem Passwort loungelightPW am MQTT-Server anmeldet. Wir haben auch einen Benutzernamen und ein Passwort für Node-Red festgelegt.
Als nächstes müssen wir den Moskito-MQTT-Server anweisen, nur Clients mit Benutzernamen zu akzeptieren und die zu akzeptierenden Benutzernamen und Passwörter aufzulisten.
Das Verfahren ist:
- Mücke stoppen
- Eigene Konfigurationsdatei erstellen
- Konfigurationsdatei bearbeiten
- Passwortdatei erstellen
- Benutzer/Passwörter hinzufügen.
Melden Sie sich also mit einer neuen PuTTY-Sitzung an und führen Sie die folgenden Befehle aus:
sudo /etc/init.d/mosquitto stop
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Dies startet den Editor.
Zeilen hinzufügen:
allow_anonymous false
passwortdatei /etc/mosquitto/conf.d/passwd
require_certificate false
Speichern und beenden (Strg+X), Y, eingeben.
sudo touch passwd Dies erstellt eine Passwortdatei und die folgenden Anweisungen fügen Namen und Passwörter hinzu.
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd Loungelight LoungelightPW
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW
sudo /etc/init.d/mosquitto Neustart
Beachten Sie, dass Sie beim Hinzufügen eines neuen Geräts entweder den Benutzer und das Passwort über die serielle Schnittstelle eingeben und diese zur Passwortdatei hinzufügen müssen oder die mosquitto-Konfigurationsdatei vorübergehend ändern und die Zeilen "allow_anonymous false" auskommentieren (# am Zeilenanfang hinzufügen) " und "password_file /etc/mosquitto/conf.d/passwd" und setzen Sie diese dann zurück, wenn die Details an das Gerät gesendet und wie oben zur Passwortdatei hinzugefügt wurden.
Wir haben den Sonoff-Namen in loungelight geändert und daher den mqtt-Ausgangsknoten (der mit dem Switch verbunden ist) aktualisiert, um das Thema cmnd/loungelight/POWER zu verwenden.
Klicken Sie auf Bereitstellen und überprüfen Sie, ob die mqtt-Knoten 'verbunden' anzeigen.
Versuchen Sie als Nächstes die Umschalttaste und suchen Sie nach dem Debug, der anzeigt, dass der Sonoff-Schalter reagiert. Sie werden feststellen, dass das Gerät die Änderung mit einem Thema anzeigt: stat/loungelight/POWER. Ändern Sie nun den Eingabeknoten, der auf cmnd/sonoff/POWER gesetzt war, in stat/loungelight/POWER. Wir können damit eine Lücke in unserer Funktionalität schließen. Das anfänglich eingerichtete System wird mit allen angemeldeten Benutzern synchronisiert, jedoch nicht mit Schalteränderungen, die durch Drücken der Taste am Sonoff-Schalter vorgenommen wurden. Verbinden Sie nun den Ausgang des stat/loungelight/POWER mqtt-Eingangsknotens mit dem Schaltereingang (LHS). Doppelklicken Sie nun auf den Schalter und deaktivieren Sie das Häkchen bei "Wenn die Nachricht am Eingang ankommt, zum Ausgang durchreichen". Dadurch werden einige neue Optionen angezeigt - wählen Sie 'Schaltersymbol zeigt Status des Eingangs'. Einsetzen. Jetzt haben wir also eine gute Feedbackschleife. Die Schalterposition des Armaturenbretts ändert sich immer, wenn sich der Sonoff-Schalter ändert, unabhängig davon, wo die Änderung eingeleitet wurde.
Wir haben jetzt also ein sicheres, eigenständiges Hausautomationssystem in Betrieb und bereit für die Erweiterung auf alles, was Sie möchten. Im nächsten Abschnitt werde ich einige meiner bisherigen Experimente und Herausforderungen behandeln, die ich angehen möchte.
Schritt 8: Erste Schritte für die Erweiterung
Ich habe ein weiteres Instructable Home Automation Sonoff-Tasmota Sensors LEDs Development Board, das einige der weiteren Funktionen der Sonoff-Tasmota-Firmware zeigt:
Temperatur- und Feuchtigkeitsmessung
Einbruchserkennung (Schalteingang)
IR-Fernbedienung (für Fernseher usw.)
LED-Strings - sowohl RGB als auch NeoPixel (einzeln adressierbar)
I2C-Sensoren
Für das Obige verwende ich einen ESP12F und eine benutzerdefinierte Platine. Eine NodeMCU und ein Steckbrett könnten gleichermaßen verwendet werden. Dies ermöglicht diese zusätzlichen Funktionen ohne Verkabelung mit einem Sonoff-Gerät und ist daher viel sicherer. Mit der Temperatureingabe konnte ich meine Heizdeckenautomatisierung vervollständigen.
Musik und Internetradio können problemlos hinzugefügt werden. Dies eröffnet Optionen, um bestimmte Sender oder Alben zu festgelegten Zeiten oder möglicherweise als Reaktion auf die Erkennung eines Besuchers (Telefons) einzuschalten. Dieses zugehörige anweisbare ist ein hochwertiger Musik-Player und Internet-Radio mit Smartphone-Steuerung. Da auch dieser von Node-RED angesteuert wird, sollte es sogar möglich sein, mehr als ein Soundsystem zu haben und diese über MQTT-Kommunikation anzusteuern.
Ich habe auch Node-Red erforscht, einschließlich des Sendens von E-Mails und des Erstellens von Sprachwarnungen. Es besteht auch die Möglichkeit, dass das System erkennt, wann Sie ein- und ausgehen – durch Pingen der IP-Adresse Ihres Mobiltelefons. Node-Red kann auch auf Wetter und Nachrichten zugreifen - so kann man Informationen hinzufügen und automatisieren.
Es gibt ein paar Tricks zu lernen - aber diese werden beim zweiten Mal kinderleicht.
Eine andere Möglichkeit besteht darin, dem Pi ein Display hinzuzufügen, um das Dashboard anzuzeigen. Das ist 'work in progress' - oder anders gesagt, ich bin nicht allzu glücklich. Das Display, das ich erhalten habe, lässt sich nur schwer in den Hochformat-Modus drehen und der Chromium-Browser ist schmerzhaft langsam. Eine Alternative wäre, ein altes Tablet bei ebay zu kaufen und dieses zu verwenden. Ich kann es mit einem Pi 2 versuchen und sehen, ob das genug Verbesserung bringt (Modell B, das für diese Entwicklung verwendet wurde).
Ich hoffe, das bringt Sie zum Einstieg und regt Ihre Fantasie an. Der potenzielle Spielraum ist riesig. Bei Bedarf könnte man sogar den Sonoff-Code für andere Sensoren ändern.
Insgesamt war ich erstaunt, was dieses System leisten kann. Mein ursprüngliches Ziel war es, einfach einen Schalter von einem Smartphone zuverlässig über ein Standalone-System zu steuern. Ich hatte Visionen, Server und Clients verwalten und HTML für eine Benutzeroberfläche schreiben zu müssen. Wo dies gelandet ist, ist dies weit voraus, mit mehr Sicherheit, hervorragender Zuverlässigkeit, fantastischer Benutzeroberfläche, Drag-and-Drop-Programmierung und enormem Erweiterungspotenzial. Und das alles mit viel weniger Aufwand.
Mike
Schritt 9: Nachtrag - Laden von Raspbian Stretch Lite
Diese Option vermeidet die Bloatware, die mit der Vollversion von Raspbian Stretch geliefert wird. Das meiste davon wird nicht benötigt, wenn ein Pi für die Heimautomatisierung verwendet wird. Allerdings muss Node-Red installiert sein.
Gehen Sie wie in Schritt 1 vor, verwenden Sie jedoch Raspbian Stretch Lite anstelle von Raspbian Stretch.
Anstelle von Step2 gehen Sie wie folgt vor:
sudo apt -y installiere npm
npm -v sollte zurückgeben: 1.4.21 oder höher
sudo npm installieren -g n
sudo n 8.9.0
Wir können jetzt den Node Packet Manager verwenden, um Node-Red zu installieren:
sudo npm install node-red --global --unsafe-perm
Dies führt zu einigen Fehlermeldungen aufgrund einer falschen Adresse. Das System führt jedoch eine „Quellkompilierung“durch, um dieses Problem zu beheben. Wenn Sie die obige Anweisung wiederholen (nicht erforderlich), treten die Fehler nicht auf.
Wir haben jetzt Node-Red und seine unterstützenden Pakete installiert und können mit Schritt 3 fortfahren, dem Laden von Mosquitto.
Zweiter im Wireless-Wettbewerb
Empfohlen:
So stellen Sie eine Node.js-App auf Heroku bereit: 3 Schritte
So stellen Sie eine Node.js-App auf Heroku bereit: So habe ich meine NodeJS-App auf Heroku mit einem kostenlosen Konto bereitgestellt. Klicken Sie einfach auf die Links, um die erforderliche Software herunterzuladen: Verwendete Software: VSCode (oder ein Texteditor Ihrer Wahl) HerokuCLIGit
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
So hacken Sie ein Sonoff-Gerät – wikiHow
So hacken Sie ein Sonoff-Gerät: Prakhar Agrawal Junior Researcher (IoT Exploits) SICHERE HARDWAREEINFÜHRUNG In diesem Beitrag werden wir darüber diskutieren, wie man eine benutzerdefinierte Firmware auf das Sonoff-Gerät lädt und es mit seiner IP-Adresse steuert das
Sonoff Basic & Sonoff RF - Tutorial KOMPLETT: 16 Schritte
Sonoff Basic & Sonoff RF - Tutorial KOMPLETT: O Sonoff ist ein Online-Projetado für automatische Residenzen und Predial. O Sonoff Basic und RF-Podem-Serial-Alimentado-Com-Tensão de 90 a 250V AC, sua saída a relé supporta corrente de até 10A, possuí um WI-FI-Integrado de 2,4 GHz, o Sonoff RF con
Sonoff TH 16 - Tutorial Completo: 16 Schritte
Sonoff TH 16 - Tutorial Completo: O Sonoff ist eine Linha von Projetados für Automação Residential und Predial.Os Interruptors Sonoff TH16 mit einem Possuem-Eingang für einen Conectar-Sensor für Temperatur/Feuchtigkeit und eine Temperatur von 240 . im AC-Bereich von 100 - , P