Sommerzeit-Problem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Nosch
Beiträge: 19
Registriert: 16. Jan 2024 11:19
Answers: 0

Sommerzeit-Problem

Beitrag von Nosch »

Hi,
ich habe in einem OH4-Script (ECMAScript 262 Edition 11) folgende Bedingung:

Code: Alles auswählen

if (time.toZDT().isBetweenTimes('6:00', '9:00'))
   ...
Im Winter funktionierts, im Sommer (MESZ) leider nicht (eine Stunde Versatz).

Ich suche jetzt schon geraume Zeit, aber ich finde nicht, wie ich die Sommerzeit berücksichtigen kann.

Für Hinweise die zum Ziel führen wäre ich echt dankbar.


Viele Grüße
Norbert
openHAB 4.1.2

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Sommerzeit-Problem

Beitrag von Harka »

Moin,
die Zeit (06:00 und 09:00) wird so als LocalTime vorliegen.
Mit Blockly habe ich folgenden Code erstellt (und getestet)

Code: Alles auswählen

if ((time.ZonedDateTime.now()).isBetweenTimes((time.toZDT('06:00:00')), (time.toZDT('09:00:00')))) {
.....
}
alternativ bietet sich hier auch folgende Variante an

Code: Alles auswählen

tStunde = ((time.ZonedDateTime.now()).hour());
if (tStunde >= 6 && tStunde < 9) {
.....
}

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Sommerzeit-Problem

Beitrag von nw378 »

Ich habe keine Script-Erfahrung, daher kann ich dir nur einen Denkansatz als Rules DSL anbieten.

Ich habe manche Funktionen, die nur im Sommer, und andere, die nur im Winter laufen sollen.

Dafür habe ich mir einen Schalter gebastelt:

Code: Alles auswählen

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
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

Nosch
Beiträge: 19
Registriert: 16. Jan 2024 11:19
Answers: 0

Re: Sommerzeit-Problem

Beitrag von Nosch »

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)

Code: Alles auswählen

if ((time.ZonedDateTime.now()).isBetweenTimes((time.toZDT('06:00:00')), (time.toZDT('09:00:00')))) {
.....
}
alternativ bietet sich hier auch folgende Variante an

Code: Alles auswählen

tStunde = ((time.ZonedDateTime.now()).hour());
if (tStunde >= 6 && tStunde < 9) {
.....
}
Hi,
funktioniert leider nicht:
Die Log-Ausgabe (aufgerufen um 8:40 Uhr MESZ) ergibt folgendes:

Code: Alles auswählen

  console.info(time.toZDT().isBetweenTimes('8:00', '9:00') + " - " + time.toZDT().isBetweenTimes(time.toZDT('08:00:00'), time.toZDT('09:00:00')));
false - false

DieLog-Ausgabe für:

Code: Alles auswählen

  console.info("################: between: " + time.ZonedDateTime.now().hour());
7

Die Ausgabe auf Betriebssystem-Ebene (openhabian) ist korrekt:
Tue Jun 4 08:42:49 AM CEST 2024

Viele Grüße
Norbert
openHAB 4.1.2

Nosch
Beiträge: 19
Registriert: 16. Jan 2024 11:19
Answers: 0

Re: Sommerzeit-Problem

Beitrag von Nosch »

nw378 hat geschrieben: 3. Jun 2024 16:38 Ich habe keine Script-Erfahrung, daher kann ich dir nur einen Denkansatz als Rules DSL anbieten.

Ich habe manche Funktionen, die nur im Sommer, und andere, die nur im Winter laufen sollen.

Dafür habe ich mir einen Schalter gebastelt:

Code: Alles auswählen

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.

Viele Grüße
Norbert
openHAB 4.1.2

EmptySoft
Beiträge: 247
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Sommerzeit-Problem

Beitrag von EmptySoft »

Nosch hat geschrieben: 3. Jun 2024 11:05 Hi,
ich habe in einem OH4-Script (ECMAScript 262 Edition 11) folgende Bedingung:

Code: Alles auswählen

if (time.toZDT().isBetweenTimes('6:00', '9:00'))
   ...
Im Winter funktionierts, im Sommer (MESZ) leider nicht (eine Stunde Versatz).

Ich suche jetzt schon geraume Zeit, aber ich finde nicht, wie ich die Sommerzeit berücksichtigen kann.
aktuelle Zeit (in der Zeitzone Wien)

Code: Alles auswählen

now(ZoneId.of("Europe/Vienna"))
also zum Beispiel

Code: Alles auswählen

if(now(ZoneId.of("Europe/Vienna")).getHour >= 6 && now(ZoneId.of("Europe/Vienna")).getHour <= 9)
(geht sicher mit between auch ...)
BYe
Harald

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Sommerzeit-Problem

Beitrag von udo1toni »

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

Nosch
Beiträge: 19
Registriert: 16. Jan 2024 11:19
Answers: 0

Re: Sommerzeit-Problem

Beitrag von Nosch »

Hi zusammen,

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!

Vielen Dank an alle für die Unterstützung!

Viele Grüße
Norbert
openHAB 4.1.2

Antworten