Heute war mal das Ziel, ein Miniprojekt binnen Tagesfrist durchzuziehen. Ausgewählt habe ich dafür einen kleinen Klimalogger, da mich unsere „Wetterstation“ wegen eines fast unleserlichen Displays fürchterlich nervt. Die Teile sind vorhanden und die erforderliche Software ist auch vorbereitet, wenngleich nicht spezifisch für die Lösung angepasst. Auch will ich wissen, ob die ESP32-Controller die Wetterverhältnisse im Außenbereich aushalten.
Projekt: Logger für Klimadaten
Kontakt: Boris Dirnfeldner
Link: – eigenes Projekt –
Ziel:
An sich will ich wissen, wie sich die Controller-Elektronik in den verschiedenen Wetterverhältnissen von Hochsommer und Winter bewährt. In der Solaranlage werkelt ein Raspberry in einem DIN-Gehäuse und macht es sich dort selber warm, sollte also keine Probleme haben.
Der Controller hier dürfte weniger Komfort genießen, zumal er zwingend (bzw. der Sensor) dem Wetter ausgesetzt werden muss. Da ich in anderen Projekten auch mit Wettereinflüssen klarkommen muss, will ich erst mal ein einfaches Minimalsystem austesten.
Unabhängig davon sollen die Werte für andere Projekte verfügbar sein und für mich als Benutzer angezeigt werden.
Konzept:
Es soll eine kleine Einheit im Carport die wichtigsten Klimadaten erfassen (Temperatur, Luftfeuchte und Luftdruck) und per MQTT auf den Hausbus schicken. Eine Loggersoftware soll die Daten kontinuierlich in eine Datenbank wegsichern. Zuletzt soll eine kleine Webseite die aktuellsten Daten visualisieren.
Zeitrahmen für die Lösung ist ein Tag (bzw. eher ein halber da ich den Entschluss unter Tags getroffen habe). Der Sensor soll ein BME280 sein an einem kompakten ESP32 zur Netzwerkanbindung. Der Softwareanteil besteht neben der Controllersoftware aus weiteren Python-Services auf dem Haus-Raspberry. Der MQTT-Server ist schon da, ebenso ein WLAN zur Anbindung. Das Ganze soll in ein einfaches Gehäuse mit guter Durchlüftung. Als Stromversorgung soll ein altes USB-Netzteil mit 5V und Mikro-Stecker herhalten.
Software:
Für den ESP32 ist bereits das meiste als Basislibrary da und in C++/Arduino gelöst. Mit dabei ist ein fertiges Logging, ein Scheduler, Wifi-Anbindung und das rudimentäre MQTT-Handling. Primärer Aufwand ist die Produktausprägung einzuarbeiten, die Libs zu aktualisieren und manche Konfig-Details für das Heimnetz anzupassen. Die Umgebung kann so schnell dazu gebracht werden in einer definierten Zeitspanne den Sensor auszulesen und an den MQTT-Bus zu schicken.
Elektronik:
Der Teil ist eigentlich wirklich einfach. Ein BME280 Breakout-Board muss mit dem ESP Controller per 4 Leitungen verbunden werden (Strom und I2C). Diesmal soll es nicht mit Dupont-Kabeln laufen, sondern eine feste Kabelverbindung. Die Teile nehme ich damit ohne Pins aus dem Vorratsfundus (ungetestet). Da ich löten hasse, dauert es dann doch etwas. Danach Software draufgeladen und Testlauf. Siehe da, wieder mal geht nix, der Sensor wird nicht erkannt. Zum Glück und mit den Erfahrungen der letzten Runden habe ich einen I2C-Scanner als Controller-Software bereit, aber die findet auch nix. Strom bekommt der Sensor laut Multimeter. Vermutlich habe ich also wieder die I2C-Verbindungen verwechselt. Also die beiden Leitungen rausgelötet, mit dem Scanner umgekehrt getestet und siehe da, da taucht ein Gerät auf. Dabei zeigt sich auch, dass die Busadresse eine andere ist als sonst (0x77 statt 0x76). Also nun richtig angelötet und die Software angepasst und plötzlich liefert der Sensor auch Daten. Das Ganze wird in eine Kaugummidose aus Plastik reingepackt, die mit einigen Löchern versehen wurde zur Durchlüftung. Der Sensor ist mit einem Klebepad am Deckel montiert, der ESP klemmt im Gehäuse recht stabil drin. Da das Teil nicht bewegt wird, sollte es so erst mal passen.
Datenbank-Logger:
Der Logger wird einfach aus den anderen Projekten mit Python wiederverwertet. Die entsprechenden MQTT-Themen abonnieren und bei Eingang in getrennte Tabellen eine SQLite-Datenbank schreiben. Das Ganze noch als Service konfiguriert und schon ist das Teil fertig.
Weboberfläche:
Auch hier wird Bestandscode wiederverwertet. Die Oberfläche der Solaranlage stark vereinfacht (nur 3 Anzeigen), zeitbasierte Aktualisierung der Daten aus der Datenbank und schon sehe ich die Werte ansprechend dargestellt im Browser.
Zwischenfazit:
An sich funktioniert das alles. Allerdings fällt auf, dass im Vergleich der Sensor ca. 4°C mehr Temperatur anzeigt als die Wetterstation und ca. 8% mehr Luftfeuchte. Zwar folgen die Werte dem Tagesverlauf und sind auch nicht notwendigerweise gleich (weil der andere Sensor an der Außenseite des Carports hängt), sind aber trotzdem durchwegs und deutlich zu hoch. Nach etwas Recherche haben viele Leute das Problem speziell mit dem Sensor. Dabei gehen die Probleme von schlechten Fälschungen über Fabrikationsfehler hin zu Verfälschungen durch die Wärmeabgabe des ESP und des Sensors selber. Manche trennen Controller und Sensor um bis zu 20cm voneinander, andere arbeiten mit langsamen Lüftern. Da ich einen China-Nachbau habe, kann natürlich alles stimmen oder nichts. Leider fehlt mir auch ein kalibriertes Vergleichsmessgerät, damit muss ich mit der Wetterstation als Vergleich vorerst leben.
Anpassungen:
Eine vom Hersteller (Bosch) genannten Maßnahmen ist die Parametrisierung des Sensors. Anscheinend sollte der Sensor, je nach Einsatzgebiet, mit verschiedenen Parametern zu Filter und Sampling versehen werden. Die für Wettermessung geeigneten Parameter lassen sich leicht anpassen. Damit sollte der Sensor eigentlich besser funktionieren. Um die Wärme des ESP besser zu vermeiden läuft das System erst mal mit geöffnetem Deckel (damit der Sensor im Freien) und für den ESP sind zur Entlüftung noch ein Paar Löcher dazu gekommen (diesmal ins Gehäuse). Damit stimmt die Temperatur nun auf 0,5°C genau überein und ist damit auch gut genug. Die Luftfeuchte passt allerdings immer noch nicht.
Ein Versuch mit einer Trennwand aus Karton zur Abtrennung von ESP und Sensor verschlechtert das Ergebnis wieder. Vermutlich kommt nun wieder weniger Frischluft an den Sensor oder so. Da die Temperatur nun aber gut genug zu sein scheint, lasse ich das Teil erst mal so laufen. Wettertechnisch ist es ausreichend geschützt und für alles andere taugt das „Gehäuse“ ohnehin nicht. Auf Lüfter oder ein gedrucktes Gehäuse verzichte ich erstmal, bis ich hier eine wirkliche Lösung habe. Auch würde es den gesetzten Zeitrahmen überschreiten.
Fazit:
An sich ist es ganz gut gelaufen. Das Konzept funktioniert und die Werte der Temperatur passen so. Damit kann ich ganz gut sehen, ob das Teil so über den Winter kommt oder ob Minusgrade hier zu viel des Guten sind. Ob ich beizeiten noch Korrekturen der Werte, z.B. über Offsets einbaue muss ich die nächsten Tage sehen. Grundsätzlich wäre auch ein neues Gehäuse oder ein anderer Sensor zum Vergleich eine Option. Aber vorerst bleibt es so wie es ist.