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.

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: time_pattern
        minutes: /1
    action:
      - service: 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 dem ersten Auslösen zur nächsten vollen Minute 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