Feinstaubsensor – Teil 11: Datenabruf

Der Eigenbau-Feinstaubsensor ist am Netz und liefert seine Daten an Madavi.de, Luftdaten.info und OpenSenseMap.org. Soweit ist alles gut, aber nun möchten wir die Sensordaten selbst sehen, oder selbst nutzen. Und vielleicht nicht nur die Daten des eigenen Sensors, sondern auch fremde. Ein paar Möglichkeiten habe ich in den vorhergegangenen Artikeln bereits gezeigt. Die fasse ich hier noch einmal zusammen und zeige ein paar weitere. Da dürfte für jeden was dabei sein.

Zuerst verweise ich wieder auf die originale Anleitung des Stuttgarter Feinstaub Projekts, die man in jedem Fall gelesen haben sollte, wenn man sich an den Eigenbau eines Feinstaubsensors machen will.

Aktuelle WerteDirekter Zugriff auf den eigenen Feinstaubsensor

Am einfachsten ist natürlich der direkte Zugriff auf die Weboberfläche des eigenen Feinstaubsensors. Dort werden stets die aktuellen Werte angezeigt, allerdings keine Historien und keine Grafiken. Und was wohl die größte Einschränkung darstellt: Das funktioniert nur innerhalb des eigenen Netzwerks. (Es sei denn, man hat sich einen VPN-Zugang aus dem Internet ins Home-Netz realisiert.) Die Sensor-Webseite rufen wir auf mit:

http://feinstaubsensor-ID.local/

wobei ID durch die jeweilige Chip-ID des Feinstaubsensors zu ersetzen ist. In meinem Fall wäre das: http://feinstaubsensor-534958.local/. Falls es mit dem Namen nicht funktioniert, kann man auch einfach die IP-Adresse des Feinstaubsensors benutzen (am Router auslesen).

Im Hauptmenü wählen wir gleich den ersten Menüpunkt Aktuelle Werte und bekommen die derzeitigen Sensorwerte angezeigt – so wie im Beispiel rechts.

Anzeige des Feinstaubsensors in Karten

Luftdaten.info

Das hatten wir bereits im letzten Artikel gesehen. Nach Freischaltung wird unser Sensor in der Feinstaubkarte von Luftdaten.info geführt und wir können dort die Feinstaubwerte (im Moment nur diese und nicht die Temperatur) anzeigen. Dazu gibt es eine Historie in Form von zwei Diagrammen.

Luftdaten.info

Madavi.de

Eine ähnliche Karte wie bei Luftdaten.info gibt es auch bei Madavi.de unter https://www.madavi.de/sensor/feinstaub-map-sds/. Die unterscheidet sich von ihrem Pendant bei Luftdaten.info nur dadurch, dass die Seitenleiste mit den Werten der Sensoren bereits eingeblendet wird, wenn die Maus über eine Wabe geführt wird und durch das Fehlen der Grafiken. Interessanterweise stellt Madavi.de aber auch eine Karte der Temperatur- und Luftfeuchtigkeitswerte zur Verfügung, die es bei Luftdaten.info noch nicht gibt. Der Link lautet https://www.madavi.de/sensor/feinstaub-map-sds/.

OpenSenseMap.org

OpenSenseMap bietet als Startseite bereits eine Kartenansicht. Zum eigenen Sensor – falls man ihn dort als senseBox eingetragen hat – kann man in die Karte hinein zoomen, oder man nimmt den Direktlink:

https://opensensemap.org/explore/ID

ID ist hier durch die senseBox-ID zu ersetzen, das ist nicht die Chip-ID des Mikrocontrollers, sondern eine eigene von OpenSenseMap vergebene Kennung. Für meinen Sensor lautet der Link: https://opensensemap.org/explore/597dfd52fe1c740011e50de2.

OpenSenseMap.orgOpenSenseMap zeigt nicht nur die Feinstaubwerte an, sondern auch die Temperatur und die Luftfeuchtigkeit. Bei einem Klick auf einen der Werte öffnet sich dazu ein kleines Diagrammfenster mit der Grafik der letzten 48 Stunden. Im Diagramm kann mit der Maus gezoomt werden und es lässt sich der Wert unter dem Mauszeiger auslesen. Darüber hinaus kann der Zeitraum des Diagramm frei gewählt werden. Und diese Informationen stehen nicht nur für den eigenen Sensor zur Verfügung, sondern für alle senseBoxen, die Daten an OpenSenseMap liefern.

Rexfue.de

Optisch sehr schön gemacht ist auch die Kartenansicht von Rexfue.de. Hier werden die Feinstaubwerte als farbige Säulen dargestellt. Je höher die Säule ist, desto höher ist die gemessene Feinstaubbelastung. Im Unterschied zu OpenSenseMap.org wird Rexfue.de nicht direkt von jedem einzelnen Sensor angesteuert, sondern versorgt sich auf dem Umweg über die Datenbank von Luftdaten.info. Damit sind alle Feinstaubsensoren hier automatisch enthalten.

Grafische Anzeigen

Madavi.de

Madavi Temperatur GrafikNeben den Diagrammen, die aus den Karten bei Luftdaten.info und OpenSenseMap.org aufrufbar sind, gibt es noch die Datenbank bei Madavi.de. Hier sind Grafiken über verschiedene Zeiträume (2 Tage, Woche, Monat Jahr) und gleitende Tagesdurchschnitte über die letzten 7 Tage verfügbar. Verändert kann die Anzeige jedoch nicht werden. Die nachfolgenden Links führen jeweils zu Übersichtslisten aller Feinstaubsensoren, in denen man im Browser nach der eigenen Chip-ID suchen muss, um Links zu den Grafiken des eigenen Sensors zu erhalten.

Rexfue.de

Eine sehr schöne grafische Anzeige bietet Rexfue.de, in dem man entweder in der Karte auf den entsprechenden Sensor klickt oder ihn direkt über die Sensor-ID in der URL aufruft: https://feinstaub.rexfue.de/4630. Mit Sensor-ID ist nicht die Chip-ID des Mikrocontrollers gemeint, sondern die ID, die Luftdaten.info bei der Anmeldung vergibt. Für meinen Sensor also 4630. Das Highlight ist hier, dass Feinstaub- und Temperatur/Luftfeuchte-Diagramme gleichzeitig auf einer Seite angezeigt werden und sich die Anzeige selbständig aktualisiert.

Rexfue.de

Datendownload

Der Download von Zeitreihen, also von Historien aus unbearbeiteten Rohdaten, ist ebenfalls bei mehreren Portalen möglich.

Luftdaten.info

Hier wird ein umfangreiches Archiv geführt, das zur Zeit etwa zwei Jahre zurückreicht. Einmal täglich werden die Daten aus der Datenbank exportiert und als CSV-Dateien abgelegt. Dieser Vorgang dauert inzwischen viele Stunden, so dass es schon bis in den Nachmittag dauern kann, bis die Daten vom Vortag fertig sind. Unter http://archive.luftdaten.info/ kommt man in ein Verzeichnis mit allen verfügbaren Tagen als Unterverzeichnisse. Das aktuellste ist jeweils der Vortag ganz unten in der Liste. Nach dem Klick auf den gewünschten Tag erhält man eine Liste der Sensoren. Die werden hier nicht anhand der Chip-ID gelistet sondern nach der individuellen Sensor ID (analog zur Feinstaubkarte bei Luftdaten.info). Hier ist zu beachten, dass die Sensor ID unterschiedlich ist für Feinstaubdaten auf der einen und Temperatur-/Feuchtedaten auf der anderen Seite. Man sollte in das Bestätigungsmail schauen, das man bei der Registrierung bei Luftdaten.info erhalten hat, dort stehen beide Sensor IDs drin. Aus dem Dateinamen ist ersichtlich, ob es sich um Feinstaubdaten (sds011) oder Temperatur-/Feuchtedaten (dht22) handelt. Der Inhalt einer solchen CSV-Datei sieht dann für die Feinstaubdaten folgendermaßen aus:

sensor_id;sensor_type;location;lat;lon;timestamp;P1;durP1;ratioP1;P2;durP2;ratioP2
4630;SDS011;2328;48.170;11.601;2017-10-29T00:01:58;10.70;;;6.47;;
4630;SDS011;2328;48.170;11.601;2017-10-29T00:04:25;9.57;;;7.00;;
4630;SDS011;2328;48.170;11.601;2017-10-29T00:06:54;11.50;;;7.00;;
...

Und so für Temperatur und Luftfeuchtigkeit:

sensor_id;sensor_type;location;lat;lon;timestamp;temperature;humidity
4631;DHT22;2328;48.170;11.601;2017-10-29T00:01:58;6.80;99.90
4631;DHT22;2328;48.170;11.601;2017-10-29T00:04:26;6.80;99.90
4631;DHT22;2328;48.170;11.601;2017-10-29T00:06:54;6.80;99.90
...

Diese Zeitreihen sind nicht nur für den eigenen sondern für alle Sensoren abrufbar. Die Koordinatenangaben innerhalb der Dateien helfen bei der Verortung.

Madavi.de

Während Luftdaten.info einmal am Tag die CSV-Dateien für den Vortag exportiert, macht Madavi.de das nahezu in Echtzeit. Unter diesem Link https://www.madavi.de/sensor/csvfiles.php erhält man zuerst eine Liste der verfügbaren Sensoren, wobei Madavi (im Unterschied zu Luftdaten.info) wieder die Chip-ID als Unterscheidungskriterium verwendet. Ihr wird „esp8266-“ vorangestellt. Bei meiner Chip-ID 534958 ist die Sensorbezeichnung folglich esp8266-534958. Nach einem Klick darauf eröffnet sich eine Zeithistorie mit täglichen CSV-Dateien über das letzte Vierteljahr und falls ältere Daten vorhanden sind, monatlichen ZIP-Archiven mit den entsprechenden Tagesdateien. Der Inhalt einer CSV-Datei sieht dann folgendermaßen aus:

Time;durP1;ratioP1;P1;durP2;ratioP2;P2;SDS_P1;SDS_P2;Temp;Humidity;BMP_temperature;
  BMP_pressure;BME280_temperature;BME280_humidity;BME280_pressure;Samples;Min_cycle;
  Max_cycle;Signal
2017/10/29 00:01:59;;;;;;;10.70;6.47;;;6.80;99.90;;;;;;636612;225;27606;-87
2017/10/29 00:04:26;;;;;;;9.57;7.00;;;6.80;99.90;;;;;;636730;225;27553;-89
2017/10/29 00:06:55;;;;;;;11.50;7.00;;;6.80;99.90;;;;;;635722;225;27613;-87
...

(Die Kopfzeile habe ich hier nur der Übersichtlichkeit halber auf drei Zeilen umgebrochen.) Im Unterschied zu Luftdaten.info gibt es keine Ortskoordinaten, dafür sind sowohl Feinstaub- als auch Temperatur. und Feuchtigkeitswerte in einer Datei vereint. Und ganz am Ende der Zeile findet sich sogar noch den WLAN-Empfangspegel.

OpenSenseMap.org

Auch OpenSenseMap exportiert die Datenbankinhalte tageweise im Nachhinein in CSV-Dateien. Aber – wen wundert’s – natürlich wieder in einem unterschiedlichen Format zu den beiden Vorgenannten. Der Einstieg erfolgt bei https://archive.opensensemap.org/ mit der Auswahl des gewünschten Tages. Der gestrige Tag steht dabei ganz oben und das Archiv reicht gute drei Jahre zurück. Im Ordner des selektierten Tages kann man dann nach der eigenen senseBox suchen. Das geht natürlich über die senseBox-ID, aber auch zusätzlich über den senseBox-Namen, den wir selbst vergeben haben. Die Bezeichnung des Unterordners besteht nämlich aus beidem, der senseBox-ID und dem angehängtem Namen. Ich kann also einfach nach Biederstein suchen, denn meine senseBox heißt Feinstaubsensor Biederstein.

Im Ordner liegen dann fünf Dateien. Das sind vier CSV-Dateien für die vier Sensoren, erkennbar an den unterschiedlichen Sensor-IDs und eine Json-Datei. Letztere beschreibt die senseBox und die Sensoren und sieht – wenn ich sie ein wenig in Form bringe, so aus:

{
  "name":"Feinstaubsensor Biederstein",
  "id":"597dfd52fe1c740011e50de2",
  "boxType":null,
  "exposure":"outdoor",
  "model":"luftdaten_sds011_dht22",
  "loc":{"geometry":null},
  "sensors":[
    {"title":"PM10","unit":"µg/m³","sensorType":"SDS 011","id":"597dfd52fe1c740011e50de6"},
    {"title":"PM2.5","unit":"µg/m³","sensorType":"SDS 011","id":"597dfd52fe1c740011e50de5"},
    {"title":"Temperatur","unit":"°C","sensorType":"DHT22","id":"597dfd52fe1c740011e50de4"},
    {"title":"rel. Luftfeuchte","unit":"%","sensorType":"DHT22","id":"597dfd52fe1c740011e50de3"}
  ]
}

Eigentlich alles selbsterklärend. Und so simpel ist dann der Inhalt einer der CSV-Dateien – hier als Beispiel der Temperatursensor:

createdAt,value
2017-10-29T00:02:00.191Z,6.80
2017-10-29T00:04:27.813Z,6.80
2017-10-29T00:06:56.204Z,6.80
...

Darüber hinaus bietet OpenSenseMap.org auf der Website über den Menüpunkt Datendownload auch die Möglichkeit, Daten über definierbare Zeiträume und für bestimmte Sensorarten abzurufen.

Datenabruf per API-Schnittstelle

Luftdaten-APIHaben wir mit dem Datendownload im vorhergehenden Abschnitt nur statische Dateien abgerufen, die vom Anbieter vorher aus der Datenbank extrahiert wurden, so greifen wir nun per API mit einer Abfrage direkt auf die Datenbank zu. Eine API ist eine Programmierschnittstelle (Application Programming Interface) und damit eine mächtige aber oft auch komplexe Angelegenheit. Ich maße mir nicht an, die folgenden APIs auch nur ansatzweise verstanden zu haben und werde deshalb auf die jeweilige Original-Dokumentation verweisen und jeweils ein kleines Beispiel geben.

Luftdaten.info

Link zur Doku: https://github.com/opendata-stuttgart/meta/wiki/APIs unten bei Ausführlichere Beschreibung.

Abfragekommando: http://api.luftdaten.info/v1/sensor/4631/. Die Abfrage liefert die Sensordaten der letzten 5 Minuten für eine bestimmte Sensor ID. 4631 ist meine Sensor ID für den DHT22-Temperatur- und Luftfeuchtesensor. Das Ergebnis ist ein JSON-String, der rechts lesefreundlich visualisiert wird. In den letzten 5 Minuten wurden 2x Sensordaten geliefert, jeweils für Temperatur und für Luftfeuchtigkeit. Im Unterschied zum Abruf von CSV-Dateien bei Luftdaten.info (siehe oben), die nur einmal täglich für den Vortag zur Verfügung gestellt werden, bekommen wir hier die Daten in Echtzeit direkt aus der Datenbank geliefert.

OpenSenseMap APIOpenSenseMap.org

Link zur Doku: https://docs.opensensemap.org/.

Abfragekommando: https://api.opensensemap.org/boxes/597dfd52fe1c740011e50de2/sensors. Hier wird die letzte Meldung der senseBox abgefragt. Das Ergebnis ist wieder ein JSON-String, der neben der senseBox-ID die Daten für alle 4 Sensoren beinhaltet (siehe Bild links).

Rexfue.de

Link zur Doku: https://rexfue.de/Feinstaub_API.pdf.

Auch Rexfue.de bietet eine API-Schnittstelle, über die – analog zu Luftdaten.info – je nach Sensor-ID ein JSON-String für die Feinstaub- oder die Temperatur/Luftfeuchtewerte abgerufen werden kann. Hier ein Beispiel für meine Feinstaubwerte: https://feinstaub.rexfue.de/api/getdata?sensorid=4630.

Madavi.de

hat wohl auch eine API, die wird aber scheinbar nur genutzt um die Daten von den Sensoren zu empfangen und um die täglichen Datenbankexporte und Diagrammaufbereitungen zu steuern. Eine API-Dokumentation hab ich nicht gefunden und auch keine Hinweise, dass sich diese API von außen für Abfragen ansprechen ließe.

Fazit

Der Feinstaubsensor ist datenmäßig keine Einbahnstraße. Wir liefern unsere Sensordaten an verschiedene Datenbanken, aber wir bekommen auch etwas zurück. Karten, Diagramme, Zeitreihen und vor allem auch die Daten von anderen Sensoren. In ein paar Jahren wird das vielleicht einmal ein breiter und tiefer Datenpool für die Wissenschaft werden.

Eine Möglichkeit der Datennutzung habe ich bisher noch nicht angesprochen. Wir können den Feinstaubsensor so einstellen, dass er die Daten auch an einen eigenen Server und eine eigene Datenbank liefert. Darüber mehr im nächsten Artikel.

Übrigens

Wer sich meine Beispieldaten oben im Abschnitt Datendownload genauer angeschaut hat, dem ist vielleicht eine Eigenart aufgefallen, die einiges über die Arbeitsweise des Feinstaubsensors aussagt. Ich habe dort Ausschnitte aus Datenexports von drei verschiedenen Datenbanken genommen, und zwar jeweils für meinen eigenen Feinstaubsensor und für exakt den selben Zeitraum, nämlich die ersten Minuten am Morgen des 29.10.2017. Wenn man die Messwerte vergleicht, dann sind die erwartungsgemäß völlig identisch – was nicht übereinstimmt, das sind die zugehörigen Zeiten. Das muss bedeuten, dass der Feinstaubsensor selbst keinen Zeitstempel zu seinen Messwerten liefert. Entweder, weil er keine interne Uhr hat, oder weil er es sich spart, die Uhrzeit aus dem Internet abzurufen. Der Zeitstempel wird erst gesetzt, wenn der Datensatz beim jeweiligen Datenbankserver ankommt. Wenn wir annehmen (und davon dürfen wir ausgehen), dass die Datenbankserver ziemlich genau zeitsynchronisiert sind, dann kann man sogar die Reihenfolge erkennen, in der der Feinstaubsensor die Datenbanken versorgt. Nämlich so: Luftdaten.info – Madavi.de – OpenSenseMap.org. Und der Abstand zwischen zwei Messungen beträgt nicht ganz 2½ Minuten. Das wissen wir aber bereits aus der Feinstaubsensor-Konfiguration – dort ist ein Messintervall von 145 Sekunden definiert.

 


Weitere Artikel in dieser Kategorie:

7 Kommentare

  1. Helmut Hüll

    Hallo Helmut,
    deine Seite ist echt super!
    ich habe jetzt das Teil auch gebaut, mit Hilfe deiner Anleitung, und funktioniert bestens.
    mein Sensor: 28443
    Ich habe schon weitere Freunde, die auch mitmachen wollen.
    Was in deiner Seite noch fehlt,
    ist der Sensor BME280, der macht auch Luftdruck.

    Gruß von der Schwäbischen Alb
    Helmut Hüll

    Antworten
    1. Helmut (Beitrag Autor)

      Ja das stimmt, die Firmware unterstützt inzwischen zahlreiche weitere Sensoren.

      Antworten
  2. Sebastian Kraft

    Ich habe seit kurzen auch einen DIY Feinstaubsensor auf dem Balkon.
    Dieser Artikel beantwortet meine Fragen bezüglich der Speicherung der Daten, und der Abrufbarkeit von alten Daten.

    Vielen Dank für die hilfreichen Infos!

    Antworten
  3. Adrien Welter

    Hallo Helmuth,

    Super gemachte Anleitungen. Jedoch noch eine Frage.
    Ist es möglich die Daten direkt auf der Fritzbox zu speichern?
    Hintergrund : da meine Frau Allergiker ist, wollte ich den Staub in der Wohnungen messen.Entspechend wollte ich Die Daten nicht öffentlich machen.

    Antworten
    1. Helmut (Beitrag Autor)

      Daten auf der Fritzbox speichern ist kein Problem, wenn Du dort einen Speicherstick rein steckst. Du kannst die Daten aber nicht vom Feinstaubsensor direkt an die Fritzbox senden. Zum Empfang der Daten brauchst Du so etwas wie einen Webserver, der dann seinerseits die Daten aber auch auf der Fritzbox ablegen kann, wenn das die Forderung ist. Der Webserver kann im einfachsten Fall ein Raspberry Pi sein. Mehr dazu im Artikel: Sensordaten selbst speichern.

      Antworten
  4. edgar will

    ich versuche schon seit stunden auf die grafische Anzeige bietet Rexfue.de zu kommen,doch es gelingt mir nicht.
    mfg. edgar will
    edgarwill1@web.de

    Antworten
    1. Helmut (Beitrag Autor)

      Geht bei mir auch nicht, die Seite scheint derzeit down zu sein.

      Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert