Luftdaten.info-Daten lokal auslesen

In einem älteren Beitrag hatte ich ja bereits über das Betreiben eines Luftdaten.info-Sensors geschrieben. Da ich immer versucht bin mein Smarthome so lokal wie möglich zu betreiben (also möglichst alle Abhängigkeiten von nicht in meinem lokalen Netzwerk liegenden Daten zu eleminieren), musste auch noch mein Feinstaub-Sensor „anders“ eingebunden werden.

Aber der Reihe nach… 🙂

Luftdaten.info heißt mittlerweile Sensor.community (offizieller Link) und bietet jedem die Möglichkeit zu Hause einen Feinstaubsensor zu betreiben und diese Daten „mit allen“ zu teilen. Wichtig ist hierbei, dass beim Teilen dieser Daten kein Rückschluss auf persönliche Daten möglich ist – deine Daten sind also „live“ sichtbar, aber eben nur anonym.

Für wenige Euros kann man die benötigte Hardware kaufen und einen solchen Sensor einrichten. Die Kombination der unzähligen Feinstaubsensoren, welche auf diese Weise bereits Daten öffentlich teilen, kann dann in etwa so aussehen für eine Gegend:

Feinstaub-Sensor

Für Home Assistant gibt es dann eine Integration, über welche man die Daten eines beliebigen solchen Feinstaub-Sensors anzeigen lassen kann (Home Assistant Luftdaten Integration).

Genau diese Integration möchte ich nun jedoch „loswerden, da meine eigenen Feinstaub-Daten bei Nutzung dieser Integration folgenden Weg zurücklegen:

  1. Datenerhebung auf meinem persönlichen Sensor
  2. Übermittlung der Daten an Sensor.Community
  3. Ermitteln der Daten durch Home Assistant von Sensor.Community
  4. Anzeige der Daten in Home Assistant

Die Schritte 2 und 3 sind also eigentlich überflüssig, da meine lokal vorhandenen Daten zuerst „nach draußen“ gegeben werden, um sie dann wieder „zurückzuholen“.

Feinstaub-Daten lokal auslesen

Zuerst musst du die IP-Adresse deines lokalen Feinstaub-Sensors ermitteln. Hierfür schaust du am besten in deinem Router (oder ähnlich) nach. Ergänz dann diese lokale IP-Adresse um folgendes Ziel „/data.json“

Rufst du diese Adresse (also http://IP-Adresse/data.json“ in deinem Browser auf, erhältst du die aktuellen Messwerte als JSON-Daten (optisch aufbereitet zur besseren Lesbarkeit hier):

{
   "software_version":"NRZ-2020-133",
   "age":"28",
   "sensordatavalues":[
      {
         "value_type":"SDS_P1",
         "value":"8.25"
      },
      {
         "value_type":"SDS_P2",
         "value":"3.03"
      },
      {
         "value_type":"samples",
         "value":"5051440"
      },
      {
         "value_type":"min_micro",
         "value":"28"
      },
      {
         "value_type":"max_micro",
         "value":"20098"
      },
      {
         "value_type":"interval",
         "value":"145000"
      },
      {
         "value_type":"signal",
         "value":"-73"
      }
   ]
}

Alles, was man nun noch tun muss, ist in Home Assistant mittels Command-Line Sensor, diese JSON-Daten einzulesen. Dies kann wie folgt aussehen:

sensor:
  - platform: command_line
    name: "Luftdata PM10"
    command: 'curl http://IP-Adresse/data.json'
    value_template: "{{ value_json.sensordatavalues[0].value | round(2) }}"
    unit_of_measurement: "µg/m³"
  - platform: command_line
    name: "Luftdata PM2.5"
    command: 'curl http://IP-Adresse/data.json'
    value_template: "{{ value_json.sensordatavalues[1].value | round(2) }}"
    unit_of_measurement: "µg/m³"
  - platform: statistics
    name: pm10 stats
    state_characteristic: mean
    entity_id: sensor.luftdata_pm10
    max_age:
      minutes: 60
  - platform: statistics
    name: pm25 stats
    state_characteristic: mean
    entity_id: sensor.luftdata_pm2_5
    max_age:
      minutes: 60

Sobald diese Command-Line Sensoren aktiv sind, sollte dir Home Assistant zwei neue nutzbare Sensoren bereitstellen:

  • sensor.luftdata_pm10
  • sensor.luftdata_pm2_5

Diese Sensoren kannst du dann in Lovelace anzeigen/nutzen!

[custom_shortcode_quicktipps]

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

AngebotBestseller Nr. 1
KETOTEK Smart Heizkörperthermostat Zigbee, Elektrische...*
  • 【Zusatzprodukt für Starter-Kit】 Besitzen Sie bereits unser...
  • 【Flexible Steuerung】 Stellen Sie die Temperatur am...

*= Preis inkl. MwSt., ggf. zzgl. Versandkosten. Letzte Aktualisierung vor 60 Minuten / Affiliate Links / Bilder von der Amazon Product Advertising API. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

7 Gedanken zu „Luftdaten.info-Daten lokal auslesen“

  1. Bei mir war der „Umweg“ über sensor.community irgendwann unzuverlässig, daher lese ich meinen Sensor wie du mittlerweile auch lokal aus. Ich nutze dafür HACS und https://github.com/lichtteil/local_luftdaten … was im Prinzip genau das gleiche macht.

    Noch eine Frage: Alternativ könnte man statt Command Line-Sensor hier auch einen REST-Sensor verwenden, oder?

    Antworten
    • Diese HACS-Integration macht letztlich das Gleiche, wie mein beispielhafter Code oder der von dir erwähnte REST-Sensor (also ja, das sollte auch gehen! ;)) – ich bevorzuge nur mittlerweile ein schlankeres Setup. Also mehr lokal und weniger notwendige Integrationen oder Add-ons. Leider habe ich zu oft erlebt, das „fremder“ Code nicht verlässlich war oder irgendwann nicht mehr aktualisiert wurde.

      Antworten
  2. In meinem Logfile kam noch ein Hinweis, den man mit der Ergänzung „state_characteristic: mean“ wegbekommt. Der entsprechende Teil des Scripts sieht dann so aus:

    – platform: statistics
    name: pm10 stats
    entity_id: sensor.luftdata_pm10
    state_characteristic: mean
    max_age:
    minutes: 60
    – platform: statistics
    name: pm25 stats
    entity_id: sensor.luftdata_pm2_5
    state_characteristic: mean
    max_age:
    minutes: 60

    Und wenn der Feinstaubsensor keine feste IP hat, geht es auch mit dem entsprechenden Namen: command: ‚curl http://feinstaubsensor-XXXXXX.fritz.box/data.json

    Antworten
    • Interessant! Was für eine Fehlermeldung gab es bei dir denn im Log? Ich habe in meines gerade einen Blick geworfen und konnte keinen Hinweis auf Probleme mit den Luftdaten-Sensoren finden.

      Antworten
  3. Guten Morgen,

    etwas genauer: Ich meine die Logfiles unter: Einstellungen/Einstellungen/Logs.

    Dort steht bei mir folgendes (ohne der Änderung):
    Protokolldetails (WARNUNG)

    Logger: homeassistant.components.statistics.sensor
    Source: components/statistics/sensor.py:207
    Integration: statistics (documentation, issues)
    First occurred: 06:50:38 (2 occurrences)
    Last logged: 06:50:38

    The configuration parameter ’state_characteristic‘ will become mandatory in a future release of the statistics integration. Please add ’state_characteristic: mean‘ to the configuration of sensor „pm10 stats“ to keep the current behavior. Read the documentation for further details: https://www.home-assistant.io/integrations/statistics/
    The configuration parameter ’state_characteristic‘ will become mandatory in a future release of the statistics integration. Please add ’state_characteristic: mean‘ to the configuration of sensor „pm25 stats“ to keep the current behavior. Read the documentation for further details: https://www.home-assistant.io/integrations/statistics/

    Es handelt sich jetzt um die Version HA 2021.12.10

    Antworten
    • Vielen Dank für die Info! Dann ergänze ich das Mal in meinem Code-Beispiel!

      Da sieht man Mal wieder, wie wichtig ein regelmäßiger Blick in die Logs ist!

      Antworten
  4. Der Hinweis auf HACS ist Gold wert. Ich war schon kurz vorm Verzweifeln, weil es mir immer wieder die Verknüpfung zu „Luftdaten“ unterbrochen hat, also keine Werte mehr angezeigt wurden. Die lokale Lösung ist spitze!

    Antworten

Schreibe einen Kommentar

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulares wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.