API Einbindung in "Home Assistant" - Fehler Syntax precipitation_1h

  • Ich habe die API in "Home Assistant" eingebunden. Das hat gut funktioniert, auf für mich als absoluten API-Einsteige

    Alledings habe ich bei der Variablen "precipitation_1h" ein Problem.

    Ich habe es mit

    value_template: "{{ value_json.1h.precipitation_1h }}"

    versucht. Dabei erhalte ich aber eine Sysntaxfehler-Meldung im Home Assistent:

    Invalid config for [rest]: invalid template (TemplateSyntaxError: expected token 'end of print statement', got 'h') for dictionary value @ data['rest'][0]['sensor'][3]['value_template']. Got '{{ value_json.1h.precipitation_1h }}'

    Mit

    value_template: "{{ value_json.h1.precipitation_1h }}"

    gibt es die Syntax-Fehlermeldung nicht, funktioniert aber natürlich nicht.

    Die anderen Templates funktionieren alle, z.B.:

    value_template: "{{ value_json.day.temp_min }}" 

    value_template: "{{ value_json.current.rainrate }}" 

    value_template: "{{ value_json.current.precipitation }}"

    Gibt es eine andere Möglichkeit, das Templat für precipitation_1h aufzubauen?

    Viele Grüß Uli

  • Hallo Uli.

    Ich wäre an Deiner Lösung für die Einbindung der AWEKAS API in Home Assistant sehr interessiert.

    Ich wollte auch schon seit einiger Zeit sowas machen, bin aber bisher nicht dazu gekommen.

    Vielleicht können wir uns dann gegenseitig helfen.


    Viele Grüße

    Manfred

  • Hallo Manfred,

    Deine Beitrag ist zwar schon länger her. Und falls du noch nicht dazu gekommen bist habe ich hier eine Lösung und eine Aufgabe für die Feiertage.

    Viele Grüße Jürgen


    # ++++++ Wetterstation Bresser aktuelle Daten Sensoren ++++++++++

    #

    # in Datei templat.yaml exportieren

    #

    - sensor:

    - unique_id: pws_temperature

    name: "PWS Temperatur aktuell"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation","temperature")}}'

    - sensor:

    - unique_id: pws_dewpoint

    name: "PWS Taupunkt"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation","dewpoint")}}'

    - sensor:

    - unique_id: pws_humidity

    name: "PWS Luftfeuchte"

    unit_of_measurement: "%"

    state: '{{state_attr("sensor.wetterstation","humidity")}}'

    - sensor:

    - unique_id: pws_luftdruck

    name: "PWS Luftdruck"

    unit_of_measurement: "hPa"

    state: '{{state_attr("sensor.wetterstation","airpress_rel")}}'

    - sensor:

    - unique_id: pws_tendenz

    name: "PWS Tendenz"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation","tendency")}}'

    - sensor:

    - unique_id: pws_precipitation

    name: "PWS Niederschlag Summe"

    unit_of_measurement: "mm"

    state: '{{state_attr("sensor.wetterstation","precipitation")}}'

    - sensor:

    - unique_id: pws_rainrate

    name: "PWS Regenmenge"

    unit_of_measurement: "mm/h"

    state: '{{state_attr("sensor.wetterstation","rainrate")}}'

    - sensor:

    - unique_id: pws_itsraining

    name: "PWS es regnet"

    unit_of_measurement: ".."

    state: '{{state_attr("sensor.wetterstation","itsraining")}}'

    - sensor:

    - unique_id: pws_windspeed

    name: "PWS Wingeschwindigkeit"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation","windspeed")}}'

    - sensor:

    - unique_id: pws_gustspeed

    name: "PWS Windboen"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation","gustspeed")}}'

    - sensor:

    - unique_id: pws_winddirection

    name: "PWS Windrichtung"

    unit_of_measurement: "°Grad"

    state: '{{state_attr("sensor.wetterstation","winddirection")}}'

    - sensor:

    - unique_id: pws_uv

    name: "PWS UV Strahlung"

    unit_of_measurement: "%"

    state: '{{state_attr("sensor.wetterstation","uv")}}'

    - sensor:

    - unique_id: pws_solar

    name: "PWS Solar"

    unit_of_measurement: "W/m2"

    state: '{{state_attr("sensor.wetterstation","solar")}}'

    #

    # ++++++ Wetterstation Bresser Daten vom Vortag Sensoren ++++++++++

    #

    - sensor:

    - unique_id: pws_temp_min

    name: "PWS Temperatur min"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation_vortag","temp_min")}}'

    - sensor:

    - unique_id: pws_temp_max

    name: "PWS Temperatur max"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation_vortag","temp_max")}}'

    - sensor:

    - unique_id: pws_taupunkt_min

    name: "PWS Taupunkt min"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation_vortag","dewpoint_min")}}'

    - sensor:

    - unique_id: pws_taupunkt_max

    name: "PWS Taupunkt max"

    unit_of_measurement: "°C"

    state: '{{state_attr("sensor.wetterstation_vortag","dewpoint_max")}}'

    - sensor:

    - unique_id: pws_luftfeuchte_min

    name: "PWS Luftfeuchte min"

    unit_of_measurement: "%"

    state: '{{state_attr("sensor.wetterstation_vortag","hum_min")}}'

    - sensor:

    - unique_id: pws_luftfeuchte_max

    name: "PWS Luftfeuchte max"

    unit_of_measurement: "%"

    state: '{{state_attr("sensor.wetterstation_vortag","hum_max")}}'

    - sensor:

    - unique_id: pws_luftdruck_min

    name: "PWS Luftdruck min"

    unit_of_measurement: "hPa"

    state: '{{state_attr("sensor.wetterstation_vortag","airp_rel_min")}}'

    - sensor:

    - unique_id: pws_luftdruck_max

    name: "PWS Luftdruck max"

    unit_of_measurement: "hPa"

    state: '{{state_attr("sensor.wetterstation_vortag","airp_rel_max")}}'

    - sensor:

    - unique_id: pws_windspeed_min

    name: "PWS Windgeschwindigkeit min"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation_vortag","windspeed_min")}}'

    - sensor:

    - unique_id: pws_windspeed_max

    name: "PWS Windgeschwindigkeit max"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation_vortag","windspeed_max")}}'

    - sensor:

    - unique_id: pws_winddir_max

    name: "PWS Windrichtung max"

    unit_of_measurement: "Grad"

    state: '{{state_attr("sensor.wetterstation_vortag","winddir_max")}}'

    - sensor:

    - unique_id: pws_gustspeed_min

    name: "PWS Windboen min"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation_vortag","gustspeed_min")}}'

    - sensor:

    - unique_id: pws_gustspeed_max

    name: "PWS Windboen max"

    unit_of_measurement: "km/h"

    state: '{{state_attr("sensor.wetterstation_vortag","gustspeed_max")}}'

    - sensor:

    - unique_id: pws_gustdir_max

    name: "PWS Boen Richtung"

    unit_of_measurement: ""

    state: '{{state_attr("sensor.wetterstation_vortag","gustdir_max")}}'

    - sensor:

    - unique_id: pws_rainrate_max

    name: "PWS Regenmenge max"

    unit_of_measurement: "mm/h"

    state: '{{state_attr("sensor.wetterstation_vortag","rainrate_max")}}'

    - sensor:

    - unique_id: pws_solar_max

    name: "PWS Solar max"

    unit_of_measurement: "Watt"

    state: '{{state_attr("sensor.wetterstation_vortag","solar_max")}}'

    - sensor:

    - unique_id: pws_uv_max

    name: "PWS UV max"

    unit_of_measurement: "%"

    state: '{{state_attr("sensor.wetterstation_vortag","uv_max")}}'

    - sensor:

    - unique_id: pws_precipitation_24h

    name: "PWS Regenmenge 24h"

    unit_of_measurement: "mm/24h"

    state: '{{state_attr("sensor.wetterstation_vortag","precipitation_24h")}}'

    #++++++++++++ Windrichtung Kompass ++++++++

    - sensor:

    - name: "Windrichtung"

    state: >

    {% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}

    {% set degree = states('sensor.pws_windrichtung')|float %}

    {{ direction[((degree+11.25)/22.5)|int] }}

    icon: mdi:windsock

    unique_id: windrichtung

    #++++++++++ Ende

    #====05-12-22====== Bresser Wetterstation WLAN ClearView - Daten von Awekas ID 24389 ========

    #

    # in Datei rest.yaml

    #

    resource: https://api.awekas.at/current.php?key=abcdefgh..........

    scan_interval: 120

    sensor:

    - name: "Wetterstation"

    json_attributes_path: "$.current"

    value_template: "OK"

    json_attributes:

    - temperature

    - dewpoint

    - humidity

    - airpress_rel

    - tendency

    - precipitation

    - rainrate

    - itsraining

    - windspeed

    - gustspeed

    - winddirection

    - uv

    - solar

    - name: "Wetterstation Vortag"

    json_attributes_path: "$.day"

    value_template: "OK"

    json_attributes:

    - temp_min

    - temp_max

    - dewpoint_min

    - dewpoint_max

    - hum_min

    - hum_max

    - airp_rel_min

    - airp_rel_max

    - windspeed_min

    - windspeed_max

    - winddir_max

    - gustspeed_min

    - gustspeed_max

    - rainrate_max

    - precipitation_24h

    - solar_max

    - uv_max

    #======================= Bresser Wetterstation Ende =========

  • Hallo zusammen,

    bin zwar neu hier, habe aber die beschriebenen "Probleme" gelöst.

    Dazu sind allerdings Grundvoraussetzungen nötig, damit das funktioniert. Hier sollten Grundkenntnisse für Home Assistant vorhanden sein, da in den Konfigurationsdateien Ergänzungen gemacht werden müssen. Besonders sollte man mit der Datei configuration.yaml vertraut sein. Fortgeschrittene Home Assistant Anwender können auch die configuration.yaml in mehrere Dateien aufteilen, etwa nach Sensoren, Anwendungsgebiete, etc. Dann sieht die Aufteilung der Zeilen und zum Teil auch die Ausrichtung der Zeilen wieder ganz anders aus.

    Auf das ganz oben beschriebene Problem sieht die Lösung so aus (z.B. in der configuration.yaml):

    Ich vermute, dass der Eintrag json_attributes_path: "$.1h" einfach nur gefehlt hat.

    Die Namen sind bewusst etwas technisch formuliert und können natürlich frei gewählt werden. Ist bei mir so, da ich viele Sensoren und Geräte habe und sonst den Überblick verliere. Am einfachsten ist, die Namen anschließend in der Home Assistant-GUI zu ändern.

    Gerne unterstütze ich aber bei der Einbindung in HA.

    Viele Grüße

    Thomas

  • Hallo Thomas,

    angespornt von Deinem Beitrag habe ich es nun auch geschafft, die Awekas-Wetterwerte per Api in Home Assistant einzubinden. Es hat ca. 3 Stunden gedauert, bis der Code (ein bisschen Codeschnipsel von Dir und von Jürgen) in HA richtig wahr. :face_with_open_mouth:

    Ich möchte, wie Du es schon geschrieben hast, empfehlen, den Code in zwei Dateien auszulagern. Die configuration.yaml wird sonst schnell unübersichtlich. Allerdings ist es für Anfänger wirklich schwer, die richtige Aufteilung und das richtige Einrücken der Zeilen zu finden.

    Das Abholen der Daten ging bei mir nur so:

    Code
      sensor:
        - platform: rest
          resource: https://api.awekas.at....
          scan_interval: 120
          name: "Wetterstation"
          ....


    Vielleicht kannst Du ja ein Add-on für HA erstellen. :winking_face:

    Gruß

    Georg

    ID: 10650

  • Hallo,

    ich habe es nochmals zusammengefasst:

    rest.yaml

    template.yaml

    Zum Schluss die config.yaml

    Code
    sensor: !include sensors.yaml
    rest: !include rest.yaml
    template: !include template.yaml

    Jenes dient dazu, das man die config.yaml übersichtlich hält und die rest.yaml und die template.yaml auslagern kann.

    Ich habe noch einige fehlende Sensoren hinzugefügt. Auch ist die Regenmenge der letzten Stunde integriert. Im Grunde genommen muss nur der API Key eingefügt werden.

    Und nicht vergessen HomeAssistant nach Änderungen einem Neustart zu unterziehen. Vorher die Konfiguration prüfen und Backup erstellen tut auch nicht weh!!

    Einen Schönheitsfehler gibt es den ich jetzt blöderweise auch übernommen habe, es handelt sich bei den Werten nicht um den Vortag sondern um den aufgelaufenen aktuellen Tag

  • Eine Sache noch. Wer die Werte gerne in die InfluxDB übernehmen will, und die anderen gesammelten Sensoren kann dies hiermit bewerkstelligen:

    In die configuration.yaml folgendes integrieren

    Vorher muss man natürlich die InfluxDB als Addon hinzufügen und dort eine Datenbank mit den entsprechenden Werten anlegen.

    Ich tue dies um die PWS Werte in Grafana zu visualisieren.

  • Moin Dietmar,

    habe gestern Abend mit der Erstellung des Dashboards für die Wetterstation angefangen. Mini-graph-card ist ja hierfür u.a. eine klasse Erweiterung. :winking_face:

    Nur die Windrose bekomme ich nicht hin. Hast Du hierfür den Codeschnipsel von Jürgen genommen?

    Im HA-Log steht:

    Error while processing template: Template("{% set direction = ['N','NNO','NO','ONO','O','OSO','SO','SSO','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %} {% set degree = states('sensor.pws_windrichtung')|float %} {{ direction[((degree+11.25)/22.5)|int] }}")

    Gruß

    Georg

    ID: 10650

    Edited once, last by GeSchi (March 26, 2023 at 10:24 AM).

  • dietmar1968

    ich verwende compas-card, allerdings habe/verwende ich Lovelace unter ioBroker.
    Meine Windrichtung werwendet zwei Datenpunkte, Wind und Böe.


    GeSchi

    Kannst Du mir beim Datenpunkt Sun.Sun weterhelfen, was für ein Wert steckt dahinter.
    Ich verwende kein HomeAssistant, deshalb müßte ich den Wert unter ioBroker simulieren.

    Hier der Code für meine Windrose:

  • Wo hast den Datenpunkt gesehen?

    Der wird von sun-card verwendet.

    Code
    type: 'custom:sun-card'
    name: Sun
    meridiem: false
    entities:
      max_elevation: sun.sun
      sunrise: sensor.sunrise
      sunset: sensor.sunset
      noon: sensor.solar_noon
      moon_phase: sensor.moon

    Aber auch compass-card verwendet es.