Smart Home

Sensoren für nächsten Sonnenauf- und -untergang in Home Assistant

Sonnenuntergang

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:

Konfiguration Sonnenuntergang-Widget (Screenshot)

Dieses wird allerdings mit Datum angezeigt:

Sonnenuntergang-Widget (Screenshot)

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:

Sonnenuntergangsanzeige mit dem neuen Sensor (Screenshot)
Bitte anklicken/antippen für größere Version

Titelfoto: Sonnenuntergang im Rostocker Stadthafen

Insgesamt 1.123 Artikel aus meinen Interessensgebieten Apple, Get Organized, Smart Home, Dänemark und Fahrrad erwarten euch in diesem mehrmals pro Woche aktualisiertem Blog. Darunter Tipps und Automatisierungen zu OmniFocus und GTD®, DEVONthink, AppleScript, Hazel, Obsidian, Home Assistant, Keyboard Maestro uvm.

Plus/Premium
Gefällt Dir dieser Artikel oder hast Du sogar Nutzen daraus gezogen? Du kannst mein Blog via Patreon unterstützen und erhältst dafür Zugriff auf aktuell 262 Plus-Artikel. Premium-Unterstützer bekommen weitere Inhalte, wie z.B. Videos. Auch jeder Link in sozialen Medien oder anderen Blogs zu meinen Inhalten hilft mir, Danke!

Erfolgreicher und produktiver werden
Mein E-Book und mein Coaching-Angebot zu den Themen "Get Organized" und "OmniFocus".

Unterstützung bei Apple-Automatisierungen
Ich arbeite seit 2008 mit iPhones und Mac-Computern und habe inzwischen Hunderte von Automatisierungen erstellt. Gerne stelle ich mein Wissen zur Verfügung! Weitere Infos hier.

Über den Autor

Markus Jasinski

Markus Jasinski ist ein Rostocker Unternehmer, Naturwissenschaftler, IT-Spezialist, Autor, Coach, Dänemark-Fan, überzeugter Radfahrer und nicht zuletzt „Computer Geek“ und Smart-Home-Enthusiast. Sein erstes iPhone kaufte der promovierte Naturwissenschaftler im Jahre 2008, kurze Zeit später wurde er dann auch zum Mac-Nutzer. Nach und nach gesellten sich iPad, Apple TV und Apple Watch hinzu.

Um diese vielfältigen Interessen und Aktivitäten "unter einen Hut" zu bekommen befasst sich der gebürtige Westfale seit über zehn Jahren mit den Themen Selbstorganisation und Aufgabenmanagement, die ebenfalls ein Schwerpunkt dieses Blogs sind.

6 Kommentare

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

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

Kommentar schreiben

Kommentare müssen zwischen 50 und 3000 Zeichen lang sein. Deine E-Mail-Adresse wird nicht veröffentlicht. Es erfolgt keine automatische Benachrichtigung bei Antworten auf einen Kommentar. Keine Werbung/Werbelinks/Firmenlinks, Hinweise unten beachten!


Alle Kommentare werden moderiert und nur freigeschaltet, wenn sie diesen Regeln entsprechen. Keine Werbung! Bitte nutzt E-Mail für allgemeine und sonstige Anfragen. Leider erlaubt meine Zeit es nicht, technische Hilfestellung oder Support zu leisten.

All comments are reviewed and manually unlocked. Comments that do not refer to the article, are not written in German or contain advertising will be deleted. Please use e-mail for general and other inquiries.