Es gibt nur wenige Artikel über eine Programmierumgebung wie Node-RED im russischsprachigen Internet . Dieser Artikel enthüllt das Geheimnis des Vorhangs zu diesem Produkt und zeigt am Beispiel der Erstellung eines Lichtsteuerungsalgorithmus für Bewegungssensoren, wie einfach es ist, mit Node-RED verschiedene Szenarien und Regeln für die Automatisierung eines Smart Homes in vollständig grafischer Form zu implementieren, ohne Code zu schreiben.
Was ist Node-RED?
IBM versucht wie andere große Unternehmen, seine Nische im sich entwickelnden Internet der Dinge zu finden. Dies ist normalerweise mit der Veröffentlichung von Open-Source-Anwendungen und -Produkten verbunden, um deren kostenpflichtige Plattformen bekannt zu machen. Bei IBM ist die kostenpflichtige Plattform beispielsweise Bluemix.Node-RED ist eine Open-Source-Idee von IBM und, wie es einfach auf der Website geschrieben wird, ein Tool, mit dem Hardware, APIs und Services auf neue und interessante Weise verbunden werden können.Diese Methoden basieren auf der Verwendung grafischer Kommunikationsleitungen, über die Nachrichten zwischen Knoten gesendet werden. So können Sie die verschiedenen Blöcke einfach mit der Maus ohne Programmierung verbinden.Die Entwicklung in Node-RED erfolgt über einen normalen Browser. Der Kernel selbst kann auf verschiedenen Plattformen ausgeführt werden - PC, RPi, Cloud usw.Node-RED für Smart Home
Ich habe mich für Node-RED entschieden, um Skripte und Regeln für Smart Home zu schreiben. Das heißt, für die Automatisierung. Die Verbindung mit verschiedenen Aktoren, Webdiensten und Sensoren wird auf OpenHAB hergestellt. Warum habe ich mich entschieden, dort nicht zu automatisieren? Mehrere Gründe:- In OpenHAB werden Skripte und Regeln in ihrer eigenen Sprache geschrieben. Ich wollte es nicht nur für eine Anwendung studieren.- Das Debuggen der Regeln selbst ist fast unmöglich. Wenn die Regel nicht funktioniert, ist es schwierig herauszufinden, warum.Ich möchte, dass meine Regeln für die Kommunikation mit Geräten unabhängig von Hardware, Kommunikationskanälen, Plattformen und der Software selbst sind. Damit ich problemlos zu einer anderen UD-Plattform wechseln kann, z. B. Domoticz, MajorDomo, FHEM, und meine Regeln mitnehmen und sie nicht unter der neuen UD-Plattform neu schreiben kann.Lichtsteuerung durch Bewegungs- und Lichtsensoren
Also fangen wir an. Eigentlich ist die ursprüngliche Aufgabe einfach und trivial:Ich habe LED-Spots für die Beleuchtung im Korridor gesteuert. Ich möchte, dass das Licht bei Bewegung aufleuchtet und sich nach 10 Sekunden selbst ausschaltet.Lassen Sie uns die Aufgabe etwas komplizieren:- Das Licht sollte sich nur einschalten, wenn es draußen dunkel ist.- Die Lichtintensität sollte von der Zeit abhängen. - Bis 21 Uhr sollte sich das Licht mit voller Intensität einschalten und danach nur um 10% als Hintergrundbeleuchtung.Sensoren, Darsteller usw. Eisen
Die Protokolle und Kommunikationsmöglichkeiten mit Sensoren und Aktoren werde ich hier nicht beschreiben. Es genügt zu sagen, dass in meinem Smart Home alle diese Protokolle auf eins reduziert sind - MQTT, und dass dadurch bereits eine Kommunikation mit Node-RED stattfindet.Welche Sensoren und Aktoren habe ich?1. Der Bewegungssensor. Veröffentlicht eine OPEN-Nachricht zum Thema / myhome / state / Hall_motion, wenn eine Bewegung erkannt wird, und zu CLOSED, wenn 2 Sekunden lang keine Bewegung erfolgt.2. Lichtsensor. Es misst die Helligkeit der Straßenbeleuchtung im Bereich von 0-1000 Lux. Es veröffentlicht einmal pro Minute eine Nachricht im Thema / myhome / state / Lumin_Hall mit der aktuellen Lichtstärke.3. LED-Lampen für Dimmersteuerung. Es hat das Thema / myhome / command / Light_Hall / state abonniert. Wenn Sie dort 0 schreiben, erlischt das Licht. 100 - schaltet sich bei maximaler Helligkeit ein. 1-99 - ändert die Lichtintensität. Für Nachtbeleuchtung ausreichend Intensität 1.Beschreibung des Durchflusses in Node-RED
Es wird davon ausgegangen, dass Sie Node-RED bereits installiert haben. Wenn nicht, folgen Sie dem obigen Link und installieren Sie eine für Sie geeignete Option - auf einem Computer, Raspberry, Clowd usw. In meinem Fall ist Node-RED auf RPi2 installiert (meiner Meinung nach wird es sogar mit Raspbian geliefert, sodass überhaupt nichts installiert werden muss). Für diesen Ablauf müssen keine zusätzlichen Bibliotheken installiert werden.Ein- und Ausgänge
Zunächst erstellen wir die notwendigen Ein- und Ausgänge für unseren Algorithmus. Dies sind MQTT-Clients, die die relevanten Themen abonnieren. Wir ziehen sie aus der Bibliothek auf der linken Seite und passen sie an.Hinweis: Die angezeigten Blocknamen können in ihren Einstellungen geändert werden.Erstellen Sie für den Lichtsensor den Knoten Halllichtsensor aus dem MQTT-Eingang:
In seiner Konfiguration reicht es aus, die Adresse und das Thema des MQTT-Brokers zu registrieren.
Mein Broker dreht sich auf derselben Plattform, also verlassen Sie einfach localhost.Wir erstellen den Hall-Bewegungssensor-Knoten für den Bewegungssensor:
Alles ist gleich, setzen Sie einfach ein anderes Thema / myhome / state / Hall_motion.
Wie Sie an der Adresse und den Parametern des Brokers sehen können, hat dieser Knoten bereits den vorherigen Knoten übernommen, sodass Sie sie nicht in einen neuen eingeben müssen.Es bleibt noch MQTT-Ausgang hinzuzufügen, um einen Ausgang für den LED-Dimmer zu erstellen. Ziehen Sie den MQTT-Ausgang per Drag & Drop und nennen Sie ihn Hall Light Dimmer.
In den Parametern müssen Sie erneut nur das gewünschte Thema angeben, an das Nachrichten zur Steuerung des Dimmers gesendet werden sollen - / myhome / command / Light_Hall / state
Als Ergebnis haben wir drei Knoten für unseren Flow.
Es würde nicht schaden, sie auf Funktionalität zu testen. Das ist leicht.Wir verbinden die Debug-Ausgabe mit den Eingabeblöcken.
Und verbinden Sie den Inject Input mit dem Output Block.
In den Einstellungen dieses Knotens müssen Sie die Nutzlast auf die gewünschte Helligkeit der Lampe einstellen. In diesem Fall ist es beispielsweise 100.
Wir können mehrere identische Inject-Blöcke durch Kopieren und Einfügen erstellen, die Helligkeit ändern und sie wie folgt mit dem Ausgang verbinden:
Das wird auch funktionieren. Es ist Zeit zu überprüfen. Wir klicken auf die Schaltfläche Bereitstellen:
Unter den MQTT-Knoten sollte eine kleine Meldung angezeigt werden:
Dies bedeutet, dass sie mit dem MQTT-Broker verbunden sind. Wenn alles nach Plan verlaufen ist, sollten auf der rechten Registerkarte Debug die Meldungen der Sensoren angezeigt werden. Wenn Sie auf die Rechtecke links neben den Inject-Knoten klicken, sollte sich die Lichtintensität der an den Dimmer angeschlossenen Lampe ändern. Wenn alles funktioniert, können Sie weiter gehen.Steuerkreis für Bewegungssensorbeleuchtung
Der Einfachheit halber werde ich einzelne miteinander verbundene Blöcke als Ketten bezeichnen. Lassen Sie uns zunächst versuchen, eine einfache Schaltung zu erstellen, die das Licht des Bewegungssensors einschaltet und nach einiger Zeit ausschaltet. Dazu benötigen wir nach dem Node-RED-Konzept die Meldung des Bewegungssensors, um den Dimmer über bestimmte Blöcke zu erreichen und einen bestimmten Text zu haben. Zunächst werden wir uns mit der Einbeziehung von Licht befassen.Zunächst wählen wir aus allen Meldungen des Bewegungssensors eine Meldung mit dem Text OPEN aus - das heißt, die Bewegung ist erschienen. Verwenden Sie dazu den Schalterblock. Schließen Sie es an den Ausgang des bereits erstellten Hall Motion Sensor-Blocks an.
Wir werden es so konfigurieren, dass der Block nur Nachrichten mit dem Text OPEN ausgibt
Wie Sie auf dem Bild sehen können, vergleicht der Block die Nutzdaten mit dem Text OPEN und sendet Nachrichten an die Ausgabe, wenn der Text übereinstimmt.Unser Dimmer erfordert, dass Nachrichten mit der erforderlichen Helligkeit 0 ... 100 eingegeben werden. Er wird den Text OPEN nicht verstehen. Daher verwenden wir den Änderungsblock, um den Text der Nachricht zu ändern.
Notieren Sie in den Einstellungen dieses Blocks die erforderliche Änderung - Nachrichtennutzlast, die wir auf 100 ändern - die erforderliche Beleuchtungsintensität.Und schließlich verbinden wir alles mit dem Eingang unseres Dimmers:
Wenn Sie diese Schaltung starten, können Sie sicherstellen, dass sie funktioniert - das Licht wird in Bewegung eingeschaltet. Es bleibt sicherzustellen, dass es sich auch ausschaltet.Verwenden Sie dazu die Triggereinheit und verbinden Sie sie mit dem Ausgang des Bewegungssensors.
Mit dem Triggerblock können Sie verzögerte Nachrichten generieren und durch eine bestimmte Nachricht zurückgesetzt werden. Wir werden es folgendermaßen
konfigurieren : Diese Einstellung bedeutet, dass der Trigger beim Eintreffen der ersten Nachricht nichts sendet, sondern eine Zeitverzögerung von 8 Sekunden startet und danach eine Nachricht mit dem Text 0 sendet. Der Trigger wird auch zurückgesetzt, wenn er eine Eingabe mit dem Text OPEN empfängt. Was bedeutet das in unserem Fall?Angenommen, der Bewegungssensor zeigt eine OPEN-Meldung an. Diese Nachricht bringt den Trigger ohne Reaktion in seinen ursprünglichen Zustand zurück. Nach einiger Zeit gibt der Bewegungssensor eine GESCHLOSSENE Meldung aus. Diese Nachricht startet die Zeitverzögerung und 8 Sekunden danach zeigt der Trigger eine Nachricht 0 an.Wenn während dieser Zeitverzögerung die OPEN-Nachricht erneut eintrifft, kehrt der Trigger wieder in seinen ursprünglichen Zustand zurück und wartet auf die nächste Nachricht (die logischerweise geschlossen wird). In diesem Fall zeigt der Trigger keine Meldungen an.Das heißt, auf diese Weise haben wir einen Timer erstellt, mit dem wir das Licht nach einer bestimmten Belichtung automatisch ausschalten können. Wenn wir uns an die Beschreibung des Bewegungssensors erinnern, wird klar, warum hier 8 Sekunden eingestellt sind und nicht 10 - 2 Sekunden aufgrund der Verschlusszeit des Bewegungssensors selbst hinzugefügt werden.Es bleibt, den Triggerausgang mit dem Dimmer zu verbinden, und Sie können die Schaltung zur Überprüfung starten.
Ich stelle fest, dass ich der Einfachheit halber Screenshots von bereits debuggten Ketten poste. Sie können Blöcke mit Ihrer Debug-Kette aufhängen, um zu verstehen, wie sie funktioniert. Ihre Kette sieht möglicherweise folgendermaßen aus:
Und es gibt nichts, worüber man sich Sorgen machen müsste.Und Sie können es so machen: Im
Allgemeinen können Sie durch Klicken auf die Rechtecke links neben den Inject-Blöcken die Schaltung ohne Bügeleisen debuggen - auf Ihrem Laptop während einer Fahrt mit der U-Bahn oder sogar einem Tablet.Licht-Ein / Aus-Schaltung abhängig von der Helligkeit der Straßenbeleuchtung
Jetzt müssen wir sicherstellen, dass das Licht nicht eingeschaltet wird, wenn die Straße zu hell ist. Dazu müssen wir eine weitere Kette hinzufügen und die Hauptkette leicht ändern, um diesen Faktor zu berücksichtigen.Nehmen Sie zuerst den bereits bekannten Schaltblock und verbinden Sie ihn mit dem Ausgang des Lichtsensors.
Wir werden dieses Gerät so konfigurieren, dass es abhängig von der aktuellen Beleuchtung Nachrichten vom Lichtsensor an einen der Ausgänge sendet.
Die obige Bedingung bedeutet, dass bei einer Beleuchtung von weniger als 10 Lux die Nachricht an Ausgang 1 gesendet wird. Andernfalls wird sie an Ausgang 2 gesendet. Vergessen Sie nicht, dass Sie die
Option auswählen müssen, damit die Nachricht nur an einen der Ausgänge gerichtet wird.Basierend auf dem Funktionsprinzip stellt sich logischerweise heraus, dass wir die Bewegungserkennung aktivieren müssen, wenn die Meldung am ersten (oberen) Ausgang erscheint, und wenn am zweiten, dann deaktivieren müssen.Hier sind natürlich 1000 und 1 Methoden möglich, von denen die einfachste darin besteht, die Nachricht zu blockieren, um das Licht vom Bewegungssensor einzuschalten, wenn es draußen hell ist. Wir erkennen es.Es ist zu beachten, dass in Node-RED die Ausführungsengine basierend auf Nachrichten implementiert ist. Das heißt, Keine Nachricht - kein Ereignis, keine Reaktion. Dies legt bestimmte Besonderheiten für den Fall fest, dass verschiedene Nachrichten asynchron ankommen, d. H. Zu verschiedenen Zeitpunkten. In diesem Fall ist beispielsweise die Nachricht vom Lichtsensor asynchron mit den Nachrichten vom Bewegungssensor. Um die Wirkung des Lichtsensors zu berücksichtigen, müssen wir uns daher die Informationen in seiner Nachricht merken und sie dann anwenden, wenn das nächste Mal eine Nachricht vom Bewegungssensor kommt.In diesem Fall kommt der Kontext zur Rettung - ein Feld, in dem Sie Informationen während der Ablaufausführung speichern können. Der Kontext ist global in Bezug auf die gesamte Umgebung oder lokal für einen bestimmten Fluss oder im Allgemeinen nur für einen bestimmten Block.In unserem Fall verwenden wir einen lokalen Kontext für diesen Fluss. Das heißt, Variablen sind für alle Blöcke in diesem Fluss sichtbar. Erstellen Sie einen Änderungsblock und verbinden Sie ihn mit dem ersten Ausgang des Lichtschwellendetektors.
Wie wir uns erinnern, wird an diesem Ausgang eine Meldung angezeigt, wenn der Lichtsensor meldet, dass die Straßenbeleuchtung weniger als 10 Lux beträgt. Berücksichtigen Sie die Konfiguration des Änderungsblocks.
In diesem Fall verwenden wir die Set-Regel, um die Variable flow.Light_enabled auf Yes zu setzen. Daher haben wir der globalen Variablen einen Wert zugewiesen, den wir in anderen Blöcken verwenden können.Erstellen Sie auf die gleiche Weise den zweiten Änderungsblock und verbinden Sie ihn mit dem zweiten Ausgang.
Die Konfiguration lautet wie folgt:
Um herauszufinden, ob ein solcher Detektor richtig funktioniert, können wir eine einfache Schaltung mit Inject- und Debug-Blöcken erstellen.
Gleichzeitig geben wir in den Einstellungen des Inject-Blocks an, dass er jede Sekunde den Wert des variablen Durchflusses angeben soll. Light_enabled
Dann kann das Ergebnis des Lichtsensors auf der Registerkarte Debug leicht angezeigt werden .
Die allgemeine Licht-Ein / Aus-Schaltung für den Lichtsensor sieht
nun so aus, um diesen Effekt zu berücksichtigen Als Steuerstromkreis des Bewegungssensors reicht es für uns aus, den Schaltblock in den Stromkreis des Pfades einzufügen, um das Licht einzuschalten.
Und richten Sie es so ein, dass nur dann Nachrichten vom Bewegungssensor übersprungen werden, wenn unsere globale Variable flow.Light_enabled auf Yes gesetzt ist - d. H. Draußen ist es dunkel.
Fertig! Jetzt sieht unser Fluss so aus:
Ändern der Helligkeit der Lampe je nach Zeit
Es ist sehr wenig übrig. Wir wollen die Intensität der LED-Lampe ändern. Das heißt, Wenn es bei uns dunkel ist, die Zeit jedoch vor 21 Uhr liegt, sollte das Licht bei voller Leistung aufleuchten. Aber nach neun - nur bei geringer Leistung, wie bei Nachtbeleuchtung.Erstellen Sie dazu einen Inject-Block:
Er kann so konfiguriert werden, dass zu einem bestimmten Zeitpunkt eine Nachricht angezeigt wird. Stellen Sie es jeden Tag um 21:00 Uhr ein.
Gleichzeitig stellen wir fest, dass eine Nachricht mit dem Wert 1 ausgegeben wird. Dies ist unsere gewünschte Intensität der Hintergrundbeleuchtung im Nachtmodus. Um diesen Wert in der Lichtsteuerschaltung zu verwenden, verwenden wir denselben Trick mit globalen Variablen. Erstellen Sie einen change: block
und konfigurieren Sie ihn so, dass der Variablen flow.Light_Brightness der Wert aus der Nachricht zugewiesen wird.
Um die anfängliche Helligkeit am Morgen wiederherzustellen, erstellen Sie einen zweiten Injektionsblock, der um 6 Uhr morgens ausgeführt wird, und geben Sie einen Helligkeitswert von 100 an. Schließen Sie ihn dort an.
Daher wird der Variablen flow.Light_brightness jeden Abend um 9 Uhr der Wert 1 und jeden Morgen um 6 Uhr der Wert 100 zugewiesen. Es bleibt nur, dies im Hauptstromkreis anzuwenden. Dafür haben wir bereits einen Block zur Anpassung der Lichthelligkeit:
Für diesen müssen wir nur die Einstellung so ändern, dass keine Konstante zugewiesen wird, sondern der Wert der Variablen flow.Light_brightness.
Endergebnis
Der endgültige Ablauf, der von Debugging-Blöcken befreit ist, sieht ordentlich und sauber aus. Beim Erstellen haben wir nur Bausteine aus der Node-RED-Installation verwendet. Bei Flows.nodered.org gibt es jedoch über 800 zusätzliche Blöcke und Bibliotheken, mit denen Sie viele verschiedene Dinge hinzufügen können.
Für diejenigen, die daran interessiert sind, diesen Algorithmus zu wiederholen, veröffentliche ich den Ablauf, den ich zum Debuggen verwendet habe:
sowie den JSON-Code, der problemlos in jede Version von Node-RED importiert und getestet werden kann.[{"id":"5afd41b4.d61318","type":"switch","z":"2384634b.17767c","name":"Movement detected?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OPEN","vt":"str"}],"checkall":"false","outputs":1,"x":562,"y":285,"wires":[["381b0d6d.a0bd7a"]]},{"id":"35bac8e.57dd5b8","type":"trigger","z":"2384634b.17767c","op1":"5","op2":"0","op1type":"nul","op2type":"val","duration":"8","extend":false,"units":"s","reset":"OPEN","name":"Switch off delay","x":750,"y":373,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"d85623d1.29b058","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"payload","pt":"msg","to":"Light_brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1013.9999389648438,"y":284.63330078125,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"934ff922.ca34f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"OPEN","payloadType":"str","repeat":"","crontab":"","once":false,"x":258.5,"y":408,"wires":[["5afd41b4.d61318"]]},{"id":"ea0e2e99.52a6f8","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"CLOSED","payloadType":"str","repeat":"","crontab":"","once":false,"x":269,"y":459,"wires":[["35bac8e.57dd5b8","5afd41b4.d61318"]]},{"id":"4187db59.93c2dc","type":"mqtt in","z":"2384634b.17767c","name":"Hall Light Sensor","topic":"/myhome/state/Lumin_Hall","qos":"2","broker":"bfc8eee2.a46c9","x":243,"y":146,"wires":[["c94e7c4.849f48"]]},{"id":"c94e7c4.849f48","type":"switch","z":"2384634b.17767c","name":"Light Threshold Selector","property":"payload","propertyType":"msg","rules":[{"t":"lt","v":"10","vt":"num"},{"t":"else"}],"checkall":"false","outputs":2,"x":517.3333129882812,"y":145.7166748046875,"wires":[["48e6a07a.962798"],["ca8b6623.f11c7"]]},{"id":"381b0d6d.a0bd7a","type":"switch","z":"2384634b.17767c","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","outputs":1,"x":775.5,"y":285,"wires":[["d85623d1.29b058"]]},{"id":"48e6a07a.962798","type":"change","z":"2384634b.17767c","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":822,"y":109,"wires":[[]]},{"id":"ca8b6623.f11c7","type":"change","z":"2384634b.17767c","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":824.6666259765625,"y":177.51666259765625,"wires":[[]]},{"id":"b6ea27c1.c33cd","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"Light_enabled","payloadType":"flow","repeat":"1","crontab":"","once":false,"x":330.5,"y":678,"wires":[["db66aec8.b3abc"]]},{"id":"db66aec8.b3abc","type":"debug","z":"2384634b.17767c","name":"Light_enabled","active":false,"console":"false","complete":"payload","x":670.5,"y":679,"wires":[]},{"id":"fa4b50b8.e6e0f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"x":233.5,"y":212,"wires":[["c94e7c4.849f48"]]},{"id":"e7b1a39.f9e596","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"100","payloadType":"num","repeat":"","crontab":"","once":false,"x":235,"y":266,"wires":[["c94e7c4.849f48"]]},{"id":"4b2f3c6f.de9aac","type":"mqtt in","z":"2384634b.17767c","name":"Hall Motion Sensor","topic":"/myhome/state/Hall_motion","qos":"2","broker":"87b370d1.dd497","x":247,"y":334,"wires":[["5afd41b4.d61318","35bac8e.57dd5b8"]]},{"id":"e995e130.1e2118","type":"mqtt out","z":"2384634b.17767c","name":"Hall Light Dimmer ","topic":"/myhome/command/Light_Hall/state","qos":"0","retain":"true","broker":"87b370d1.dd497","x":1310,"y":315,"wires":[]},{"id":"781e72a7.3c0abc","type":"inject","z":"2384634b.17767c","name":"Reduce Brightness at 21:00","topic":"Night Brightness","payload":"1","payloadType":"str","repeat":"","crontab":"00 21 * * *","once":false,"x":339,"y":517,"wires":[["adbf1e2e.3f5ae"]]},{"id":"aa444315.a48ad8","type":"inject","z":"2384634b.17767c","name":"Normal Brightness at 6:00","topic":"Night Brightness","payload":"50","payloadType":"num","repeat":"","crontab":"00 6 * * *","once":false,"x":349.6666259765625,"y":604.683349609375,"wires":[["adbf1e2e.3f5ae"]]},{"id":"adbf1e2e.3f5ae","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"Light_brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":692,"y":554,"wires":[[]]},{"id":"af1f191f.498098","type":"debug","z":"2384634b.17767c","name":"","active":true,"console":"false","complete":"false","x":1303.5,"y":429,"wires":[]},{"id":"bfc8eee2.a46c9","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"87b370d1.dd497","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""}]
Zusammenfassung
In diesem Artikel habe ich versucht zu demonstrieren und zu erklären, wie einfach es ist, alltägliche Hausautomationsalgorithmen in einer Node-RED-Umgebung zu implementieren. Ich habe auch versucht, die Hauptvorteile dieser Programmierumgebung aufzuzeigen, wie zum Beispiel:- eine logische grafische Darstellung von Verbindungen und Funktionen- einfache Programmierung und einfaches Debuggen von Benutzerskripten- Hardware- und Plattformunabhängigkeit der resultierenden Algorithmen - dieses Skript funktioniert gleichermaßen gut mit OpenHAB sowie mit ioBroker und mit allen anderen Smart-Home-Plattformen, die das MQTT-Protokoll unterstützen.- Einfacher Austausch vorgefertigter Algorithmen zwischen Benutzern dank Copy-Paste-JSON-Code und Vorhandensein einer Online-Plattform für den Austausch erfolgreicher Lösungen.Node-RED kann viel mehr, z. B. Wetter aus dem Internet empfangen, Benachrichtigungen an Twitter senden oder mit Nest-Thermostaten arbeiten. Auf dieser Grundlage können Sie viele andere interessante und nützliche Automatisierungsalgorithmen erstellen. Dies sind jedoch Themen für die folgenden Artikel.