-
Notifications
You must be signed in to change notification settings - Fork 48
Flow simple toggle light
Möchte man mittels eines Tastendrucks ein Licht ein und mit dem nächsten Tastendruck Ausschalten, ist das einfach möglich:
Das Problem ließe sich sicherlich auf den ersten Blick einfacher mit einem Function Node und etwas JavaScript lösen. Die Empfehlung von IBM (der Firma hinter Node-Red) ist es möglichst auf die Function Nodes zu verzichten. Gerade bei solch einfachen Beispielen sind die Standard Nodes vorzuziehen.
Die Gründe dafür sind:
- Die Funktion eines Flows erschließt sich viel einfacher mit der Verwendung der Standard Nodes
- Auch wenn die Flows damit vielleicht nicht so aufgeräumt wirken, kann man die Funktion später viel einfacher nachvollziehen.
- Die Function Nodes haben gegenüber den Standard Nodes eine schlechtere Performance, da der Javascript Code in einer Sandbox ausgeführt wird.
Wenn man das Problem mittels CCU Programm lösen möchte, hat man vermutlich ein Programm in dieser Art erstellt:
Hier wird das Programm durch einen kurzen Tastendruck getriggert und abhängig vom aktuellen Zustand der Lampe (nur prüfen) diese entweder ein- oder ausgeschaltet.
In Node Red ist der Flow ähnlich:
Als erstes sollte man sich die Node-RED Grundlagen durchlesen. Danach kann es auch schon losgehen.
Als erstes benötigt man den Trigger für den Flow. Dieser gibt das Event, welches ein Ereignis auslösen soll.
Wenn dieser Event durch eine Taste eines Homematic Gerätes ausgelöst werden soll, nimmt man dafür in der Palette den Value Node:
Diesen platziert man einfach in den Arbeitsbereitch und klickt ihn doppelt:
Zum Konfigurieren sind die Felder wie folgt auszufüllen:
- Als erstes muss man die Homematic Zentrale auswählen. Hat man noch keine konfiguriert, so ist mittels Stift Button daneben die Einstellungen zur Zentrale zu tätigen. (siehe auch CCU Nodes )
- Danach das Interface des Homematic Gerätes auswählen
Sollte die Drop Down Box leer sein (weil beispielsweise die CCU erst konfiguriert wurde), so muss man die Einstellungen des Node mit dem Done Button einmal schließen und neu öffnen. - Hier wählt man den Kanal aus. Dabei kann man sehr einfach den Namen eintippen. Es öffnet sich eine Liste mit den möglichen Kanälen in der man den gewünschten auswählt.
- Der Datenpunkt des Kanals. Die folgenden Datenpunkte sind dabei die gebräuchlichsten:
- Taster - kurzer Tastendruck: "PRESS_SHORT"
- Taster - langer Tastendruck: "PRESS_LONG"
- Status eines Aktors "STATE" Für eine Taste als Trigger benötigen wir damit "PRESS_SHORT"
- Mit dieser Einstellung kann man noch beeinflussen, wann die Node etwas ausgeben soll.
- Die Eigenschaft "Nur geänderte Werte ausgeben" kann man mit dem "bei Änderung", bzw. "bei Aktualisierung" in den Homematic Programmen vergleichen. Ist der Haken bei "Nur geänderte Werte ausgeben" gesetzt, wird der Flow nur gestartet, wenn sich der Datenpunkt auf einen anderen Wert (Bsp. true auf False) ändern ("bei Änderung"). Ist der Haken nicht gesetzt, wird der Flow immer dann gestartet, wenn der Datenpunkt aktualisiert wird ("bei Aktualisierung"). Damit auch wenn sich der Wert selbst nicht ändert (Bsp. true auf true).
- Wenn man sich unsicher ist, sollte der Haken gesetzt sein.
- Manche Datenpunkte können während der Änderung auch fortlaufend ihren Status übermitteln. So kann beispielsweise gesteuert werden ob ein Rollladen während der Bewegung ständig seine Position übermittelt oder nur wenn er an seinem Endpukt angekommen ist.
- Wenn man sich unsicher ist, sollte der Haken gesetzt sein.
- Mit der EIgenschaft "Beim Start letzten bekannten Wert ausgeben" kann gesteuert werden ob beim Neu/Start von RedMatic der Flow mit dem letzten bekannten Wert getriggert werden soll.
- Die Eigenschaft "Nur geänderte Werte ausgeben" kann man mit dem "bei Änderung", bzw. "bei Aktualisierung" in den Homematic Programmen vergleichen. Ist der Haken bei "Nur geänderte Werte ausgeben" gesetzt, wird der Flow nur gestartet, wenn sich der Datenpunkt auf einen anderen Wert (Bsp. true auf False) ändern ("bei Änderung"). Ist der Haken nicht gesetzt, wird der Flow immer dann gestartet, wenn der Datenpunkt aktualisiert wird ("bei Aktualisierung"). Damit auch wenn sich der Wert selbst nicht ändert (Bsp. true auf true).
Als nächstes ziehen wir aus der Palette den Node, der den Ablauf steuern soll. In diesem Beispiel wollen wir abhängig vom Schaltzustand eines Lichtes dieses aus oder einschalten. Also muss sich in Abhängigkeit vom Zustand des Lichtes (aus oder ein) etwas anderes passieren.
- Wenn Lampe aus ist, soll sie eingeschaltet werden
- Wenn Lampe ein ist, soll sie ausgeschaltet werden
Dafür benutzt man aus der Palette de switch Node. Möchten wir den Flow in Abhängigkeit eines Datenpunktes eines Homematic Gerätes steuern nehmen wir den aus der CCU Palette:
Es gibt daneben noch den Standard switch node, den wir in diesem Beispiel nicht verwenden:
Hat man diesen auf den Arbeitsbereich gezogen, verbindet man den Ausgang des Trigger Nodes mit dem Eingang dieses switch Nodes.
Als nächstes öffnet man die Einstellungen dieses switch Nodes. Der obere Teil der Konfiguration ähnelt jetzt dem des value Nodes.
Hier wählt man jetzt den Datenpunkt der Lampe aus, welche man schalten möchte. Bei Property ist die "value" auszuwählen.
Im unteren Teil kann man die Bedingungen einstellen:
- Über den Add Button kann man die verschiedenen Bedingungen hinzufügen. Da wir 2 verschiedene Wege gehen möchten, müssen wir 2 Wege hinzufügen.
- Für jeden dieser Wege kann man einstellen, unter welcher Bedingung er betreten werden soll. Die Bedingung "otherwise" trifft immer zu und sollte als letztes gewählt werden.
- Diese Einstellung ist sehr wichtig. In der Standard Einstellung steht diese auf "checking all rules". Das bedeutet es wird jede Bedingung geprüft und der Flow an ihr weitergeführt. Für den "otherwise" zweig beispielsweise bedeutet das dieser immer weitergeführt wird, unabhängig von den anderen Bedingungen. Ist in dem Beispiel die Lampe eingeschaltet, geht es mit "checking all rules" sowohl bei "is true" als auch bei "otherwise" weiter. Will man eher eine Wenn-dann Bedingung ist diese Einstellung auf "stopping after first match" umzustellen.
Die Komplette Konfiguration kann wie folgt aussehen:
Als nächstes möchten wir bestimmen was an den beiden Ausgängen passieren soll:
Der obere wird ja betreten, wenn die Lampe an ist. Hier soll die Lampe ausgeschaltet werden.
Dafür nehmen wir aus der Palette die change Node:
Die steuernde Eigenschaft der weitergegebenen Nachricht ist die msg.payload
. Um die Lampe auszuschalten muss diese auf "false" gesetzt werden. Der Node ist dafür bereits vorkonfiguriert:
Man wählt in der Liste einfach den Typ "boolean" aus und daneben false:
Diesen Node verbindet man mit dem oberen Ausgang des switch Nodes. Den Schritt wiederholt man mit dem underen Ausgang. Hierbei setzt man den payload jedoch auf true:
Als Aktion soll ein Homematic Aktor geschaltet werden. Dafür ist aus der Palette der value Node in den Arbeitsbereich zu ziehen. Dieser ist genauso wie der Tasten Kanal für den Trigger zu konfigurieren, mit dem unterschied anstelle des Tasterkanals hier den Kanal des Aktors zu wählen.
Als vorletzten Schritt verbindet man die beiden Change Nodes mit dem value Node:
Ist dies erledigt, wird diese Änderung aktiviert mittels des Deploy Buttons:
Inhaltsverzeichnis RedMatic Documentation © 2018-2022 Sebastian Raff and RedMatic Contributors, licensed under CC BY-SA License 4.0