Aktuellen Pollenflug in Home Assistant anzeigen

Wie kann man den aktuellen Pollenflug in Home Assistant anzeigen? Home Assistant erlaubt es einem ja so ziemlich alles zu integrieren und anzuzeigen, also warum nicht auch den aktuellen Pollenflug in deiner Gegend?

Alles, was man hierfรผr benรถtigt, ist eine API, welche diese aktuellen Daten liefert. Diese API bindet man dann beispielsweise รผber den REST-Sensor ein und schon hat man die aktuellen Daten zum Pollenflug und kann diese in Home Assistant beliebig nutzen. Aber der Reihe nach! ๐Ÿ™‚

Pollenflug in Home Assistant anzeigen

Wie eingangs bereits erwรคhnt, macht es Home Assistant einem sehr einfach Daten externer Anbieter einzubinden und zu nutzen. So ist es natรผrlich auch mรถglich sich den aktuellen Pollenflug in Home Assistant anzeigen zu lassen! Konkret werden wir fรผr die Anzeige des aktuellen Pollenflug in Home Assistant die Daten รผber eine REST-Api einbinden, diese dann auslesen um sie dann beliebig anzeigen/nutzen zu kรถnnen.

Was ist eine REST-Api?

Eine REST-Api ist eine Schnittstelle welche fรผr Representational state transfer [Wikipedia: REST] steht. รœber eine Schnittstelle werden also Zustรคnde/Daten zum Abruf angeboten.

Solche Schnittstellen sind primรคr fรผr die Maschine-zu-Maschine-Kommunikation gedacht und genau dies wollen wir auch tun!

Anbieter wie Ambee erheben weltweit Daten zum aktuellen Wetter oder eben auch der Luftverschmutzung. Diese Daten stehen fรผr nahezu jeden Ort der Welt, mehr oder weniger genau, zur Verfรผgung. Ambee kann kommerziell genutzt werden und hierfรผr gibt es kostenpflichtige Accounts.

Ebenso bietet Ambee aber auch einen kostenlosen Account an, mit welchem 100 Datenabrufe pro Tag kostenlos mรถglich sind! Einen solchen Account/Plan werden wir nutzen und kรถnnen hierdurch in etwas 4 mal pro Stunde aktuelle Daten abrufen, ohne irgendwelche Kosten zu verursachen (24 Stunden x 4 Aufrufe die Stunde = 96 Aufrufe, was รผber das kostenlose Kontingent mรถglich ist).

Daten zum Pollenflug auslesen

Damit wir den Pollenflug in Home Assistant anzeigen kรถnnen, benรถtigen wir natรผrlich entsprechende Daten! Sobald du einen Account mit Basic-Plan hast, erhรคltst du einen Api Token. Mit diesem Api Token kannst du bereits auf die REST-Api zugreifen und alle von Ambee bereitgestellten Daten abrufen/nutzen.

Hierfรผr legen wir nun einen neuen Sensor in unserer Konfiguration an, dies kรถnnte in etwa wie folgt aussehen:

sensor:
- platform: rest
  scan_interval: 1300
  resource_template: https://api.ambeedata.com/latest/pollen/by-lat-lng?lat=47.11&lng=0.815
  value_template: >-
    {{ value_json.message}}
  name: "Ambee Pollen"
  headers:
    content-type: "application/json"
    x-api-key: !secret secret_ambee_api
  json_attributes_path: data[0]
  json_attributes:
      - Count
      - Risk
      - Species
      - updatedAt
      - time

Ich beschrรคnke mich hierbei auf den Pollenflug durch Bรคume und Grรคser. Und natรผrlich musst du deinen eigenen Api-Token nutzen, sowie in der URL (also bei resource) deine eigenen Daten fรผr lat und lng (also Latitude und Longitude) eintragen.

Mit diesem Code sagen wir nun Home Assistant, dass alle 1200 Sekunden von dieser Api die Daten abgerufen werden sollen. 1200 Sekunden entspricht 20 Minuten und somit bleiben wir unterhalb der etwa 4 mรถglichen Abrufe pro Stunde um nicht aus Versehen Kosten zu verursachen! ๐Ÿ˜‰

Ambee Api-Calls
Die Spitzen nahe den 100 Cals pro Tag sind die Einrichtungs-Phase gewesen, als ich noch etwas mit der Api getestet habe.

Damit uns die รผber den Api-Abruf bereitgestellten Daten nun noch etwas schรถner angezeigt werden, ergรคnzen wir unseren Sensor wie folgt:

#in Kombination mit dem zuvorgenannten Code bitte die folgende Zeile entfernen!
- platform: template
  sensors:
    ambee_pollen_tree:
      icon_template: "mdi:tree-outline"
      friendly_name: "Bรคume"
      value_template: >-
        {% set state = state_attr("sensor.ambee_pollen", "Risk").tree_pollen %}
        {% if state == "Low" %}Niedrig
        {% elif state == "Moderate"%}Mittel
        {% elif state == "High"%}Hoch
        {% elif state == "Very High"%}Sehr hoch
        {% else %}Unbekannt{% endif %}
- platform: template
  sensors:
    ambee_pollen_weed:
      icon_template: "mdi:nature"
      friendly_name: "weed"
      value_template: >-
        {% set state = state_attr("sensor.ambee_pollen", "Risk").weed_pollen %}
        {% if state == "Low" %}Niedrig
        {% elif state == "Moderate"%}Mittel
        {% elif state == "High"%}Hoch
        {% elif state == "Very High"%}Sehr hoch
        {% else %}Unbekannt{% endif %}
- platform: template
  sensors:
    ambee_pollen_grass:
      icon_template: "mdi:grass"
      friendly_name: "Grรคser"
      value_template: >-
        {% set state = state_attr("sensor.ambee_pollen", "Risk").grass_pollen %}
        {% if state == "Low" %}Niedrig
        {% elif state == "Moderate"%}Mittel
        {% elif state == "High"%}Hoch
        {% elif state == "Very High"%}Sehr hoch
        {% else %}Unbekannt{% endif %}

Inspiriert wurde ich hierfรผr definitiv von Michi, welcher nahezu den kompletten ursprรผnglich hier in diesem Post genutzten Code auf GitHub verรถffentlicht hat – vielen Dank dafรผr! Durch ร„nderungen an der Ambee-API und eure hinweise hierauf, habe ich den Code entsprechend angepasst, so dass die gewรผnschten Daten wieder ausgegeben werden!

Was haben wir also soweit? Wir nutzen eine kostenlose Api, รผber welche wir die Luftdaten alle 20 Minuten abrufen und bereiten diese mittels Templates in den Variablen ambee_pollen_grass und ambee_pollen_tree etwas anschaulicher auf!

Aktuellen Pollenflug anzeigen

Durch den zuvor beschriebenen Code, stehen uns nun zwei neue Entities zu Verfรผgung, welche in Loveloce angezeigt werden kรถnnen. Auch hierfรผr bedarf es nur (sehr) wenige(r) Zeilen Code:

cards:
      - type: glance
        title: Pollenflug
        entities:
        - entity: sensor.ambee_pollen_grass
        - entity: sensor.ambee_pollen_tree

Das Ergebnis sieht dann wie folgt aus:

Pollenflug in Home Assistant anzeigen

Natรผrlich kann man mit den Daten der kostenlosen Api noch viel mehr Dinge anstellen. Wie wรคre es zum Beispiel mit automatischen Benachrichtigungen oder anderen Funktionen?

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

14 Gedanken zu „Aktuellen Pollenflug in Home Assistant anzeigen“

    • Hi Marco,
      schau mal in den Logs, ob dir da eine Fehlermeldung gezeigt wird. Ebenso kannst du bei ambee selbst einmal nachschauen, was die sagen. Ggf. ist das kostenlose Limit (durch zu viele Aufrufe in zu kurzer Zeit) aufgebraucht?

      VG

      Olli

      Antworten
  1. Hallo Olli,
    Wenn ich in der Serversteuerung die Konfiguration prรผfe erhalte ich folgende Fehlermeldung.

    Invalid config for [sensor.template]: expected dictionary for dictionary value @ data[’sensors‘][‚cards‘]. Got [OrderedDict([(‚type‘, ‚glance‘), (‚title‘, ‚Pollenflug‘), (‚entities‘, [OrderedDict([(‚entity‘, ’sensor.ambee_pollen_grass‘)]), OrderedDict([(‚entity‘, ’sensor.ambee_pollen_tree‘)])])])]. (See ?, line ?).

    Hast Du einen Tipp fรผr mich? In der Config.yaml habe ich einen grรผnen Haken.

    Antworten
    • Hi Andrรฉ,

      der Fehler scheint bei der Darstellung in Lovelace aufzukommen („…cards…glance“). Ich habe meinen Lovelace-Code aus dem Beitrag hier gerade 1:1 live getestet und es lรคuft ohne Probleme.

      Hast du an der Darstellung Anpassungen vorgenommen? Kannst du deinen Lovelace-relevanten Code hier reinkopieren?

      Antworten
      • Hallo Olli, bewusst habe ich da nichts gendert. Ich hofe ich kopiere Dir das Richtige rein, wie gesagt bin ich blutiger Anfรคnger was YAML angeht. – platform: template
        sensors:
        ambee_pollen_tree:
        icon_template: „mdi:tree-outline“
        friendly_name: „Bรคume“
        value_template: >-
        {% set state = state_attr(’sensor.ambee_pollen‘, ‚tree_pollen‘) %}
        {% if state == „Low“ %}Niedrig
        {% elif state == „Moderate“ %}Mittel
        {% elif state == „High“ %}Hoch
        {% elif state == „Very High“ %}Sehr hoch
        {% else %}Unbekannt{% endif %}
        – platform: template
        sensors:
        ambee_pollen_grass:
        icon_template: „mdi:grass“
        friendly_name: „Grรคser“
        value_template: >-
        {% set state = state_attr(’sensor.ambee_pollen‘, ‚grass_pollen‘) %}
        {% if state == „Low“ %}Niedrig
        {% elif state == „Moderate“ %}Mittel
        {% elif state == „High“ %}Hoch
        {% elif state == „Very High“ %}Sehr hoch
        {% else %}Unbekannt{% endif %}
        cards:
        – type: glance
        title: Pollenflug
        entities:
        – entity: sensor.ambee_pollen_grass
        – entity: sensor.ambee_pollen_tree

        Antworten
  2. Moin,
    funktioniert die Pollenabfrage bei dir noch mit den Befehlen oben?
    Bei mir kommt immer nur „Unbekannt“ als Status.

    Wenn ich auf Ambee schaue werden dort Abfragen protokoliert, aber irgendwie kommt es nicht im Dashboard an.

    Antworten
    • Moin moin! ๐Ÿ™‚

      Tatsรคchlich war der Code fรผr den API-Call in der ursprรผnglichen Form nicht mehr funktional, da Ambee ร„nderungen an der API vorgenommen hatte. Ich habe im Beitrag den Code entsprechend aktualisiert und gerade an meinem System erfolgreich getestet.

      Vielen Dank fรผr den Hinweis und sorry fรผr den „Fehler“!

      Antworten
  3. Hallo Olli,

    Ich finde gerade als Neuling in HA deinen Blog echt klasse.
    Gerade versuche ich deine Pollenflugfunktion nachzustellen, leider vergeblich.
    In YAML bin ich quasi ein Embryo, sicher habe ich nur etwas nicht richtig eingerรผckt oder so.
    Kannst Du mich unterstรผtzen?

    GruรŸ Andrรฉ

    Antworten
  4. Hallo Olli,
    toller Ansatz, den ich gleich versucht habe, nachzubauen. Allerdings wirft Home-Assistant einen InvalidStateError „State max length is 255 characters.“ aus. Funktioniert bei Dir der Sensor aktuell noch? Wie kann ich den Fehler eingrenzen?

    Antworten

Schreibe einen Kommentar