rule "Sommerzeit?"
when
Time cron "0 0 5 * * ? *" or
System started
then
var offset_txt = OffsetDateTime.now().toString().replace("+","#").split("#").get(1)
if (offset_txt =="01:00")
Sommerzeit.sendCommand(OFF)
else
Sommerzeit.sendCommand(ON)
end
Harka hat geschrieben: ↑3. Jun 2024 16:23
Moin,
die Zeit (06:00 und 09:00) wird so als LocalTime vorliegen.
Mit Blockly habe ich folgenden Code erstellt (und getestet)
rule "Sommerzeit?"
when
Time cron "0 0 5 * * ? *" or
System started
then
var offset_txt = OffsetDateTime.now().toString().replace("+","#").split("#").get(1)
if (offset_txt =="01:00")
Sommerzeit.sendCommand(OFF)
else
Sommerzeit.sendCommand(ON)
end
Überlegt habe ich sowas auch schon. Das würde ich aber erst machen, wenn sich keine Lösung findet. Die muss es aber sicher geben.
Also, worum geht es denn wirklich?
Erkennung ob Sommerzeit oder keine Sommerzeit?
Oder doch eher darum, dass openHAB jederzeit korrekt rechnen soll?
Die wichtigste Frage in dem Zusammenhang wäre, ob denn die Zeit innerhalb openHAB korrekt ist. Das sollte z.B. im Log erkennbar sein. Stimmt die Zeit hier? Dann musst auch die Berechnung der Zeit korrekt funktionieren (wenn die Formel bzw. wie verwendete Funktion die richtige ist).
Stimmt die Zeit im Log nicht, wäre mein Tipp, die Zeitzone über die EXTRA_JAVA_OPTS explizit zu setzen (/etc/default/openhab ist Dein Freund)
Stimmt die Zeit im Log, ist der Aufruf mit .toZDT vermutlich falsch. Meine Vermutung wäre, dass Du .toLocalDateTime verwenden musst (Achtung, die Funktion kann in ECMA anders heißen, ich nutze ECMA bisher nicht aktiv...)
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)
ich habe den Fehler selber gefunden.
Openhab hat eine eigene Zeitzone. Nicht die des Betriebssystems. Das war mir nicht bekannt.
Nachdem ich über openhabian-config die ZEitzone richtig eingestellt hatte funktioniert alles wie gewünscht. Blöder Fehler!
Ich hatte mit meiner neuen openHAB 5 Installation (openhabian) dasselbe Problem. In /etc/default/openhab war Europe/London als Zeitzone eingestellt. Warum das bei einer Neuinstallation so gemacht wird, erschließt sich mir nicht. Ich hätte verstanden, wenn bei der Installation die Zeitzone des Rechners verwendet würde. Sollte m. E. sowieso die Voreinstellung sein. Aber London? Warum?
Das Thema wurde schon mehrfach diskutiert, sowohl hier als auch im englischen Forum, wo ja viele Maintainer unterwegs sind. Soweit ich weiß, ist das bei OH 5.0 und OH 5.0.1 der Fall, vielleicht ist es ja beim nächsten Update wieder ... anders.
Übrigens ist das die Java-Zeit, auch wenn es eine openhab Konfig-Datei ist. (Daneben gibt es noch die linux- und die OH-Zeit).
Wie man das Problem updatesicher abstellen kann, hat Udo hier im weiteren verlauf aufgezeigt: