Flow within time - rdmtc/RedMatic GitHub Wiki
Title: Ausführen von Funktionen in definierten Zeitfenstern Category: User Flows
Ausführen von Funktionen in definierten Zeitfenstern
Dieser Flow stellt exemplarisch dar, wie Funktionen an Zeitfenster geknüpft werden können. Dafür werden beispielhaft zwei Szenarien dargestellt.
Inhalt
Gartenbeleuchtung
In RedMatic ist der Node node-red-contrib-sun-position integriert. Diese Sammlung von Nodes ermöglicht es sehr ausführliche Zeitsteuerung. Der darin enthaltene within-time-switch Node ermöglicht es sowohl Zeitfenster selbst festzulegen als auch Zeitfenster an Hand des Sonnenstandes zu ermitteln. Dafür stehen die unterschiedlichen definierten Sonnenauf- und untergänge als Start- bzw. End-Time zur Verfügung, zum besseren Verständnis empfehle ich folgenden Link: Dämmerung – die drei Dämmerungsphasen. Zusätzlich ist auch möglich den Mond ufgang oder untergang genutzt werden oder verschiedene Zeiten für Feiertage oder Wochenende.
Flow mit der within-time-switch node
Im folgenden Flow wird jeden Tag nach zivilem Sonnenuntergang die Beleuchtung im Garten eingeschaltet und nach zivilem Sonnenaufgang die Beleuchtung im Garten deaktiviert.
Das Programm wird minütlich per InjectNode aufgerufen, Konfiguration des Nodes siehe hier:
Minütlich wird somit der within-time-switch Node angestoßen, dieser muss wie im folgenden Bild eingestellt werden.
Zur Erklärung. Zum einen muss man definieren welcher Ort zur Bestimmung der AstroDaten verwendet werden soll. Wollt Ihr Zeitfenster selbst definieren könnt ihr die Einstellung an dieser Stelle überspringen.
Ich habe für meinen Anwendungsfall start-time als sunset definiert, laut info des Nodes ist dies die zivile Abenddämmerung. End-Time ist dawn, dies entspricht dem zivilen Sonnenaufgang. Somit wird jeden Abend wenn die Dämmerung einsetzt und die Dunkelheit beginnt die Beleuchtung im Garten eingeschaltet, sollte die Morgendämmerung eingesetzt haben werden die Lampen deaktiviert.
Je nach zutreffender Bedingung hat der Node zwei Ausgänge. An diese Ausgänge setze ich den Aktor welchen ich schalten mag.
Per change-node wird nun der zu treffende Schaltstatus definiert, im Beispielbild wird msg.payload auf true gesetzt. Das Licht soll angeschaltet werden. Sollte das Licht ausgeschaltet werden sollen muss msg.payload auf false gesetzt werden.
Abschließend noch die Konfiguration des ccu-value nodes
node-red-contrib-sun-position nodes
Flow mit dermit Hilfe des time-inject nodes lässt sich das stark vereinfachen:
Die time-inject Nodes senden eine Nachricht beim erreichen der eingestellten zeit gleich mit dem richtigen payload:
Die Einstellung für die Position wird hier zentral über eine extra Konfiguration gehandelt und muss nicht in jeder Node einzeln konfiguriert werden.
verschiedene Zeiten für Wochenende
Dies lässt sich mit Hilfe der Auswahl der Tage und entsprechend mehr time-inject nodes realisieren:
verschiedene Zeiten für Feiertage
noch offen
Gartenbeleuchtung
ausstehend.