Wettervorhersage je Uhrzeit in Entität

Hallo zusammen,

ich bin aktuell am Umsteigen von ioBroker auf HA.

Im ioBroker hatte ich die Instanz “daswetter”, hier standen mir die Wetterdaten je Uhrzeit zur verfügung. Ich habe im Node-Red Funktionen, wo ich hierauf angewiesen bin.

Ich habe mir das Video zu dem Thema von Simon42 angesehen, openweather mit API V3 eingerichtet und auch der get_forcasts mittel YAML ist soweit klar.

Da ich in HA neu bin und auch weder mit YAML noch mit Jinja vertraut bin, verbringe ich mittlerweile schon viele Stunden damit, die einzelnen Werte aus get_forcasts aufzuteilen und den Uhrzeiten zuzuordnen.

Der API-Aufrug beginnt immer mit der aktuellen Uhrzeit in UTC und hat dann die 13 Werte.

Ich möchte einzelne Entitäten mit z.B. “Wettervorhersage_00Uhr_Temperatur” sodass ich am Ende 24 * 13 Entitäten habe.

Bevor ich jetzt noch lange weiter experimentiere wollte ich mal in die Runde fragen, ob zufällig jemand genau soetwas hat und mir eine entsprechende YAML zur verfügung stellen kann.

Ansonsten bin ich auch gerne für Vorschläge offen, wie ich es alternativ umsetzen kann, statt mit einer YAML. Hatte auch schon überlegt mit Node-Red und MQTT zu arbeiten, ich weiß aber nicht, ob ich dann in eine neue Sackgasse renne.

Könnt ihr mir bei dem Thema weiterhelfen?

Ich hatte vor meinem Post bereits X. Versuche gemeinsam mit GPT O3 gestartet, mein letzter Versuch nach dem Post hat jetzt auf den ersten Blick wohl die Lösung gebracht.

template:
  - trigger:
      - platform: time_pattern
        minutes: "/30"
    action:
      - service: weather.get_forecasts
        target:
          entity_id: weather.openweathermap
        data:
          type: hourly
        response_variable: fc
    sensor:
      - name: "Wettervorhersage_00Uhr_Temperatur"
        unique_id: "forecast_00h_temperature"
        unit_of_measurement: "°C"
        state: >
          {% set target_hour = 0 %}
          {% set today = now().date() %}
          {% set target_date = today if now().hour < target_hour else (today + timedelta(days=1)) %}
          {% set val = namespace(v = None) %}
          {% for item in fc['weather.openweathermap'].forecast %}
            {% set dt_local = as_local(as_datetime(item.datetime)) %}
            {% if dt_local.date() == target_date and dt_local.hour == target_hour %}
              {% set val.v = item.temperature %}
              {% break %}
            {% endif %}
          {% endfor %}
          {{ val.v if val.v is not none else 'unknown' }}