Zeitzone addieren

Hallo,

ich habe eine simple Frage, an der ich aber seit langem scheitere.
Meine Wallbox liefert die Start- und Endzeiten in UTC, also z.B.
2025-10-03 11:08:54 - es ist aber 2025-10-03 13:08:54.
Wie kann ich der UTC-Zeit die aktuelle Zeitverschiebung hinzuaddieren ?

VG

Du kannst den Wert deiner Wallbox in ein Timestamp umwandeln lassen und dann in die locale Zeitzone holen

{{ as_timestamp('2025-10-05T10:31:00+00:00') | timestamp_local }}

bzw.

{{ as_timestamp(states('sensor.xyz')) | timestamp_local }}

Die Ausgabe ist dann
2025-10-05T12:31:00+02:00

Oder du definierst die Ausgabe mit timestamp_custom direkt, wie du sie haben möchtest

{{ as_timestamp('2025-10-05T10:31:00+00:00') | timestamp_custom('%d.%m.%Y %H:%M:%S') }}

Wenn des Sensor in eine Standard Karte packt, sollte automatisch die lokale Zeit angezeigt werden. Eine umformatierung ist nicht notwendig.

Gruß Osorkon

@sirector Danke für den Code, aber die Zeit wird mir als
”2025-10-03T11:08:54+02:00” angezeigt, ich stelle mir eher ”2025-10-03 13:08:54” - aber genau das bekomme ich nicht hin.

Vielleicht hier einmal die Info, wie ich den Wert auslese.

Ich nutze die Keba-Integration und habe mir das custom so angepasst, dass ich noch mehr Werte auslese, als es die über HCAS-Integration macht. Dazu habe ich in der sensor.py die folgenden Änderungen vorgenommen:

## A-DAS SIND DIE VERÄNDERUNGEN
        KebaSensor(
            keba,
            "product_info",
            SensorEntityDescription(
                key="I",
                name="Product Information",
            ),
        ),
## E-DAS SIND DIE VERÄNDERUNGEN

bzw.

## A-DAS SIND DIE VERÄNDERUNGEN
## keba.get_value ist der Wert aus der Dokumentation !
        if self.entity_description.key == "I":
            self._attributes["serial"] = str(self._keba.get_value("Serial"))
            self._attributes["uptime"] = str(self._keba.get_value("Sec"))
            self._attributes["firmware"] = str(self._keba.get_value("Firmware"))
            self._attributes["product"] = str(self._keba.get_value("Product"))
            self._attributes["session"] = str(self._keba.get_value("Session ID"))
            self._attributes["rfid_tag"] = str(self._keba.get_value("RFID tag"))
            self._attributes["started"] = str(self._keba.get_value("started"))
            self._attributes["ended"] = str(self._keba.get_value("ended"))
            self._attributes["reason"] = str(self._keba.get_value("reason"))
            self._attributes["state"] = str(self._keba.get_value("State"))
## E-DAS SIND DIE VERÄNDERUNGEN

Soweit so gut.

Der sensor.keba_p30_product_information hat somit die folgenden Attribute:

serial: xxxxxxxx
uptime: 846486
firmware: P30 v 3.10.74 (250723-164227)
product: KEBA P30
session: 165
rfid_tag: xxxxxxxx00000000
started: 2025-10-03 11:08:54.000
ended: 2025-10-03 14:54:50.000
reason: 1
state: 1
friendly_name: KEBA P30 Product Information

Die Werte started und ended sind UTC und genau diese hätte ich in Europe/Berlin, also in meine lokale Zeitzone angezeigt.

Teste mal

{{ as_timestamp(state_attr('sensor.keba_p30_product_information','started')) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}

Hatte ich auch schon getestest, liefert aber auch “2025-10-03 11:08:54” - es fehlen also die +2. Es ist zum “verrückt werden” :-).

Und ein

{{ as_timestamp(state_attr('sensor.keba_p30_product_information','started')) | timestamp_local }}

liefert “2025-10-03T11:08:54+02:00”

Hast du es in den Entwicklerwerkzeugen - Template getestet? Wie sieht die Ausgabe dort aus? Was wird ausgegeben, wenn du dort

{{ now() }}

abfragst?

Edit

Das sollte aber doch stimmen. Du hast es nicht mit timestamp_custom getestet.

Genau, ich habe es in den Entwicklerwerkzeugen getestet.

Ein

{{ now() }}

liefefert “2025-10-05 13:36:06.998238+02:00”

Bildschirmfoto 2025-10-05 um 13.39.16

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Schau dir mein Edit oben an.

Ich bin verwirrt. Was hast du getestet und was wurde angezeigt?

Siehe mein Screenshot:

Bildschirmfoto 2025-10-05 um 13.39.16

Dann ist 11:08 die richtige Zeit in deiner Zeitzone +2

11:08 ist die Uhrzeit nach UTC/GMT, in meiner Zeitzone wäre es 13:08.

Dann werden die Werte falsch übertragen

Du schreibst ja selbst

Da steht 11:08 in der Zeitzone +2

Wieso sollten die Werte falsch übertragen werden. Das Attribute “started” und “ended” wird von der Wallbox in UTC/GMT geloggt und so in Wallbox gespeichert. Dieses Attribute lese ich aus und ich möchte dieser Uhrzeit meine Zeitverschiebung von zZt 2 Stunden (ab Nov. dann eben nur noch 1 Stunde) addieren. D.h. das Attribut “started” mit dem Wert “2025-10-03 11:08:54” soll mir als “2025-10-03 13:08:54” angezeigt werden.

Weil es mit
“2025-10-03T11:08:54+02:00” übertragen wird und das wäre dann falsch. Wenn es wirklich UTC wäre, müsste da “2025-10-03T11:08:54+00:00” stehen. Dann könnte man das umrechnen.

Edit:
Du könntest es mal mit + timedelta(hours=2) versuchen.

Jetzt bin ich verwirrt. Wenn ich mir die Attribute des sensor in den Entwicklungswerkzeugen ansehe, dann steht da:


started: 2025-10-03 11:08:54.000
ended: 2025-10-03 14:54:50.000

Also ist das für mich UTC.

Das mit + timedelta(hours=2) mache ich im Moment schon, aber das müsste ich ja 2x im Jahr anpassen.

Bei started und ended steht leider die Zeitzone nicht dabei.

Hast du es denn mal physich kontrolliert, also die Uhrzeiten?

Ja, da steht keine Zeitzone, aber so wird es in der Wallbox abgelegt und nur das kann ich auslesen.

Auf der “Webseite” der Wallbox steht leider keine Uhrzeit.

EDIT:

Letztendlich suche ich nur eine einfache Möglichkeit der Datum/Zeit-Info die ich habe, die aktuelle Zeitverschiebung hinzuzufügen.

Kannst du nicht einfach mal auf die Uhr schauen, wenn der lädt? Oder stelle ich mir das zu einfach vor?

Das habe ich alles schon durch :slight_smile:

Ich habe 2 Helfer, die beim Starten und Stoppen die aktuelle Uhrzeit speichern und mir dann die Differenz als Ladesession berechnen. Das klappt soweit auch.

Start und Endpunkt haben zu den Daten aus der Wallbox immer die 2 Stunden bzw. 1 Stunde bei Winterzeit.

Mich wurmt es einfach, dass ich die Zeiten aus der Wallbox nicht so nutzen kann wie ich will, da ich es nicht schaffe den Start und Endzeiten diese “blöde” Zeitverschiebung zu addieren.

Die Wallbox loggt def. UTC/GMT auch wenn die Angabe der Zeitzone fehlt.