Einige meiner Dashboards zeigen an, wann der nächste Sonnenauf- bzw. -untergang ist. Das ist insoweit kein Problem, als Home Assistant mit der Sun-Integration die entsprechenden Daten bereithält. Diese Werte gibt es allerdings nicht direkt, sondern als Attribut der sun.sun Entität. Dort gibt es entsprechend die Attribute “next_rising” (nächster Sonnenaufgang) und “next_setting” (nächster Sonnenuntergang). Ein Dashboard-Entitäten-Widget für den nächsten Sonnenuntergang wäre somit:

Dieses wird allerdings mit Datum angezeigt:

Auch die Sekundenanzeige macht nicht unbedingt Sinn. Um schnell und einfach nur an die Uhrzeit zu kommen, habe ich mir zwei Sensoren definiert, die ich für verschiedene Zwecke, u.a. eben für Dashboards einsetze:
# Sonnenauf- und -untergang - platform: template sensors: sonnenaufgang: friendly_name: "Sonnenaufgang" unit_of_measurement: "Uhr" value_template: > {{ as_timestamp(state_attr("sun.sun", "next_rising"))|timestamp_custom("%H:%M") }} sonnenuntergang: friendly_name: "Sonnenuntergang" unit_of_measurement: "Uhr" value_template: > {{ as_timestamp(state_attr("sun.sun", "next_setting"))|timestamp_custom("%H:%M") }}
Dieser Code ist Teil meiner sensors.yaml-Datei im config-Verzeichnis von Home Assistant. Die sensors.yaml, in der ich mir zahlreiche weitere Sensoren definiert habe, wird in die zentrale configuration.yaml wie folgt eingebunden:
sensor: !include sensors.yaml
Bitte nehmt Änderungen an den Konfigurationsdateien sehr sorgfältig vor, da die Lauffähigkeit eures Systems davon abhängt. Es kommt buchstäblich auf jedes Leerzeichen an. Unter
Entwicklungswerkzeuge > YAML
könnt ihr mit der Schaltfläche “Konfiguration prüfen” die Dateien prüfen. Startet Home Assistant nicht neu, wenn euch Fehler angezeigt werden, sondern korrigiert diese erst. Auf derselben Seite könnt ihr unter “Neuladen der YAML-Konfiguration” dann den Punkt “Alle YAML-Konfiguration” verwenden, um die Änderungen wirksam werden zu lassen.
Habt ihr alles richtig gemacht, gibt es zwei neue Entitäten:
- sensor.sonnenaufgang (Uhrzeit des nächsten Sonnenaufgangs)
- sensor.sonnenuntergang (Uhrzeit des nächsten Sonnenuntergangs)
Diese stehen dann natürlich direkt für die Einbindung ins Dashboard zur Verfügung:
Titelfoto: Sonnenuntergang im Rostocker Stadthafen
Hallo, genau das habe ich gesucht und mich gefreut das der Beitrag recht neu ist!
Leider klappt Dein Beispiel nicht.
Ich komme aber mit dem Protokoll nicht klar (Anfänger :-), kannst Du hier helfen? ):
Logger: homeassistant
Source: components/sensor/__init__.py:594
First occurred: 19:42:36 (2 occurrences)
Last logged: 19:42:36
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/sensor/__init__.py”, line 590, in state
numerical_value = int(value)
^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ’05:26′
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/template_entity.py”, line 393, in _async_template_startup
result_info.async_refresh()
File “/usr/src/homeassistant/homeassistant/helpers/event.py”, line 976, in async_refresh
self._refresh(None)
File “/usr/src/homeassistant/homeassistant/helpers/event.py”, line 1156, in _refresh
self.hass.async_run_hass_job(self._job, event, updates)
File “/usr/src/homeassistant/homeassistant/core.py”, line 619, in async_run_hass_job
hassjob.target(*args)
File “/usr/src/homeassistant/homeassistant/helpers/template_entity.py”, line 362, in _handle_results
self.async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 742, in async_write_ha_state
self._async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 810, in _async_write_ha_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 748, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/sensor/__init__.py”, line 594, in state
raise ValueError(
ValueError: Sensor sensor.sonnenaufgang has device class ‘None’, state class ‘None’ unit ‘Uhr’ and suggested precision ‘None’ thus indicating it has a numeric value; however, it has the non-numeric value: ’05:26′ ()
Ich fürchte, ich kann hier leider nicht weiterhelfen. Die im Artikel beschriebene Konfiguration habe ich 1:1 aus meinem System kopiert, wo sie lauffähig ist und zum gewünschten Ergebnis führt.
Danke für das Beispiel, habe es nun nach einigen Fehlversuchen (Stunden 😉 zum laufen gebracht.
Grund des Scheiterns ist die Zeile
“unit_of_measurement: “Uhr”
Da es ohne dieser Zeile klappt, denke ich, dass es eine spezielle Einstellung bei dir ist.
Bindet man das ganze in der neuen Form in einer template-Datei bzw Verzeichnis ein, muss es wie folgt heißen:
sensor:
– name: “WJS_Aufgang”
unique_id: ‘WJS_Aufgang’
# unit_of_measurement: “Uhr” // funktioniert so nicht !!!
state: >
{{ as_timestamp(state_attr(‘sun.sun’, ‘next_rising’))|timestamp_custom(“%H:%M”) }}
Gruß Walter
PS: auch dein Wetter-Dashboard klappt prima – DANKE.
Vielen Dank für die Infos und das Feedback. Grüße aus Rostock!
Ich habe einmal das Fehler-Protokoll in der HA2023.8.2 gecheckt.
unit_of_measurement, wegelassen und in die Zeile: {{ as_template(…. (“%H” ‘:’ “%M” ” Uhr”) }} verwendet. Weder native_value, noch native_unit_of_measurement, wird akzeptiert.
Vielen Dank für die Informationen und das Feedback!