Zeitstempel DateTime +2:00

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
merlindata
Beiträge: 33
Registriert: 24. Jan 2020 08:15
Answers: 1
Wohnort: Wien

Zeitstempel DateTime +2:00

Beitrag von merlindata »

Hallo zusammen,

ich sehe schon wieder den Wald vor lauter Bäumen nicht. Ich hab schon mit hilfe der Suche einiges gefunden, jedoch komme ich auf keinen grünen Zweig :roll:

Ich habe einen Zeitstempel als DateTime _Item mit dem Wert (2022-04-16T17:30:19+2:00), lokale Zeit ist aber 19:30.
Wie kann ich dieses Datum und Uhrzeit in der Sitemap (OH 3.1) richtig (16.04.2022 19.30) anzeigen lassen?

Danke im Voraus!
von udo1toni » 17. Apr 2022 12:08
Symptome behandeln ist eigentlich nie eine gute Idee. Du kannst versuchen, ob Du mit dem Profile Offset etwas ausrichten kannst, aber ich fürchte, das wird eher nur für gewöhnliche Zahlen geeignet sein. Es wird also eher auf ein JavaScript Script hinauslaufen, welches Du dann als Profile einbindest.
Über eine Rule kannst Du den Inhalt eines Items zwar ändern, aber bei der nächsten Änderung müsste die Rule ja wieder auslösen. Da die Rule selbst aber das Item ändert, hättest Du eine Endlosschleife. Also müsstest Du ein zweites Item dafür anlegen.

Auszug aus meinem Log:

Code: Alles auswählen

2022-04-17 11:43:33.155 [vent.ItemStateChangedEvent] - Datum changed from 2022-04-17T11:41:33.152+0200 to 2022-04-17T11:43:33.152+0200
2022-04-17 11:45:33.155 [vent.ItemStateChangedEvent] - Datum changed from 2022-04-17T11:43:33.152+0200 to 2022-04-17T11:45:33.152+0200
Mein Datumsitem vom Typ DateTime zeigt also die korrekte lokale Zeit an und zeigt zusätzlich an, um wieviel die Zeit von UTC abweicht, während bei Dir offensichtlich UTC plus Abweichung angezeigt wird. Mein erster Verdacht wäre eine Konfiguration im Shelly. openHAB behandelt alle Datums/Uhrzeitangaben gleich.

konkretes Rechnen mit DateTimeType:

Code: Alles auswählen

rule "plus zwei Stunden"
when
    Item MeinDateTimeInput changed
then
    if(!(MeinDateTimeInput.state instanceof DateTimeType))
        return;
    val theDate = (MeinDateTimeInput.state as DateTimeType).getZonedDateTime
    MeinDateTimeOutput.postUpdate(theDate.plusHours(2))
end
Die Rule triggert, wenn sich der Status des Eingangsitems ändert Daraufhin prüft die Rule, ob der Status vom Typ DateTimeType ist. Ist das nicht der Fall, bricht die Rule ab (da es sonst zu einer nullPointerException kommt).
Ist alles schick, so setzt es die lokale Konstante auf den Zeitstempel, allerdings als ZonedDateTime, das ist das Java Time Äquivalent.
Anschließend wird das Ausgangsitem mit diesem Wert beschrieben, allerdings werden dabei zwei Stunden aufaddiert.

In JavaScript wird das ähnlich funktionieren, da müsste ich aber erst mal stöbern. Aber wie gesagt, vermutlich liegt hier ein Konfigurationsfehler im Shelly vor. Es wäre weitaus sinnvoller, an dieser Stelle anzusetzen.
Gehe zur vollständigen Antwort

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

Re: Zeitstempel DateTime +2:00

Beitrag von udo1toni »

Wenn openHAB korrekt konfiguriert ist, sollte die Uhrzeit direkt richtig angezeigt werden. Ist das nicht so?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

merlindata
Beiträge: 33
Registriert: 24. Jan 2020 08:15
Answers: 1
Wohnort: Wien

Re: Zeitstempel DateTime +2:00

Beitrag von merlindata »

Wie erkenne ich ob es richtig konfiguriert ist?
Zeitstempel zb. vom Astro-Binding werden korrekt angezeigt, Uhrzeit der Logfiles ist auch richtig. Der falsche Zeitstempel kommt aber von einem Shelly Motion.

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

Re: Zeitstempel DateTime +2:00

Beitrag von udo1toni »

Wenn die Zeit im Log stimmt, ist das schon mal ein gutes Zeichen. Bleibt die Frage, warum die Zeit dann falsch angezeigt wird. Auf Anhieb fällt mir da leider erst mal nicht s ein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

merlindata
Beiträge: 33
Registriert: 24. Jan 2020 08:15
Answers: 1
Wohnort: Wien

Re: Zeitstempel DateTime +2:00

Beitrag von merlindata »

...anders gefragt - wie kann ich per Rule zu dem DateTime _Item 2 Stunden addieren? Wenn Ja - Wie?

Danke und LG

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

Re: Zeitstempel DateTime +2:00

Beitrag von udo1toni »

Symptome behandeln ist eigentlich nie eine gute Idee. Du kannst versuchen, ob Du mit dem Profile Offset etwas ausrichten kannst, aber ich fürchte, das wird eher nur für gewöhnliche Zahlen geeignet sein. Es wird also eher auf ein JavaScript Script hinauslaufen, welches Du dann als Profile einbindest.
Über eine Rule kannst Du den Inhalt eines Items zwar ändern, aber bei der nächsten Änderung müsste die Rule ja wieder auslösen. Da die Rule selbst aber das Item ändert, hättest Du eine Endlosschleife. Also müsstest Du ein zweites Item dafür anlegen.

Auszug aus meinem Log:

Code: Alles auswählen

2022-04-17 11:43:33.155 [vent.ItemStateChangedEvent] - Datum changed from 2022-04-17T11:41:33.152+0200 to 2022-04-17T11:43:33.152+0200
2022-04-17 11:45:33.155 [vent.ItemStateChangedEvent] - Datum changed from 2022-04-17T11:43:33.152+0200 to 2022-04-17T11:45:33.152+0200
Mein Datumsitem vom Typ DateTime zeigt also die korrekte lokale Zeit an und zeigt zusätzlich an, um wieviel die Zeit von UTC abweicht, während bei Dir offensichtlich UTC plus Abweichung angezeigt wird. Mein erster Verdacht wäre eine Konfiguration im Shelly. openHAB behandelt alle Datums/Uhrzeitangaben gleich.

konkretes Rechnen mit DateTimeType:

Code: Alles auswählen

rule "plus zwei Stunden"
when
    Item MeinDateTimeInput changed
then
    if(!(MeinDateTimeInput.state instanceof DateTimeType))
        return;
    val theDate = (MeinDateTimeInput.state as DateTimeType).getZonedDateTime
    MeinDateTimeOutput.postUpdate(theDate.plusHours(2))
end
Die Rule triggert, wenn sich der Status des Eingangsitems ändert Daraufhin prüft die Rule, ob der Status vom Typ DateTimeType ist. Ist das nicht der Fall, bricht die Rule ab (da es sonst zu einer nullPointerException kommt).
Ist alles schick, so setzt es die lokale Konstante auf den Zeitstempel, allerdings als ZonedDateTime, das ist das Java Time Äquivalent.
Anschließend wird das Ausgangsitem mit diesem Wert beschrieben, allerdings werden dabei zwei Stunden aufaddiert.

In JavaScript wird das ähnlich funktionieren, da müsste ich aber erst mal stöbern. Aber wie gesagt, vermutlich liegt hier ein Konfigurationsfehler im Shelly vor. Es wäre weitaus sinnvoller, an dieser Stelle anzusetzen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

merlindata
Beiträge: 33
Registriert: 24. Jan 2020 08:15
Answers: 1
Wohnort: Wien

Re: Zeitstempel DateTime +2:00

Beitrag von merlindata »

Danke udo1toni für Deine Zeit und Hilfe, funktioniert bestens! :D
LG Merlin

Antworten