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.
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.