NEWS
[gelöst] clearSchedule vor definition vom Schedule im Script
-
Hallo Zusammen,
wollte mir eigentlich gerade eine "Zeitschaltuhr" bauen.
Jedes mal wenn eine neue Zeit eingetragen wird soll der alte Timer/Schedule beendet werden und ein neuer mit den aktualisierten Zeiten gestartet werden.
Leider funktioniert das jedoch nicht, ich kann den Schedule nicht beenden mit clearSchedule(..); bevor ich im Script nicht den Schedule ausgelöst habe. Also clearSchedule muss immer hinter dem erstellen Schedule im Script
Variable = schedule(…...);
stehen.
Kriege immer "clearSchedule() => invalid handler" im Log wenn ich versuche als erstes im Script den "alten noch aktiven" Schedule zu beenden.
Gibt es keine Möglichkeit dem Schedule eine eindeutige ID zu verpassen und diese dann einfach zu beenden oder ähnliches?
Wie kann ich das elegant lösen?
Stehe gerade auf dem Schlauch..
Gruß
on ({id: "javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown", change: "ne"}, function () { clearSchedule(RolloWZWDDownSched); var RolloWZWDDown=getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayMDown").val + ' ' + getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown").val + ' * * *'; var RolloWZWDDownSched = schedule(RolloWZWDDown, cb(function(){ log("Rollo Wohnzimmer Schedule ausgelöst "); clearSchedule(RolloWZWDDownSched); })); log('Schedule gesetzt'); });
-
Die Timer-Variable darf nicht lokal sein, sondern muss global (außerhalb von Funktionen) deklariert werden.
var RolloWZWDDownSched = null; on ({id: "javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown", change: "ne"}, function () { if(RolloWZWDDownSched) clearSchedule(RolloWZWDDownSched); var RolloWZWDDown=getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayMDown").val + ' ' + getState("javascript.0.Rollosteuerung.Wohnzimmer.WeekDayHDown").val + ' * * *'; RolloWZWDDownSched = schedule(RolloWZWDDown, function() { log("Rollo Wohnzimmer Schedule ausgelöst "); clearSchedule(RolloWZWDDownSched); }); log('Schedule gesetzt'); });
-
Herrlich, das klapp ja wunderbar!
Vielen Dank!
Gruß
-
Eine schedule variable hat immer einen Wert ungleich null wenn gesetzt. Also einfach ein "if (scheduleid) clearSchedule" machen und bei auslösen oder clear die Variable auf null setzen. Somit weiß man über den variableninhalt ob ein schedule läuft oder nicht.