NEWS
[gelöst] Parallele Cron-Trigger über Variablen
-
Hallo,
seit einiger Zeit versuche ich mich an einer Heizungssteuerung im Schlaf- und Wohnzimmer. Ich habe Temperaturen für morgens, tagsüber, abends und Abwesenheit definiert, die jeweils zu definierten Zeiten über einen Cron-Trigger ausgelöst werden. Die Zeiten für die Tagestemperatur stehen fest im Blockly-Script drin. Exemplarisch hier für das Wohnzimmer, für das Schlafzimmer sieht es identisch aus.Diese Steuerung soll nun flexibler werden, indem die Uhrzeiten in einer Visu eingestellt werden und somit als Variablen an den Trigger übergeben werden sollen. Testweise habe ich das für das Schlafzimmer schon umgesetzt.
Jetzt mein Problem: Wenn ich das Skript abends bearbeite und dann die Zeit für schnelle Tests anpasse, läuft es auch. Wenn ich daraufhin die Uhrzeit auf den richtigen Wert morgens stelle, funktioniert es nicht mehr. Das Skript für das Wohnzimmer wird um 7:15 Uhr abgearbeitet, aber im Schlafzimmer passiert nichts.
Meine Vermutung war zuerst, dass die Ausführung zweier Cron-Trigger auf der gleichen Uhrzeit nicht funktioniert (oder nicht auf dem Raspberry 3b+, den ich nutze). Dann dürfte es doch aber auch nicht funktionieren, wenn ich anstelle von Variablen die fest definierten Uhrzeiten nutze.Ich wäre dankbar, wenn jemand eine Lösung für mein Problem hat. Ich ärgere mich damit mittlerweile schon etliche Tage herum.
-
@metamorph Du musst die Werte nach String konvertieren
-
@fastfoot Das hatte ich auch schon probiert, leider bleibt das Problem in der gleichen Form bestehen.
Am Datentyp kann es zudem eigentlich nicht liegen. Die Zeiten habe ich bereits alle als Objekte des Datentyps String definiert, um möglichst das type casting als eine Fehlerquelle auszuschließen. Außerdem funktioniert das Skript, wenn ich die Zeit zum Beispiel nur 5min vor datiere, um die Funktionalität zeitnah überprüfen zu können. -
@metamorph Hänge deine cron-Regel an einen Debug Baustein und lass das laufen, dann siehst du genau zu was das übersetzt wird
-
@fastfoot Okay, meinst Du das so?
10:09:43.890 info javascript.0 (653) Stop script script.js.Test.Whatsapp 10:09:43.908 info javascript.0 (653) Start javascript script.js.Test.Whatsapp 10:09:43.917 info javascript.0 (653) script.js.Test.Whatsapp: 0 9 10 * * 1,2,3,4,5,6 10:09:43.917 info javascript.0 (653) script.js.Test.Whatsapp: registered 0 subscriptions and 0 schedules
(Die Wochentage habe ich jetzt nur um Samstag erweitert, damit ich das gerade mal testen kann.)
-
@metamorph
Wenn um 10:09:00 Uhr getriggert werden soll, ist der Skript-Start um 10:09:44 Uhr zu spät. -
@paul53 Das Skript beinhaltet in diesem Fall nur den Debug-Block, daher ist die Startzeit hier egal. Wenn ich es richtig verstanden habe, dann sollte ich die Cron-Regel nur an den Debug-Block hängen, damit ich den Output davon zeigen kann.
Vermutlich hatte ich mich nicht richtig ausgedrückt. Das Skript selbst läuft, wie die Bilder unten zeigen. Aber eben nur, wenn ich die Zeit zu Testzwecken z.B. auf 11:48 Uhr stelle.
Wenn ich es aber auf die richtige Uhrzeit stelle, damit es parallel (also zur gleichen Uhrzeit) zum Wohnzimmer läuft, dann löst es nicht aus. Hier noch das Skript vom Wohnzimmer, das mit der im Skript definierten Zeit läuft und immer auslöst.
-
@metamorph sagte in [Problem] Parallele Cron-Trigger über Variablen:
Wenn ich es richtig verstanden habe, dann sollte ich die Cron-Regel nur an den Debug-Block hängen, damit ich den Output davon zeigen kann.
ja, so war es gemeint und sieht eig. gut aus. Mir ist nicht bekannt dass gleiche Uhrzeiten sich stören, hängt aber bestimmt auch von deiner Hardware ab. Stelle doch mal einen Versatz von ein paar Sekunden ein, beim Testen auch für beide Zimmer, damit du siehst ob es an der gleichen Uhrzeit liegt
-
@fastfoot Hab das so getestet und es lief. Dann habe ich es nochmal probiert, indem ich beiden Triggern die gleichen Zeiten zugewiesen habe und das ging diesmal auch. Mir erschließt sich einfach nicht, warum das beim Testen läuft, aber beim "Normalbetrieb" nicht. Da bleibt mir gerade wohl kaum etwas anderes, als zu warten, ob das jetzt dauerhaft läuft. Ich hätte dann zwar keine Ahnung warum, obwohl ich nichts geändert habe, aber dann funktioniert es wenigstens.
Sollte es morgen/Montag tatsächlich funktionieren, setze ich das Thema hier auf gelöst. Zumindest schonmal vielen Dank für die Hilfe.