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...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
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!