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 -
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.
-
@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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden