Skip to content

Feinstaubwerte selbst messen für Luftdaten.info

Ihr habt vielleicht schon vom "Citizen Science"-Projekt Luftdaten.info gehört, das vom OK Lab Stuttgart initiiert worden ist. Dessen Ziel ist es, die Feinstaubbelastung in Stuttgart unabhängig durch Freiwillige zu messen, zu visualisieren, und so Maßnahmen für eine bessere Luftqualität mit Offenen Daten zu unterfüttern. Mehr dazu auch in diesem Beitrag in DRadio Wissen (das nebenbei bald Deutschlandfunk Nova heißen wird).

Platinen und Sensoren
NodeMCU ESP8266, Temperatursensor DHT22 und Feinstaubsensor SDS011

Ursprünglich sollte nur die Feinstaubbelastung der schwäbischen Metropole gemessen werden, aber mittlerweile sind Sensoren in ganz Deutschland und sogar in anderen Ländern auf der Luftdaten-Karte verzeichnet. Auch mein Sensor (ID 1777) misst seit ein paar Tagen die Feinstaubbelastung und ist damit einer von momentan vier Sensoren in Wiesbaden.

Als ich das erste Mal von Luftdaten.info gehört hatte, war ich gleich begeistert und ein eigener Sensor stand sofort auf meiner Todo-Liste. Diese Woche war es endlich so weit: Alle benötigten Bauteile waren (z.T. nach wochenlanger Reise aus China, der Feinstaubsensor ist hierzulande kaum erhältlich) eingetroffen, und ich hatte etwas Zeit zum Basteln.

Sensor zusammenbauen

Die ausführliche Bauanleitung für den Feinstaubsensor erläutert die einzelnen Schritte vom Einkauf der Hardware, über das Einspielen der Firmware, den Zusammenbau der Elektronik und der restlichen Hardware bis hin zur Konfiguration der Messstation. Ich spare mir daher eine Beschreibung der einzelnen Schritte, die ziemlich problemlos klappten.

Beim Konfigurieren habe ich zu spät daran gedacht, dass sich die Messstation nach dem Speichern der WLAN-Verbindung direkt mit dieser verbindet und der Kontakt zunächst einmal abrupt abreißt. Ich hätte gern noch weitere Optionen gesetzt, z.B. den Passwortschutz. Zum Glück kann man sich wieder mit dem Sensor im eigenen Netzwerk verbinden, sobald man seine neue IP-Adresse herausgefunden hat.

Zu guter Letzt kann es eine Weile dauern, bis der eigene Sensor im Netzwerk von luftdaten.info registriert wird, da dies manuell geschieht (Danke für den Hinweis, Sebastian). Erhält man schließlich die Antwort-Mail, stehen darin auch die Sensor-IDs, die für das REST-API (siehe unten) benötigt werden. Ich hatte zunächst versucht, das API mit der ID meines ESP8266-Chips abzufragen, was natürlich scheiterte.

Graue Abflussrohre und Temperatursensor
Der fertige Feinstaubsensor versteckt sich in grauen Rohren, nur der Temperaturfühler guckt raus

An die Messwerte rankommen

Je nachdem, welche Häkchen man in der Konfiguration gesetzt hat, sendet die Messstation ihre Daten an zwei API-Endpunkte:

Zusätzlich kann man sich die API auch auf dem eigenen Server installieren (Quellcode) und seine Daten dorthin schicken. Das aber nur am Rande, weil ich das selbst noch nicht getan habe.

Will man nun die Daten des eigenen Sensors (bei mir sind es zwei Sensoren: der Feinstaubsensor SDS011 und der Temperatur/Luftfeuchte-Sensor DHT22, es gehen offenbar aber noch mehr) abfragen, so geschieht das über das REST-API:

$ curl -X GET -L --url http://api.luftdaten.info/v1/sensor/1777 -H 'Content-Type: application/json' -o 1777.json

Als Rückgabe erhält man ein JSON-Array mit den letzten (bis zu 5?) Messwerten. Ein komplettes Messwert-Objekt könnte wie folgt aussehen; id, timestamp und location erklären sich von selbst, die sampling_rate ist bei mir immer null; es folgen Informationen zum Sensor (dem SDS011 von inovafit) und schließlich die Messwerte (P1 für PM10, P2 für PM2,5):


{
    "id": 98272789,
    "sampling_rate": null,
    "timestamp": "2017-04-24 20:50:11",
    "location": {
      "id": 886,
      "latitude": "50.082",
      "longitude": "8.222",
      "country": "DE"
    },
    "sensor": {
      "id": 1777,
      "pin": "1",
      "sensor_type": {
        "id": 14,
        "name": "SDS011",
        "manufacturer": "Nova Fitness"
      }
    },
    "sensordatavalues": [
      {
        "id": 250921161,
        "value": "7.13",
        "value_type": "P1"
      },
      {
        "id": 250921162,
        "value": "4.62",
        "value_type": "P2"
      }
    ]
  }
 

Sollen die Daten automatisiert weiterverarbeitet werden, ist zu beachten, dass für einen Messpunkt nicht immer beide sensordatavalues enthalten sein müssen. Man sollte in seinem Skript also immer auf den value_type prüfen, um den richtigen Wert zu bekommen.

Sinnvoller wäre es natürlich schon, (zusätzlich) einen eigenen API-Endpunkt aufzusetzen und die Daten in einen geeigneten Store zu schreiben. Vielleicht hole ich das demnächst noch nach, aktuell werden die Messwerte aber aus dem öffentlichen API über einen RESTful Sensor von meinem Home Assistant-Server (der einen separaten Blogpost wert ist) gezogen und angezeigt.

Liniendiagramm der Feinstaub-Messwerte
Verlaufsdiagramm der Feinstaub-Messwerte in Home Assistant (mit seltsamem Fehler zwischen 1 und 2 Uhr nachts)

Interessant ist übrigens auch ein Vergleich mit den Feinstaub-Messwerten des Hessischen Landesamtes für Naturschutz, Umwelt und Geologie (für die Messstation Wiesbaden-Ringkirche): Tendenziell misst mein Sensor die gleichen Werte, d.h. wenn die "offizielle" Messung höhere Werte registriert, misst auch mein Sensor höhere Werte. Dabei liegen die beiden Messstationen ca. 800 m Luftlinie voneinander entfernt.

Fazit: Ein cooles Projekt und ein tolles Beispiel für Citizen Science, das relativ einfach umzusetzen ist. Vielleicht kommen in Wiesbaden ja noch ein paar weitere Feinstaub-Sensoren dazu, ich könnte mir auch vorstellen, als Gruppe (z.B. im CCC) welche zu basteln.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Frank am :

Frank

Kannst Du etwas näher beschreiben, wie Du die API in Home Assistant abfragst und anzeigst? Das wäre eine große Hilfe!

Andreas am :

Andreas

Hallo. Ich würde auch gerne einen Sensor bauen. Die Teile sind bestellt, und auch teilweise schon angekommen. Allerdings würde ich an der Konfiguration scheitern. Kennst Du eine Gruppe in WI die einen hier auch helfen könnte? Dann müßte ich nicht nach Stuttgart fahren. Danke & viele Grüße Andreas

Matthias Gutjahr am :

Matthias Gutjahr

Hi Andreas, cool, dass du dir auch einen Sensor bauen möchtest. Die Konfiguration ist gar nicht so schwierig, es gibt ja auch einige Anleitungen im Netz. Ich weiß von keiner lokalen Gruppe hier (außer vielleicht der CCCMZ?), aber vielleicht sollte man tatsächlich mal einen Bastelabend auf die Beine stellen. Nach Stuttgart zu fahren halte ich jedenfalls für übertrieben ;-)

Tom am :

Tom

Hallo, ich betreibe meinen Sensor SDS011 (ID7471) seit einem halben Jahr. Jetzt zeigt er seit Wochen beharrlich viel niedrigere Werte an, als die Nachbarn, z.B. bei PM10: 1,2, die Nachbarn aber 25, bei PM 2,5: 0,8 , die Nachbarn 15.

Aus der Karte wurde ich rausgenommen.

Ist der Sensor defekt? Kann man den reparieren? Kann es am Messort liegen der in 20m über der Strasse ist? Soll ich einen neuen bestellen und austauschen?

Grüße Tom

Andreas am :

Andreas

Hallo. Ich habe jetzt alle Bauteile zusammen. Hat ja doch gedauert, bis alles aus China gekommen ist. Ich glaube das zusammenbauen würde ich evtl. hinbekommen, aber die Konfiguration nicht. Würde ich kommenden Dienstag im CCCMZ jemanden treffen der das kann?

Erich am :

Erich

Tolles Projekt! Im Zweifelsfall sollte man aber doch eher den offiziellen Messwerten trauen, da sind wesentlich teurere Messgeräte im Einsatz und zusätzlich werden Labormessungen vorgenommen. Aber soweit ich gesehen habe, bewegen sich die hier gemessenen Messwerte durchaus in der gleichen Größenordnung wie die offiziellen - Respekt!

Kommentar schreiben

Markdown-Formatierung erlaubt
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!