NEWS
CRON-Trigger per Schleife erstellen
-
Hallo,
ich möchte alle Rollläden im Haus einzeln schalten. Daher war meine Idee die CRON-Trigger zu erstellen, indem ich ein Array mit den Ojekten durchlaufe. Beim Ändern einer Uhrzeit sollen die CRON-Trigger gestoppt und neu aufgebaut werden.
Ist das überhaupt möglich?
Die Zeitpläne haben immerhin alle den gleichen Namen:
Gruß,
Christian -
@christiansr sagte: Die Zeitpläne haben immerhin alle den gleichen Namen:
Dann können sie nicht gestoppt werden.
@christiansr sagte in CRON-Trigger per Schleife erstellen:
Beim Ändern einer Uhrzeit sollen die CRON-Trigger gestoppt und neu aufgebaut werden.
-
@paul53 genau das war meine Befürchtung.
Bedeutet das, dass ich keine Möglichkeit habe das entsprechend aufzubauen?Sehe nun folgende Möglichkeiten:
1.) Einarbeiten in JS ein und die CRON-Namen dynamisch erstellen
2.) Für alle 20 Rollläden einzelne CRON-Trigger basteln
3.) Eigenen Trigger bauen (zyklisch Uhrzeit abfragen) -
@christiansr sagte: CRON-Namen dynamisch erstellen
Man kann Variablenbezeichner nicht dynamisch erstellen. Ausweg: Array of schedules.
Die anderen beiden Methoden werden funktionieren. -
@paul53 ein „array of schedules“ kann vermutlich nicht in blocken erstellt werden, sondern müsste dann über js passieren. Richtig?
-
@christiansr sagte: müsste dann über js passieren. Richtig?
Richtig.
-
@christiansr oder du ziehst das Konstrukt anders auf.
Zum Beispiel (so etwas ähnliches habe ich mir für Benachrichtigungen gebaut)- Du baust dir Datenpunkte für jeden Zeitplan / Rollladen in denen der aktuelle Zeitplan hinterlegt ist
- Du baust dir eine "Hauptschleife" die per Cron einmal die Minute / alle 30 Sekunden gestartet wird. Unter einmal die Minute wäre vermutlich gut.
- Die Schleife arbeitet dann einmal alle Datenpunkte der Zeitpläne ab und schaut ob es etwas ein- oder Ausschalten muss. Und tut eben genau dieses
Verbesserungen dann in der Stufe 2:
- Die Datenpunkte packst du nicht alle einzeln in dein Blockly sondern du nimmst einen Selektor der pauschal alle Datenpunkte unterhalb eines Pfades abarbeitet:
state[id=0_userdata.0.Visualisierung.Projekte.FireMikrowelle.Playlist.*]
Der Stern darf weiter vorne stehen und danach etwas wie
xxx.*.Zeitplan
folgen so das du für jedes Fenster ein Verzeichnis machen könntest.- Auch Triggern auf den Selektor wäre möglich.
Ich habe bei mir eine Statusanzeige die alle 10 Sekunden durchwechselt. Die Schleife prüft ob es etwas zu melden gibt und zeigt die Meldungen jeweils für 10 Sekunden an (Brief, Paket, Wassermelder, Timer, Kühlschranktür usw.).
Zusätzlich Triggere ich auf die Meldungen und wenn eine auf "Wahr" wechselt wird diese sofort angezeigt, danach geht es weiter gemäß Schleife.