Letzens habe ich mir den Enviro+ von Pimoroni gekauft. Eigentlich war ich auf der Suche nach einer Wetterstation, deren Daten man ohne Umwege über die Cloud per WLAN abfragen kann. Leider habe ich nichts Vernünftiges gefunden oder nur sehr teure Geräte.
Es handelt sich beim Enviro+ um ein sogenanntes pHAT-format Board, das an dem I2C Anschluss eines Raspberry Pi angeschlossen wird, perfekt passend für den Raspberry Pi Zero WH. Auch eine gute Python Bibliothek mit vielen Beispielen wird gleich mitgereicht.
Gemessen wird ziemlich viel: Temperatur, Luftfeuchte. Luftdruck, Lichtstärke, Näherung, Gase (CO, NO2, C2H5OH, H2, NH3, CH4, C3H8, C4H10), Lautstärke über Mikrofon und mit einem Zusatzsensor auch PM1, PM2.5, PM10 Partikel in der Luft. Das ist besonders im Hinblick auf die Feinstaubdebatte interessant.
Auf der Seite von Pimoroni gibt es auch ein gutes Tutorial, wie man sich eine eigene Messstation mit dem Enviro+ baut um Luftgütemessungen an Luftdaten.info zu senden. Zudem steht hier wie man alles wettersicher in einem Gehäuse unterbringen kann.
Luftdaten bietet eigentlich einen eigenen Feinstaubsensor an. Aber wer sich bereits mit dem Raspberry auskennt und die Daten gerne noch für andere Zwecke nutzen will, ist beim Enviro+ besser aufgehoben.
Hier ein paar Punkte, die mir beim Zusammenbau nach dem oben genannten Tutorial aufgefallen sind:
Unbedingt einen pre-soldered Raspberry Pi Zero WH kaufen. Pre-soldered bedeutet, dass der I2C Stecker bereits eingelötet ist. WH bedeutet, dass der Raspberry Zero auch WLAN an Bord hat.
Der Raspberry Zero WH hat ganz andere Anschlüsse als seine großen Brüder. Das macht sich beim Einrichten bemerkbar: Man benötigt einen Mini-HDMI Adapter, eine micro-SD Karte und ggf. einen micro-B USB Adapter. Da es nur einen micro USB Anschluss für die Stromversorgung und einen weiteren gibt, benötigt man bei Anschluss von Tastatur und Maus ein Hub. Am Besten ist hier eigentlich das Raspberry Keyboard. Dieses hat einen Hub eingebaut. Leider braucht man hier aber wiederum einen USB-Adapter, da das mitgeliefertte Kabel nicht in den micro-USB Anschluss des Raspberry Zero passt. Wer eine Kamera anschließen will, benötigt auch hier ein anderes Kabel.
Die Schrauben: M2.5 Standoffs for Pi HATs – Black Plated für den Zusammenbau, führen dazu, dass der Enviro+ nicht gänzlich in den I2C Anschluss eingesteckt werden kann. Dies hat dazu geführt, dass ich dachte ich hätte die falschen Schrauben, aber es geht auch wenn die Steckverbindung nicht ganz abschließt.
Der Feinstaubsensor wird mit einem Stecker verbunden. Dieser rastet aber nicht ein und kann sich ggf. mal lösen.
Unklar ist wie die selbst gebaute Station mit Feuchtigkeit zurecht kommt, die z.B. über Nebel ins Gehäuse gelangt. Nach einem halben Jahr im Betrieb, gab es keine Probleme.
Ich habe zudem ein Fliegengitter angebracht, da der Feinstaubsensor ganz leicht die Luft einsaugt und dadurch ggf. Fliegen in das Gehäuse gelangen können.
Was noch gut wäre: Eine Möglichkeit um aus den Mikrofondaten Lärmbelastungswerte zu errechnen. Hier habe ich noch nicht den rechten Einstieg gefunden.
Für die Installation habe ich mir ein 5m Flachband-A zu micro-B USB Kabel gekauft und ein Tizi Mini-USB Netzteil. Das Flachbandkabel kann man gut durch irgendwelche Türen oder Fenster verlegen.
Achtung! Bevor man alles zusammenbaut unbedingt mit Win32DiskImager eine Sicherung des eingerichteten Systems durchführen. Ich hatte dies anfangs nicht gemacht. Meine SD-Karte ging dann kaputt und ich musste das System neue aufsetzen. Leider ging dies dann nicht mehr so problemlos, da das Installationsskript von Enviro+ nicht die richtigen Versionsnummern der benötigten Python-Bibliotheken enthielt. Dies führet dazu, dass ich die Bibliotheken manuell installieren musste.
Das Python Script habe ich noch angepasst, sodass neben den Luftmesswerten alle Messdaten in ein Logfile geschrieben werden. Dazu ist sicher eine 32GB Micro-SD Karte nützlich. Außerdem gibt es in dem Python-Skript einen Fehler, der bei einem Verbindungsabbruch beim Senden der Daten an Luftdaten.info dazu führt, dass nie wieder Daten gesendet werden. Auch dies habe ich in meinem Skript ausgebessert. Zu finden als Fork auf Github.
Inzwischen verarbeite ich die Daten mit einer Grafana-Instanz unter www.umwelt-olching.de. Dies werde ich in einem weiteren Blog-Post beschreiben.
Insgesamt handelt es sich bei Enviro+ um ein tolles Teil. Allerdings sollte man schon etwas Tüftellaune mitbringen.
5 Antworten zu "Enviro+ Umwelt- und Luftdaten messen"
Hi,
Danke für den Beitrag. Ich habe den Luftdatensensor nach der original Pimoroni Anleitung gebaut und suche nun Ideen die Daten zusätzlich lokal zu verarbeiten.
Leider gibts noch keinen Blog wie es mit Grafana geht 🙂
Hast du vorher die Daten in eine DB geschrieben?
Hallo Marco,
wenn ich Zeit habe schreibe ich noch einen Beitrag zu Grafana. Nur schon mal so viel: Ja ich schreibe die Daten in eine Mysql Datenbank. Ich weiß, dass das nicht “klassisch” ist und meist Influx dafür verwendet wird, aber Mysql geht auch sehr gut und ist bei vielen Hostern mit dabei. Die Daten aus der Mysql Datenbank kann man dann in Grafana als Datenquelle nutzen. Ideen für die Nutzung der Daten habe ich auch schon einige, aber zeitlich bin ich noch nicht zu viel gekommen. Z.B. kann man sich jeden Tag einen Bericht vom Vortag per Email schicken lassen. Oder man stellt die Daten auf einem Outdoor LED Display dar. Was ich auch spannend fand: Kann man das Teil mit Solarzellen und Akku betreiben?
Viele Grüße
Uli
Solarzellen und Akku will ich auch probieren. Ich denke da an eine IP44 sichere Powerbank + ca. 20w Solarpanel. Im Sommer könnte das klappen. Im Winter, oder bei wenig Sonne, wird der Akku besonders durch die Nacht nicht halten. Aber mal schauen.
Eine Frage zum Input der Daten hätte ich noch: Wie bekommst du die Daten aus dem File in die SQL DB? Ich bin auf Telegraf oder Prometheus gestoßen.
Hallo Marco, das habe ich in dem Beitrag rausgelassen, damit es nicht verwirrend wird. Ich habe mal hier einen Gist angelegt mit einer Funktion zum Schreiben in eine DB: https://gist.github.com/ulrischa/1177fe0bf7adaf8aa0f3e7fe63f80516
Dann kann man die Funktion z.B. nach dem Speichern im File aufrufen.
Hallo Uli,
Ddanke dafür. Ich habe den Teil in das Skript übernommen und lokal eine MySQL DB installiert, User und Datenbank angelegt. In den Loop habe ich das DB schreiben auch mit aufgenommen. Leider klappts nicht. Ich bekomme noch den Print für Pressure angezeigt aber kein Commit. Also kein record inserted.
Eventuell habe ich die Tabelle nicht richtig angelegt. Datenbanken bin ich nicht so fit. Ich warte auf den vollständigen Blog 🙂
Hi,
Danke für den Beitrag. Ich habe den Luftdatensensor nach der original Pimoroni Anleitung gebaut und suche nun Ideen die Daten zusätzlich lokal zu verarbeiten.
Leider gibts noch keinen Blog wie es mit Grafana geht 🙂
Hast du vorher die Daten in eine DB geschrieben?
Viele Grüße
Marco
Hallo Marco,
wenn ich Zeit habe schreibe ich noch einen Beitrag zu Grafana. Nur schon mal so viel: Ja ich schreibe die Daten in eine Mysql Datenbank. Ich weiß, dass das nicht “klassisch” ist und meist Influx dafür verwendet wird, aber Mysql geht auch sehr gut und ist bei vielen Hostern mit dabei. Die Daten aus der Mysql Datenbank kann man dann in Grafana als Datenquelle nutzen. Ideen für die Nutzung der Daten habe ich auch schon einige, aber zeitlich bin ich noch nicht zu viel gekommen. Z.B. kann man sich jeden Tag einen Bericht vom Vortag per Email schicken lassen. Oder man stellt die Daten auf einem Outdoor LED Display dar. Was ich auch spannend fand: Kann man das Teil mit Solarzellen und Akku betreiben?
Viele Grüße
Uli
Solarzellen und Akku will ich auch probieren. Ich denke da an eine IP44 sichere Powerbank + ca. 20w Solarpanel. Im Sommer könnte das klappen. Im Winter, oder bei wenig Sonne, wird der Akku besonders durch die Nacht nicht halten. Aber mal schauen.
Eine Frage zum Input der Daten hätte ich noch: Wie bekommst du die Daten aus dem File in die SQL DB? Ich bin auf Telegraf oder Prometheus gestoßen.
Hallo Marco, das habe ich in dem Beitrag rausgelassen, damit es nicht verwirrend wird. Ich habe mal hier einen Gist angelegt mit einer Funktion zum Schreiben in eine DB: https://gist.github.com/ulrischa/1177fe0bf7adaf8aa0f3e7fe63f80516
Dann kann man die Funktion z.B. nach dem Speichern im File aufrufen.
Hallo Uli,
Ddanke dafür. Ich habe den Teil in das Skript übernommen und lokal eine MySQL DB installiert, User und Datenbank angelegt. In den Loop habe ich das DB schreiben auch mit aufgenommen. Leider klappts nicht. Ich bekomme noch den Print für Pressure angezeigt aber kein Commit. Also kein record inserted.
Eventuell habe ich die Tabelle nicht richtig angelegt. Datenbanken bin ich nicht so fit. Ich warte auf den vollständigen Blog 🙂