NEWS
Sonnenstände
-
Dieses Script
schedule({astro: 'sunset', shift: 30}, function () { log("30 minutes after sunset!"); setStateEnum('enum.functions.Sonnenuntergang', true); }); |.
hatte einst wunderbar funktioniert. Aber seit geraumer Zeit reagiert es nicht mehr auf den Sonnenuntergang.
Ich habe alle möglichen Threads gelesen gier aber keiner lieferte mir eine Lösung. Was ist da passiert? Warum funkt das nicht mehr? -
@werner-schäffer sagte in Sonnenstände:
Was ist da passiert?
hast du irgendetwas verändert?
@werner-schäffer sagte in Sonnenstände:
Warum funkt das nicht mehr?
warum funktioniert es nicht mehr?
- triggert es nicht mehr?
- kommt gar keine log Ausgabe?
- stellt es die enum nicht auf true?
-
@werner-schäffer sagte: hatte einst wunderbar funktioniert.
Woher kommt die Funktion setStateEnum()? Unter "enum.functions" gibt es keine Datenpunkte.
-
es triggered nicht mehr, es gibt auch keinen Log-Eintrag.
An der Konfiguration habe ich nichts geändert, aber vermutlich neue Versionen von iobroker installiert.
@paul53
die Funktion setStateEnum() habe ich selbst erstellt:function setStateEnum(name, value) { let items = getObject(name); for (var i in items.common.members) { const item = items.common.members[i]; setState(item + '.STATE', value); } }
-
@werner-schäffer was zeigt
log(getAstroDate('sunset'))
? -
@fastfoot said in Sonnenstände:
log(getAstroDate('sunset'))
18:22:54.435 info javascript.0 (9613) script.js.common.Zeitsteuerung.test: Wed Oct 13 2021 18:40:40 GMT+0200 (Central European Summer Time)
-
@werner-schäffer Ist der Debug-Mode auch ausgeschaltet? Was zeigt denn das Log beim Skriptstart wenn Du Verbose einschaltest?
-
Um wieder sinnvolle Ergebnisse zu bekommen müssen wir jetzt mal einen Tag abwarten. ES gibt da nämlich noch eine Besonderheit: nach einem Neustart des Scripts funktioniert der schedule('sunset') genau einmal und dann nicht mehr. Ich habe andere Scripte mit schedule('Uhrzeit') die funktionieren ohne Problem immer wieder.
Mal abwarten, aber wie gesagt es hatte einst mal funktioniert und dann irgendwann nicht mehr. Hier im Forum haben auch schon Andere von diesem Problem berichtet. Ich habe mich noch nicht so richtig reingefuchst in iobroker aber es scheint mir da ein internes Problem zu geben.
Trotzdem danke für die Hilfe bisher. Falls es keine Lösung gibt, werde ich auf CCU3 oder crontab ausweichen, was ich eigentlich vermeiden wollte, da ich lieber jegliche Steuerung in iob haben wollte.
-
@werner-schäffer sagte in Sonnenstände:
aber es scheint mir da ein internes Problem zu geben.
das kann ich nicht nachvollziehen. Hier werden die Schedules nachts um 00:00Uhr(UTC) jeweils neu berechnet und triggern dann zum gewünschten Zeitpunkt. Getestet mit Stable und Beta Versionen des JS Adapters. Mit der Verbose Einstellung kann man das sehr schön sehen
-
@fastfoot
ein schedule zu einer bestimmten Uhrzeit funktioniert auch immer, nur eben der sunset nicht -
nur mal so eine Idee:
könnte es sein dass bei der 0:00 Uhr Aktion der sunset dem Vortag zugeordnet wird und deshalb nie getriggert wird?
-
@werner-schäffer sagte in Sonnenstände:
nur mal so eine Idee:
könnte es sein dass bei der 0:00 Uhr Aktion der sunset dem Vortag zugeordnet wird und deshalb nie getriggert wird?
das würde man sehen wenn wir deine Verbose Einträge hätten
-
@fastfoot
das fragliche Script ist auf Verbose, aber es ist nichts zu sehen in den Logs -
Ich bin bereit das Problem zu anaqlysieren, und wie gesagt auch Andere haben dieses Problem schon angesprochen.
.Ich mache um 1:20 per Conjob eine Offline-Sicherung:
iobroker stop iobroker backup iobroker start
ich habe dies mal für diese Nacht deaktiviert um das mal auszuschließe -ich werde da mal rumprobieren.
-
@werner-schäffer sagte in Sonnenstände:
Ich bin bereit das Problem zu anaqlysieren, und wie gesagt auch Andere haben dieses Problem schon angesprochen.
.Ich mache um 1:20 per Conjob eine Offline-Sicherung:
iobroker stop iobroker backup iobroker start
ich habe dies mal für diese Nacht deaktiviert um das mal auszuschließe -ich werde da mal rumprobieren.
ahhh, da kommt die Wahrheit so langsam ans Licht
Du hast doch Recht, das Problem liegt beim iobroker. Die Datumsberechnung erfolgt nicht korrekt wenn das UTC Datum ungleich dem lokalen Datum ist, während der Sommerzeit also zwischen 00:00 und 02:00Uhr. Durch den Neustart des iobroker in dieser Zeit wird der Schedule zur Neuberechnung um 02:00Uhr verworfen, die beim Start des Skriptes erfolgende Neuberechnung ergibt dann jedoch nicht 02:00Uhr dieses Tages, sondern 1 Tag später. Als Ergebnis werden dann sämtliche Astrozeiten nicht getriggert.
Workaround bis zum Fix: Verlagere dein Backup auf eine Uhrzeit später als 02:00Uhr
-
ich hatte den Backup letzte Nacht deaktiviert, trotzdem wurde nicht getriggert heute zum Sonnenuntergang, sorry.
"as times go by" - Datum und Uhrzeit sind in der Programmierung immer eine große Herausforderung, habe selbst leidvolle Erfahrungen gemacht: "heute hier morgen dort"
Ich helfe gerne das Problem zu lokalisieren, also sag Bescheid falls ich was machen kann.
-
@werner-schäffer sagte in Sonnenstände:
ich hatte den Backup letzte Nacht deaktiviert, trotzdem wurde nicht getriggert heute zum Sonnenuntergang, sorry.
"as times go by" - Datum und Uhrzeit sind in der Programmierung immer eine große Herausforderung, habe selbst leidvolle Erfahrungen gemacht!
es bleibt das Log, mit Herunterladen bekommst Du alles von Heute
-
also stop, backup und restart waren ausgeschaltet und das steht im Logfile :
2021-10-16 02:00:00.000 - ESC[32minfoESC[39m: javascript.0 (6626) script.js.common.Zeitsteuerung.Sonnenuntergang: setTimeout(ms=59631722)
2021-10-16 02:00:00.001 - ESC[32minfoESC[39m: javascript.0 (6626) script.js.common.Zeitsteuerung.Sonnenuntergang: schedule(astro=sunset, offset=0)beachte mal die Uhrzeit, vielleicht hilft das ja
-
@werner-schäffer sagte in Sonnenstände:
also stop, backup und restart waren ausgeschaltet und das steht im Logfile :
2021-10-16 02:00:00.000 - ESC[32minfoESC[39m: javascript.0 (6626) script.js.common.Zeitsteuerung.Sonnenuntergang: setTimeout(ms=59631722)
2021-10-16 02:00:00.001 - ESC[32minfoESC[39m: javascript.0 (6626) script.js.common.Zeitsteuerung.Sonnenuntergang: schedule(astro=sunset, offset=0)beachte mal die Uhrzeit, vielleicht hilft das ja
das wollte ich sehen und es bedeuted dass der Schedule für ca. 18:33 erstellt wurde, so wie zu erwarten war. Warum der Timeout dann doch nicht ausgelöst hat findest Du evtl. im LOG. Mit Backup wären die Zeiten für heute Nacht 02:00 gesetzt worden. Ein weiterer Stop scheidet jedoch als Fehler aus da dann der Schedule beim Restart wieder neu (und auch richtig) berechnet worden wäre.
Es lohnt also auf jeden Fall das Backup zu verschieben, da damit eine Fehlerquelle ausscheidet
-
Hab auch das Problem. Nach langer Suche hab ich es über den weg gelöst: Link
Ist zwar nur zwischen Lösung aber funktioniert.