Problem mit Verwendung der aktuellen Stunde aus Zeitsensor

Hallo zusammen,

ich habe eine Problem mit dem Umgang von Zeitpunkten.
Ziel: ich will abfragen, ob der Zeitpunkt (Max PV-Leistung aus Solcast) schon vorbei ist.

Weil so gar nichts funktioniert bin ich hier angekommen:

template:
- sensor:
    - name: "Stunde aktuell"
      unique_id: stunde_aktuell
      state: >
        {{ now().astimezone() | as_timestamp | timestamp_custom('%H', true)|float() }}
      device_class: time
      state_class: total

- sensor:
    - name: "Testsensor"
      unique_id: testsensor
      state: >
        {% set powh = states('sensor.stunde_aktuell') | float(0) %}
        {{ powh }}
      device_class: time
      state_class: total
      

liefert als Ergebis im Template-checker:

template:
- sensor:
    - name: "Stunde aktuell"
      unique_id: stunde_aktuell
      state: >
        7.0
      device_class: time
      state_class: total

- sensor:
    - name: "Testsensor"
      unique_id: testsensor
      state: >
        
        0
      device_class: time
      state_class: total
Ergebnistyp: string

Dieses Template wird zu Beginn jeder Minute aktualisiert.

Dieses Template abonniert die folgenden Ereignisse zu Zustandsänderungen:

    Entität: sensor.stunde_aktuell

(mache ich kein |float(0) im Testsensor ist das Ergbnis “unknown”).

Ich scheitere also schon daran, dass trotz |float() (auch int geht nicht) die Zahl der aktuellen Stunde nicht als Zahl zur Verfügung steht.
Hat ggf. etwas mit der Verfügbarkeit zu tun, Stunde wird ja nur jede Stunde aktualisiert.

Wie kann ich das denn cleverer oder korrekt machen?
Ergebnis gesamt wäre:
Falls aktuelle Zeit (genau oder auch nur aktuelle Stunde) größer als der Zeitpunkt-Sensor von Solcast ist, dann setze ein einen Schalter auf true.

Danke!
VG
Andi

Es gibt keine device_class: time, Wenn, dann timestamp, aber ein extra Sensor ist m. E. hier überhaupt nicht nötig.

Device Classes

now().hour

liefert die aktuelle Stunde als Zahl.

Wie sieht das state Format dieses Sensors aus? Bitte mal aus Entwicklerwerkzeugen —> Zustände kopieren.

Hi Kitty,

Der Sensor sieht so aus, weiß nicht wie ich es kopieren soll, daher ein screenshot:

sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute
b2c8_9915_d4ee_ad32: 2025-06-28T09:30:00+00:00
estimate_b2c8_9915_d4ee_ad32: 2025-06-28T09:30:00+00:00
estimate10_b2c8_9915_d4ee_ad32: 2025-06-28T07:30:00+00:00
estimate90_b2c8_9915_d4ee_ad32: 2025-06-28T09:30:00+00:00
f5e7_2a5f_49d8_b7aa: 2025-06-28T12:00:00+00:00
estimate_f5e7_2a5f_49d8_b7aa: 2025-06-28T12:00:00+00:00
estimate10_f5e7_2a5f_49d8_b7aa: 2025-06-28T11:30:00+00:00
estimate90_f5e7_2a5f_49d8_b7aa: 2025-06-28T12:00:00+00:00
estimate: 2025-06-28T10:00:00+00:00
estimate10: 2025-06-28T11:30:00+00:00
estimate90: 2025-06-28T10:00:00+00:00
attribution: Data retrieved from Solcast
device_class: timestamp
friendly_name: Solcast PV Forecast Zeitpunkt Spitzenleistung heute

VG
Andi

Prima!

Der Zeitstempel deines Sensors wird als string interpretiert. Wenn du ihm ein |as_datetime verpasst, kann man Zeiten vergleichen.

Kopier das Folgende doch einfach mal in die Entwicklerwerkzeuge:

{{ now() }}
{{ states('sensor.bitte_anpassen') }}
{{ states('sensor.bitte_anpassen')|as_datetime |as_local }}
—> {{ now() >= states('sensor.bitte_anpassen')|as_datetime |as_local }}

1 „Gefällt mir“

Ergebnis (ohne Zeile 2):

2025-06-28 19:23:22.869838+02:00
2025-06-28 14:30:00+02:00
True

Perfekt!
Es kann so einfach sein…

Vielen Dank!
VG
Andi

Edit:
Ich würde das jetzt so direkt in meinem Template-Sensor (zur Ladeleistungberechnung) einbauen, um dann in div. if-Schleifen abzuzweigen.
Klappt das so mit der Syntax?

{% set maxpvpowertime = now() >= states('sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute')|as_datetime |as_local %}

maxpvpowertime sollte dann entsprechen true oder false sein.

Grundsätzlich ja.

1 „Gefällt mir“