NEWS
Schedules nach Strommausfall off ?!?!
-
Hallo,
hatte Gestern einen Stromausfall, nach dem starten waren die Timer bzw. die Schedules anscheinent aus.
denn Abends gingen die Rollläden nicht runter….
// Licht_Jens_Aus_Abends_SUN-THU const idWeckzeitTimerLichtJensAusAbendsSUNTHU = ".Meine_Geraete.P.5_Set.Timer_Licht_Jens_Aus_Abends_SUN-THU"/*Timer_Licht_Jens_Aus_Abends_SUN-THU_*/; // Weckzeit als String "hh:mm" var zeitTimerLichtJensAusAbendsSUNTHU; var timerTimerLichtJensAusAbendsSUNTHU = null; on(idWeckzeitTimerLichtJensAusAbendsSUNTHU, function(dp) { zeitTimerLichtJensAusAbendsSUNTHU = getState(".Meine_Geraete.P.5_Set.Timer_Licht_Jens_Aus_Abends_SUN-THU"/*Timer_Licht_Jens_Aus_Abends_SUN-THU_*/).val; log("Geänderte Zeit LichtJensAusAbendsSUNTHU: " + zeitTimerLichtJensAusAbendsSUNTHU); var tTimerLichtJensAusAbendsSUNTHU = dp.state.val.split(':'); clearSchedule(timerTimerLichtJensAusAbendsSUNTHU); timerTimerLichtJensAusAbendsSUNTHU = schedule(tTimerLichtJensAusAbendsSUNTHU[1] + ' ' + tTimerLichtJensAusAbendsSUNTHU[0] + ' * * 0,1,2,3,4', function() { if (getState(".Meine_Geraete.P.5_Set.Timer_Licht_Jens_Aus_Abends_SUN-THU_Aktiv"/*Timer_Licht_Jens_Aus_Abends_SUN-THU_Aktiv_*/).val === true){ log(tTimerLichtJensAusAbendsSUNTHU + " Licht Jens Aus"); setState(".Meine_Geraete.P.3_OG.1_EZ.Lampe_2_Jens"/*Lampe_2_Jens_*/, false); } }); });
beim letzten mal hatte ich es ebenso, und musste erst alle Zeiten wieder neu setzen, damit die Schedules neu geschreiben werden?
Wie kann ich das verhindern, bzw. bewirken, dass die beim Neustart auch gleich angelegt werden?
Danke
Gruß Jens
-
Was genau war denn leer? Die States?
Nutzt du Redis?
-
Leer war nichts.
Alle States waren wie eingestellt.
Nur anscheinend waren die Schedules durch den Neustart gelöscht und somit fährt der Script ja
bei der gewünschten Zeit nicht ab.
Was sind Redis?
-
Ok also waren die Werte noch da.
Neustart heißt für mich dann das alle Skripte neu gestartet werden. Die sollten doch die schedules neu setzen …
Oder was genau meinst du mit „du musstest die schedules selbst neu setzen“?!
-
Die Zeiten für die Schedules setzte ich ja mittels Datenpunkt über vis.
wenn sich diese Ändern, werden die Schedules gelöscht und neu gesetzt mit den aktuellen Werten.
Anscheinend werden beim Neustart des ioBrokers die Scripte dazu zwar gestartet, aber die alten Schedules
sind alle weg.
Da aber die Werte der Datenpunkte sich nicht geändert haben, werden die schedules nicht gelöscht und neu geschrieben.
Ich hätte gedacht, die Schedules sind ebenfalls fix irgendwo hinterlegt und sind dann nach Stromausfall, Neustart trotzdem
noch vorhanden. ist aber anscheinend nicht so.
wie kann ich das denn bewirken, dass die entweder erhalten bleiben beim Neustart von iobroker oder beim Neustart
alle neu gesetzt werden?
Danke
-
Die Wandlung vom Datenpunktwert in ein Schedule muss auch beim Skriptstart erfolgen. Dazu packt man es in eine Funktion, die sowohl vom Datenpunkt-Trigger als auch bei Skriptstart aufgerufen wird.
// Licht_Jens_Aus_Abends_SUN-THU const idWeckzeitTimerLichtJensAusAbendsSUNTHU = ".Meine_Geraete.P.5_Set.Timer_Licht_Jens_Aus_Abends_SUN-THU"/*Timer_Licht_Jens_Aus_Abends_SUN-THU_*/; // Weckzeit als String "hh:mm" var timerTimerLichtJensAusAbendsSUNTHU = null; function setSched(val) { log("Geänderte Zeit LichtJensAusAbendsSUNTHU: " + val); var tTimerLichtJensAusAbendsSUNTHU = val.split(':'); clearSchedule(timerTimerLichtJensAusAbendsSUNTHU); timerTimerLichtJensAusAbendsSUNTHU = schedule(tTimerLichtJensAusAbendsSUNTHU[1] + ' ' + tTimerLichtJensAusAbendsSUNTHU[0] + ' * * 0,1,2,3,4', function() { if (getState(".Meine_Geraete.P.3_OG.1_EZ.Lampe_2_Jens"/*Lampe_2_Jens_*/).val) { log("Licht Jens Aus"); setState(".Meine_Geraete.P.3_OG.1_EZ.Lampe_2_Jens"/*Lampe_2_Jens_*/, false); } }); } setSched(getState(idWeckzeitTimerLichtJensAusAbendsSUNTHU).val); // Skripstart on(idWeckzeitTimerLichtJensAusAbendsSUNTHU, function(dp) { setShed(dp.state.val); });
-
ok, jetzt wo Du es sagst, klingt es logisch :roll:
das probiere ich mal.
Ich komme vom Programmieren eher vom Arduino, und meine immer dass es dann ständig wieder ausgeführt wird….
Danke, melde mich wenn ich es hinbekommen habe.
Gruß jens
-
hat sich unten noch ein kleiner Tippfehler eingeschlichen…
setShed(dp.state.val);
sollte wohl
setSched(dp.state.val);
heißen.
nun scheint es aber gut zu laufen.
Danke schön
Gruß Jens