HomeAssistant 2024.7: Weggefallene Wettervorhersage-Entitäten mittels Template-Sensoren emulieren

Seit HomeAssistant 2024.7 stellt die Integration des Wetterdaten-Anbieters OpenWeatherMap keine Vorhersage-Daten mehr als Sensor-Entitäten zur Verfügung. Dieses Mini-Tutorial zeigt, wie man die Sensor-Entitäten mittels Templates mit regelmäßigen Dienstaufrufen weiterhin bereitstellt.

· 2 Minuten zu lesen
HomeAssistant 2024.7: Weggefallene Wettervorhersage-Entitäten mittels Template-Sensoren emulieren
Nicht mehr verfügbar Vorhersage-Entitäten in HomeAssistant 2024.7
🇬🇧
This article is also available in English.
💡
Update 20.10.2024: Mit Home Assistant 2024.8 wurden Services in Actions umbenannt, wobei sich auch das Schlüsselwort service in action ändert. Das Listing wurde entsprechend angepasst.
Weiter wurde der Auslöser von minütlicher Ausführung auf Änderung des Entitäts-Status umgestellt, sowie zusätzlich eine stündliche Ausführung als Fallback, da die OpenWeatherMap-Integration bislang keine Statusänderungen bei Updates garantiert.

Mit Veröffentlichung von HomeAssistant 2024.7 gab es Änderungen an der Weather-Plattform. In den Release Notes wird erwähnt, dass der zuvor abgekündigte Dienst weather.get_forecast durch weather.get_forecasts ersetzt wurde, jedoch sind im selben Rahmen auch die sensor.openweathermap_forecast_*-Entitäten der Wetteranbieter-Integration OpenWeatherMap mit den Vorhersage-Werten für den aktuellen Tag entfallen.

Diese lassen sich jedoch problemlos durch Template-Sensoren ersetzen, welche die Daten in regelmäßigen Intervallen über den Dienst weather.get_forecasts beziehen.
Und unter der Annahme, dass die OpenWeatherMap-Hauptentität weather.home heißt, emuliert das nachfolgende Template-Sensor-Snippet alle weggefallenen Vorhersage-Entitäten. Der Auslöser aktualisiert die Werte der Sensor-Entitäten minütlich aus dem Cache der Integration, da sich auch die Vorhersage für den aktuellen Tag mehrfach ändern kann.

template:
  - trigger:
      - platform: state
        entity_id: weather.home
      - platform: time_pattern
        hours: /1
    action:
      - action: weather.get_forecasts
        data:
          type: daily
        target:
          entity_id: weather.home
        response_variable: daily
    sensor:
      - name: OpenWeatherMap Forecast Cloud coverage
        unique_id: openweathermap_forecast_cloud_coverage
        state: "{{ daily['weather.home'].forecast[0].cloud_coverage }}"
        unit_of_measurement: '%'
      - name: OpenWeatherMap Forecast Condition
        unique_id: openweathermap_forecast_condition
        state: "{{ daily['weather.home'].forecast[0].condition }}"
      - name: OpenWeatherMap Forecast Precipitation
        unique_id: openweathermap_forecast_precipitation
        state: "{{ daily['weather.home'].forecast[0].precipitation }}"
        unit_of_measurement: mm
        device_class: precipitation
      - name: OpenWeatherMap Forecast Precipitation probability
        unique_id: openweathermap_forecast_precipitation_probability
        state: "{{ daily['weather.home'].forecast[0].precipitation_probability }}"
        unit_of_measurement: '%'
      - name: OpenWeatherMap Forecast Pressure
        unique_id: openweathermap_forecast_pressure
        state: "{{ daily['weather.home'].forecast[0].pressure }}"
        unit_of_measurement: hPa
        device_class: pressure
      - name: OpenWeatherMap Forecast Temperature
        unique_id: openweathermap_forecast_temperature
        state: "{{ daily['weather.home'].forecast[0].temperature }}"
        unit_of_measurement: °C
        device_class: temperature
      - name: OpenWeatherMap Forecast Temperature Low
        unique_id: openweathermap_forecast_temperature_low
        state: "{{ daily['weather.home'].forecast[0].templow }}"
        unit_of_measurement: °C
        device_class: temperature
      - name: OpenWeatherMap Forecast Time
        unique_id: openweathermap_forecast_time
        state: "{{ daily['weather.home'].forecast[0].datetime }}"
        device_class: timestamp
      - name: OpenWeatherMap Forecast Wind bearing
        unique_id: openweathermap_forecast_wind_bearing
        state: "{{ daily['weather.home'].forecast[0].wind_bearing }}"
        unit_of_measurement: °
      - name: OpenWeatherMap Forecast Wind speed
        unique_id: openweathermap_forecast_wind_speed
        state: "{{ daily['weather.home'].forecast[0].wind_speed }}"
        unit_of_measurement: m/s
        device_class: wind_speed

YAML-Snippet der Template-Sensoren, die OpenWeatherMaps frühere Vorhersage-Sensoren emulieren

Das Vorgehen zur Aktivierung des Snippets ist:

  1. Das o.s. Snippet ggf. an die lokalen Gegebenheiten anpassen, insbes. die ID der weather-Entität muss stimmen, und falls die Namen oder Entity-IDs der Integration umbenannt wurden, sind auch die name:- und unique_id:-Eigenschaften der neuen Sensoren anzupassen.
  2. Im HomeAssistant das angepasste Snippet der Datei /homeassistant/configuration.yaml bzw. einer inkludierten Split-Konfiguration hinzufügen. Sollte bereits eine template:-Sektion vorhanden sein, die Templates dieser bestehenden Sektion hinzufügen.
  3. Die nicht mehr verfügbaren Entitäten löschen oder ihre Entitäts-IDs umbenennen via EinstellungenGeräte & DiensteEntitäten.
  4. Über EntwicklerwerkzeugeYAML zunächst die Konfiguration auf Korrektheit prüfen lassen, und wenn alles passt, darunter die Template-Entitäten neu laden lassen oder HomeAssistant neustarten.

Nun sollten die Vorhersage-Entitäten wie gewohnt wieder verfügbar sein, und dabei lediglich als von der Template-Integration bereitgestellt aufgelistet werden. Nach der Auslösung durch die erste Statusänderung, spätestens aber zur nächsten vollen Stunde, sollten die Sensoren auch wieder die gewohnten Daten bereitstellen.

Durch Template-Integration bereitgestellte Vorhersage-Entitäten in HomeAssistant 2024.7
Mittels Template-Integration emulierte Vorhersage-Entitäten