NEWS
Javascript Problem nach Neustart
-
Hi zusammen,
ich habe ein paar Scripte die zeitgesteuert z.B. die Rollos steuern.
Beispiel:
function Wert_Stunden(x) { return x.slice(0, 2); } function Wert_Minuten(x) { return x.slice(3, 5); } function unSchedule(schedule) { if (schedule) { clearSchedule(schedule); schedule = null; } } on({id: new RegExp('javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Aktiv' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Modus' + "|" + 'javascript\\.0\\.Rollo\\.Rollo_Schlafzimmer_Timer1_Uhrzeit' + "|" + 'javascript\\.0\\.System\\.Script_Restarter'), change: "ne"}, function (obj) { if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Aktiv").val == 1) { var uhrzeit = getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Uhrzeit").val; unSchedule(Cron1_Rollo_Schlafzimmer); Cron1_Rollo_Schlafzimmer = schedule(Wert_Minuten(uhrzeit) + ' ' + Wert_Stunden(uhrzeit) + ' * * *', function () { if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'rauf') { setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 0); } else if (getState("javascript.0.Rollo.Rollo_Schlafzimmer_Timer1_Modus").val == 'runter') { setState("zwave2.0.Node_011.Multilevel_Switch.targetValue", 99); } }); } else { unSchedule(Cron1_Rollo_Schlafzimmer); } });
Die Trigger sind Datenpunkte die per VIS gesetzt werden.
Das Problem ist, dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird
(erst wieder wenn ich einen der Trigger per VIS verändere).
Als Behelfslösung habe ich mir einen kleines Miniscript erzeugt, dass ich nach Neustart einmal ausführe (Trigger: Script_Restarter).
Dieses Mini-Script habe ich überall in den problematischen Scripten als Trigger hinzugefügt. Manchmal vergesse ich aber nach einem
Neustart das Script zu starten. Dann funktioniert natürlich "nichts"...Bin ich der einzige der solche Probleme hat? Hat jemand eine elegantere Lösung für das Problem?
Ich bin auch offen für allgemeine Script-Opimierungen.Gruß
Christian -
@Chris_78 sagte:
dass das Skript nach einem ioBroker oder Javascript-Adapter Neustart nicht mehr getriggert wird
Du meinst, dass schedule() nicht mehr ausgeführt wird ? Das liegt daran, dass schedule() nur innerhalb des Triggers erzeugt wird und nicht beim Script start. Verwende eine Funktion, die bei Script start und im Trigger aufgerufen wird.
-
Danke dir. Manchmal sieht man die einfachen Lösungen nicht.