Open Weather Map

Ich hab da mal ein Problem. Bei Open Weather Map scheint wohl irgendwas nicht mehr zu passen. Die Sensoren sehen so aus:


Dadurch funktioniert die Automation nicht mehr, d.h die Rollos fahren nicht mehr wie gewünscht runter zur Verschattung. In node-red sieht das dann so aus:
verschattung01
Ich versteh nicht wo die Werte abgeblieben sind obwohl ich in OWM alles richtig hatte und alles funktionierte. Eventuell hat ja einer eine Idee oder kann mir eine andere Vorhersage empfehlen.

Das Theam ist schon ziemlich alt!

Mit dem letzten Core-Update wurde der API von 2.5 auf 3.0 umgestellt.
Bitte immer erstmal die Forensuche benutzen!

Hier noch ein Link mit weiteren Verweisen:

Und “forecast” muss in “forcasts” geändert werden, dazu gibt es ein Video von @simon42

1 „Gefällt mir“

Hi, ich hab mir das Video angesehen und auch die Forenbeiträge dazu gelesen. Was ich nicht verstehe wo ich das in “forecasts” ändern soll damit mein OWM wieder funktioniert, ich möchte nämlich nicht unbedingt komplett alles umstellen. Das mit der Kreditkarte hatte ich schon also muss doch nur irgendwo was anders eingestellt werden. In HA hab ich das in die Version 3.0 geändert trotzdem funktioniert es nicht.

Wenn ich mich richtig erinnere, dann hat @simon42 das in seinem Video genau beschrieben.

1 „Gefällt mir“

Release notes lesen hilft auch meisten, steht im aktuellen Release Note als Breaking change dabei.
Es hat gar nichts mit OWM zu tun alle Wetterdienste haben keine forecasts Sensoren mehr, also musst du so oder so umstellen. Mit dem Video von Simon ist es einfach wenn du die Sensoren gleich benennst musst gar nichts umstellen

Ok, ich hab jetzt mal versucht die Wetterdaten so wie in dem Video von Simon42 beschrieben einzurichten. Mein Problem ist halt das ich, wenn ich die Codeschnipsel in der config eintrage es eine Fehlermeldung gibt so das ich nicht einmal neu starten kann. Bei dem ersten Teil, wo ich vermute das es in die config.yaml rein soll kommt das hier wenn ich die config überprüfe:


Der Eintrag sieht so aus und zeigt auch für das Speichern grün:

#-------------------------------------------------------------------------------
#      Wetter Aufruf
#-------------------------------------------------------------------------------
service: weather.get_forecasts
target:
  entity_id:
  - weather.forecast_xxxxxxxx
data:
  type: daily
  response_variable: weather_forecast

Ich weis die Schlaumeier sagen wieder der Fehler sitzt vor dem PC, was ja immer stimmt auch bei den Schlaumeiern. Hilfreich sind aber Antworten womit man was anfangen kann. Ich weis nicht ob ich erst alles von OWM entfernen soll oder ob es auch so geht.

da fehlt doch aber der komplette Teil vorher:

template:
  # Taegliche Wettervorhersagen
  - trigger:
    - platform: time_pattern
      hours: /1
    action:
    - service: weather.get_forecasts
      target:
        entity_id:
          - weather.forecast_home
      data:
          type: daily
      response_variable: wather_forecast
...
...

Ok, das ist das wo ich am straucheln bin, da ich ja vorher OWM verwendet hab und in dem Video das Template drin ist und das zeigt mir, wenn ich das in die config einkopiere, natürlich mit geänderten Werten, schon beim speichern rot.
So sieht mein Eintrag aus:

#-------------------------------------------------------------
#    Wetter-Vorhersage
#-------------------------------------------------------------


template:
# Der neue Weg (forcasts mit s)
# Tägliche Wettervorhersagen
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
         data:
            type: daily
        response_variable: tagesvorhersage
    sensor:
    # Hier ein Template-Sensor, der verschieden Daten der Täglichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage des nächsten Tages
        unique_id: forecast_next_1_day
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
          datetime: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].datetime }}"
      # Die gute, alte Wetterentität (Nur die Vorhersage)
      - name: Wettervorhersage OldSchool-Entität
        unique_id: weather_entity_forecast_oldschool
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          forecast: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast }}"
# Stündliche Wettervorhersagen
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
        data:
            type: hourly
        response_variable: stundenvorhersage
    sensor:
    # Hier ein Template-Sensor, der verschieden Daten der stündlichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage der nächsten Stunde
        unique_id: forecast_next_1_hour
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
    # Alternativ ein Template-Sensor, der die Temperatur der stündlichen Vorhersage Status hat (Vorteile bei Verlauf, Automationen, etc.)
      - name: Temperatur-Vorhersage der nächsten Stunde
        unique_id: temperature_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
        unit_of_measurement: °C
      - name: Bedingungs-Vorhersage der nächsten Stunde
        unique_id: condition_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"

Die xxxxxx stehen für meine Adresse zum unkenntlich machen.

data ist im ersten Block falsch eingerückt.

da zeigt er doch meistens schon, wo der Fehler liegt.

Also wenn ich die yaml Datei bearbeite und das speichern will dann sieht man oben doch nur den roten Hinweis. Vielleicht überseh ich ja was.

Im FileEditor? Dann mal aufs rote ! klicken.

Ja, hatte ich übersehen. Trotzdem ist immer wieder ein neuer Fehler vorhanden. Das Template scheint nicht ganz zu stimmen mit der Einrückerei.

so müsste es doch stimmen:

template:
#-------------------------------------------------------------
#    Wetter-Vorhersage
#-------------------------------------------------------------



# Der neue Weg (forcasts mit s)
# Tägliche Wettervorhersagen
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
        data:
            type: daily
        response_variable: tagesvorhersage
    sensor:
    # Hier ein Template-Sensor, der verschieden Daten der Täglichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage des nächsten Tages
        unique_id: forecast_next_1_day
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
          datetime: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].datetime }}"
      # Die gute, alte Wetterentität (Nur die Vorhersage)
      - name: Wettervorhersage OldSchool-Entität
        unique_id: weather_entity_forecast_oldschool
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          forecast: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast }}"
# Stündliche Wettervorhersagen
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
        data:
            type: hourly
        response_variable: stundenvorhersage
    sensor:
    # Hier ein Template-Sensor, der verschieden Daten der stündlichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage der nächsten Stunde
        unique_id: forecast_next_1_hour
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
    # Alternativ ein Template-Sensor, der die Temperatur der stündlichen Vorhersage Status hat (Vorteile bei Verlauf, Automationen, etc.)
      - name: Temperatur-Vorhersage der nächsten Stunde
        unique_id: temperature_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
        unit_of_measurement: °C
      - name: Bedingungs-Vorhersage der nächsten Stunde
        unique_id: condition_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"

wie ich bereits geschrieben hatte, data war falsch eingerückt.

Danke es waren noch mehr die anders eingerückt werden mussten.

Der Zusatz sieht jetzt so aus:

#-------------------------------------------------------------
#    Wetter-Vorhersage
#-------------------------------------------------------------


# template:
# Der neue Weg (forcasts mit s)
# Tägliche Wettervorhersagen
    - trigger:
      - platform: time_pattern
        hours: /1
        action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
          data:
            type: daily
        response_variable: tagesvorhersage
        sensor:
    # Hier ein Template-Sensor, der verschieden Daten der Täglichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage des nächsten Tages
        unique_id: forecast_next_1_day
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
          datetime: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast[1].datetime }}"
      # Die gute, alte Wetterentität (Nur die Vorhersage)
      - name: Wettervorhersage OldSchool-Entität
        unique_id: weather_entity_forecast_oldschool
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          forecast: "{{ tagesvorhersage['weather.forecast_xxxxxx'].forecast }}"
# Stündliche Wettervorhersagen
      - trigger:
      - platform: time_pattern
        hours: /1
        action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_xxxxxx
        data:
            type: hourly
        response_variable: stundenvorhersage
        sensor:
    # Hier ein Template-Sensor, der verschieden Daten der stündlichen Vorhersage als Attribute gespeichert hat
      - name: Wetter-Vorhersage der nächsten Stunde
        unique_id: forecast_next_1_hour
        state: "{{ now().isoformat() }}"
        icon: mdi:hours-24
        attributes:
          condition: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
          cloud_coverage: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].cloud_coverage }}"
          temperature: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
    # Alternativ ein Template-Sensor, der die Temperatur der stündlichen Vorhersage Status hat (Vorteile bei Verlauf, Automationen, etc.)
      - name: Temperatur-Vorhersage der nächsten Stunde
        unique_id: temperature_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].temperature }}"
        unit_of_measurement: °C
      - name: Bedingungs-Vorhersage der nächsten Stunde
        unique_id: condition_forecast_next_hour
        state: "{{ stundenvorhersage['weather.forecast_xxxxxx'].forecast[1].condition }}"
        

lässt sich speichern ohne Fehler und HA startet ganz normal. Das Problem ist jetzt, wenn ich die Entität " Wettervorhersage OldSchool-Entität" aufrufe gibt es die gar nicht und wird mir auch nicht angezeigt. Da muss wohl noch etwas falsch sein sonst würde es ja auftauchen. Ich vermute das hat was damit zu tun das der Begriff template deaktiviert wurde aber da hatte ich sonst eine Fehlermeldung:

duplicated mapping key (180:1)

 177 | #    Wetter-Vorhersage
 178 | #------------------------------ ...
 179 | 
 180 | template:
-------^
 181 | # Der neue Weg (forcasts mit s)
 182 | # Tägliche Wettervorhersagen

nur wenn der Begriff deaktiviert ist kann ich das speichern.

Hast du in der config.yaml schon andere template Sensoren?

Das dürfte einer sein:

#-------------------------------------------------------------------------------
#        Sonnenwinkel für Rollosteuerung
#-------------------------------------------------------------------------------

sensor:
  - platform: template
    sensors:
      sun_azimuth:
        friendly_name: "Sonnenwinkel"
        unit_of_measurement: 'degrees'

und das noch einer:

# ------------------------------------------------------------------
#      Gaszähler Sensor
# ------------------------------------------------------------------

template:
    sensor:
        - unique_id: gaszaehler_m3    
          name: Gaszähler m³

Das lief zwar bisher, aber das vermute ich als Fehler warum das nicht funktioniert.

Da der ‘Gaszähler Sensor’ mit ‘template:’ beginnt, darf das beim OWM Eintrag nicht mehr stehen. Setze den OWM Eintrag mal im Anschluß vom Gaszähler. Achte aber auf die Einrückungen.

OK hab ich mal gemacht und alles zeigt grün zum speichern. Wenn ich aber auf Entwicklerwerkzeuge gehe und neu starten will kommt dieser Fehler im Log:

Logger: homeassistant.config
Quelle: config.py:590
Erstmals aufgetreten: 15:26:59 (1 Vorkommnisse)
Zuletzt protokolliert: 15:26:59

Invalid config for ‘template’ at configuration.yaml, line 78: ‘trigger’ is an invalid option for ‘template’, check: sensor->1->trigger Invalid config for ‘template’ at configuration.yaml, line 78: required key ‘state’ not provided
Jetzt weis ich auch nicht mehr was das sein soll.

Ich bin mal ein Klugscheißer. Die Snippet kann man sich auch einfach kopieren mit richtiger Einrückung:

Und hier sind zwei nette Grundlagen Videos, wenn man langfristig mit HA glücklich werden will sicher nicht schaden werden.

Hab ich alles schon durch. Wenn ich den Eintrag für config.yaml so übernehme geht es gar nicht, denn das Einrücken muss angepasst werden. Nachdem ich das nochmal angepasst hab ist dann doch ein sehr komischer Fehler aufgetreten, wo ich nicht weis warum. Da wird von einem Schlüssel Status geredet, den ich aber nicht weis welcher da rein muss und wo. Die Videos kenn ich fast alle schon denn ich beschäftige mich schon seit längerer Zeit mit HA und mache die meisten Automatisierungen mit node-red, aber nicht alle.