Ein Stadtteil bekommt mehr Umweltdaten

Immer mehr Städte rühmen sich damit, Datenplattformen zu betreiben, in der (mal mehr, mal weniger gut) öffentliche Daten aggregiert werden. Und so auch die Stadt Heidelberg, welche seit 2022 mit dem “Open Data Portal” (ODP) eine eigene Plattform zur “Bereitstellung offener Verwaltungsdaten” am Netz hat, auch wenn “Verwaltungsdaten” sich in dem Kontext des ODPs wohl eher als “alle möglichen Daten in allen möglichen Kontexten” bezieht.

Allgemein ist es ein sicherlich ein toller Trend, dass das Thema Datentransparenz und maschinenlesbare Datensätze mehr und mehr eine Rolle in der öffentlichen Hand spielt, warum dann jedoch jede Stadt eine eigene Plattform-Instanz (Heidelberg und Stuttgart nutzen z.B. Ckan-Basierte Plattformen, Köln schlägt sich mit Drupal herum und Ulm baut sich gleich komplett selber eine Lösung), geht mir noch nicht ganz auf. Wohl gibt es mit https://www.govdata.de/ eine überregionale Datenplattform, dort scheinen aber auch bei weitem nicht alle Datensätze zu liegen, Köln und Ulm z.B. haben jeweils keine Luftdaten auf dieser Plattform hinterlegt (oder ich suche falsch). Aber nur meckern bringt da bekanntlich wenig, und wenn ich nicht direkt eine stadtübergreifende Plattform für offene Daten bauen will, würde ich zumindest gern in meiner inzwischen ehemaligen Heimatstadt Heidelberg mit einer weiteren Datenquelle zumindest ein paar mehr Daten zur Verfügung stellen. Da passt es gut, dass in meinem Stadtteil Heidelberg-Wieblingen bislang nur eine Umweltdatenmessstation zur Verfügung hat. Gut, dass, wenn ich mit irgendwas viele Erfahrungen sammeln konnte über die Jahre, Umweltmessungen wohl das sind, womit ich mich am meisten beschäftigt habe. Also los, bauen wir eine weitere Wetterstation. Wenn ich für jeden Wetterstationen-Bau einen Cent bekommen würde, hätte ich jetzt fünf Cent. Das ist nicht viel, aber ein Wunder, dass es überhaupt fünf Cent wären.

Die Hardware

 

Meine Umweltmesstationen im Überblick: Früher keine Ahnung gehabt, dann alles an einen armen Arduino geklatscht, jetzt wird ein Sensor für alles verwendet (tolle Zeichnung von https://jspaint.app)

Mit der Zeit wird man weiser: Früher fand ich die Idee, einfach in einer Messstation alle Daten, die nur irgendwie möglich sind, zu erfassen, sehr reizend. Das führte aber in meiner Erfahrung zu häufigen Softwareproblemen und riesigen Bus-Adress-Konflikten und faszinierenden Crosstalk-Problemen (gerade I²C und SPI mögen sich da ganz besonders). Und wenn dann mal ein Sensor ausfällt, zerhaut es ein komplexes Netzwerk auch gerne mal komplett.

Die Hardware

Die Hardware könnte in diesem Projekt nicht einfacher ausfallen: Ein ESP32-Basierter LORAWAN-Funkender Microcontroller in einem wasserdichten Gehäuse abgeschirmt von den Elementen, mit einer durch das Gehäuse geführte 868 Mhz-Antenne und einem Anschluss für einen Sensor. Der Microcontroller wurde von mir auf einer Lochplatine aufgelötet, alle stromtragenden Traces wurden mit Nagellack vor kriechender Feuchtigkeit abgeschirmt.
 

Die Komponenten

Heltec LoRa 32 V2

Als Microcontroller habe ich wohl zur simplesten Lösung überhaupt gegriffen: Das Heltec LoRa 32 V3 ist ein leistungsstarkes IoT-Entwicklungsboard mit einem ESP32-S3-Mikrocontroller, integriertem LoRa-Modul (SX1262) und einem 0,96-Zoll-OLED-Display. Es unterstützt Wi-Fi, Bluetooth und LoRaWAN, wodurch es ideal für drahtlose Sensoranwendungen, Smart-City-Projekte und IoT-Netzwerke ist. Dank der verbesserten Leistung des ESP32-S3 bietet es mehr Rechenleistung, niedrigeren Stromverbrauch und eine größere Reichweite im Vergleich zu den Vorgängerversionen

BME680

Mein persönliches lieblings-Sensor-Paket: Der BME680 ist ein kompakter Umweltsensor von Bosch, der Temperatur, Luftfeuchtigkeit, Luftdruck und VOC-Gaskonzentration misst. Er eignet sich ideal für IoT-Anwendungen, Smart-Home-Systeme und Luftqualitätsüberwachung, da er präzise Sensordaten mit geringem Energieverbrauch liefert. Dank seiner I²C- und SPI-Schnittstellen lässt er sich einfach in Mikrocontroller-Projekte integrieren und ermöglicht eine umfassende Analyse der Umgebungsluft; hier lesen wir den Sensor über I²C aus.

Schaltbild

Zusammenbau

Die Software

Die Software habe ich möglichst einfach gehalten und deshalb mit den bereits vorhandenen Bibliotheken auf der Arduino-Plattform gearbeitet: einer Library für den BME680 (Zanshin_BME680) und der Standart-Bibilothek des LoraWAN-Senders LoRaWan_APP: Das Programm initialisiert den BME680-Sensor und das LoRaWAN-Modul, wobei es LED-Pins zur Statusanzeige setzt und überprüft, ob der Sensor korrekt erkannt wird. Anschließend läuft es in einer Schleife, in der es sich mit dem LoRaWAN-Netzwerk verbindet, Sensordaten erfasst und diese in einem strukturierten Format überträgt, wobei LED-Signale den Sendevorgang anzeigen. Nach jeder Übertragung wechselt das Programm in einen Schlafmodus, um Energie zu sparen, bevor es nach einer definierten Zeit den Zyklus erneut beginnt.
 
Hier geht es zu dem Projekt auf GitHub: paulgoldschmidt/lorawan-bme680

Die Daten abrufen

Die Daten der Wetterstation werden hier als API zur Verfügung gestellt: https://api.datenplattform.heidelberg.de/.

Ein kleines Demoscript zum Einlesen der Daten der Wetterstation und dem Einfügen in eine InfluxDB-Time-Series-Database habe ich auf GitHub Gist geteilt.

Die öffentlichen Seiten für diese Wetterstation sind sowohl unter https://www.govdata.de/ als auch direkt auf der Heidelberger Datenplattform abrufbar.