Die eigene Wetterstation
Warum eine eigene Wetterstation
Angefangen hat dieses Projekt mit der Suche nach einer Funkwetterstation welche meine alte Wetterstation ablöst. Diese basierte noch auf dem Funkprotokoll s300th und das entsprechende openHAB binding wird seit Jahren nicht mehr weiter entwickelt. Zusätzlich wird ein spezieller USB Stick benötigt welcher nur für diesen Sensor Typ verwendet werden konnte. Also machte ich mich an die Arbeit eine Alternative zu finden.
Eine meiner Hauptanforderungen war, auf ein Funkprotokoll zu setzen, welches universell einsetzbar ist und gleichzeitig eine offene API bietet.
Suche nach der richtigen Lösung
In meine engere Wahl kamen schließlich Homematic, welches ich aber schnell wieder verwarf da es eine zusätzliche Steuerzentrale benötigt.
Weiterhin kam ZigBee in Betracht, welches ich aber auch verworfen habe, da es einerseits keine entsprechende Sensoren gab und für eine Selbstbaulösung zu unflexibel war. Es bot z.B. keine Custom Value Types.
Als drittes habe ich Z-Wave evaluiert. Hier gibt es seit kurzen erste Wind und Regen Sensoren. Nach kurzer Überlegung habe ich aber fertige Sensoren aufgrund des Preis Leistung Verhältnisses verworfen. Während meiner Recherche bin ich schließlich auf den Z-Uno gestoßen. Ein Arduino kompatibler Klone welcher den kompletten Z-Wave Stack mitbringt. Meine ersten Experimente starteten also mit diesem Device. Leider wurde ich auch hier schnell mit der Realität konfrontiert. Es gab Probleme mit dem Device Pairing welches entweder gar nicht funktionierte oder zu einer erneuten Registrierung führte wodurch das Device plötzlich unter einer neuen ID verfügbar war. Zusätzlich ist Z-Wave niemals für Custom Devices entworfen worden. Im Falle von openHAB wird jedes z-Wave Device in einer zentralen Datenbank in Form einer XML Datei hinterlegt, welches die Funktionen beschreibt. Dies ist natürlich für selbst entworfene Device nicht praktikabel. Eine andere Variante war das binding jar file von openHAB zu patchen und eine eigene XML Datei einfach mit rein zu kopieren. Dies war am Anfang der von mir favorisierte Weg. Letztendlich habe ich aber auch diese Lösung verworfen da das Z-Wave Protokoll selbst nicht flexibel war. Es deckte leider nicht alle von mir favorisierten Datentypen ab.
Letztendlich kam ich zu dem Schluss das nur eine komplette Selbstbaulösung incl. Übertragungsmedium die notwendige Flexibilität bieten würde. Die Grundlage hierfür bildet wieder ein Arduino Pro Mini, mit dem ich schon bei meinen Temperatursensoren, gute Erfahrungen gemacht habe.
Blieb also nur noch die Suche nach eine Übertragungsweg. Nach ersten Tests mit einem Wlan Shield, welchen ich aber aufgrund des hohen Stromverbrauchs (>120mA) schnell verworfen habe, bin ich auf MySensors gestoßen. Es ist ein offener Arduino basierender Software Stack welcher genau für solche Dinge gedacht ist. Nach ersten Tests realisierte ich schnell, das es all meine Anforderungen voll und ganz erfüllt. Folgende Eigenschaften sind hierbei hervorzuheben.
- Arduino basierend und daher sehr Stromsparend
- Hohe Reichweite dank 868Mhz Übertragung
- AES Hardwareverschlüsselung bei Verwendung des RFM69 Transeivers
- Mesh Netzwerksupport um auch weit entfernte Nodes zu erreichen
- Unterstützung verschiedenster Sensortypen incl. Custom Values
- Universeller Gateway welcher alle Sensordaten an einen MQTT Broker weiterleitet
Da ich kein separates Strom oder Netzwerkkabel verwenden wollte es zusätzlich komplett autark laufen. d.h. ohne externe Stromversorgung.
Was kann die eigene Wetterstation
Station:
- Stromversorgung über 5W Solarpanel mit 7800mAh Akku
- Batterieüberwachung (Füllstandsanzeige, Ladestrom und Spannung)
- AES (in hardware) verschlüsselte Funkübertragung
Sensoren:
- Regenmenge
- Regenstatus
- Regenheizung
- Windstärke
- Windrichtung
- Temperatur 1 & 2
- Luftfeuchtigkeit 1 & 2
- Luftdruck
- Sonnenkraft
- Helligkeit
- UV Index
- UV A
- UV B
Herausforderung für den Solarbetrieb
Ein Problem was ich am Anfang unterschätzt hatte war die autarke Stromversorgung. Meine Anforderungen waren eigentlich nicht sehr umfangreich. Haben sich aber trotzdem als schwierig erwiesen. Es sollte sowohl eine Strom/Füllstandsüberwachung haben als auch einen NTC Sensor welcher den Ladevorgang bei zu hohen oder zu niedrigen Temperaturen unterbricht. Angefangen über einen kompletten Selbstbau LiPo Charger, über einen fertigen bis hin zu diversen Solar LiPo Chargern hatte ich einiges ausprobiert. Letztendlich nutze ich eine Kombination aus deinem Solar Charger von Adafruit zusammen mit einem Strom Sensor.
Eine weitere Herausforderung war der Stromverbrauch der Wetterstation selbst. Ein 7800mAh Akku hört sich erstmal viel an. Um aber auf extreme Wetterbedingungen vorbereitet zu sein habe ich mit nur 40% der Kapazität bei tiefen Temperaturen gerechnet. Weiterhin sollte man im Winter davon ausgehen das mehr als 10 Tage am Stück keine Sonne scheint. Unter diesen Rahmenbedingen relativiert sich die Akkugröße sehr schnell.
Aktuell hat die Wetterstation folgenden Verbrauch
- Sleep Mode - 8mA (58 Sekunden pro Minute)
- Aktive Mode - 12mA (0,5 Sekunden pro Minute)
- Wireless Transmission Mode 32mA (max 1,5 Sekunden pro Minute)
d.h. sie sollte bei 40% Akkukapazität bis zu 12 Tage ohne Sonnenschein durchhalten.
Schaltplan
Oberfläche
Software
Arduino source code zu diesem Projekt kann wie immer in meinem github repository gefunden werden
https://github.com/HolgerHees/arduino_weatherstation
Bauteilliste
- Ansmann 1S3P Akkupack 3x18650 Li-Ion 3.7V 7800 mAh
- NTC für Akkuüberwachung
- Strom Sensor INA3221
- Adafruit Solar Charger
- RFM69 Transeivers
- Pololu 5V Step-Up Step-Down Spannungsregler S7V7F5
- 3.3V Spannungsregler MCP1700-3302E
- Arduino pro mini 3.3v
- Solar Panel
- Windsensor Ventus W132
- Regensensor
- NTC als Wärmesensor
- Licht sensor BH1750
- UV Index Sensor VEML 6075
- Luftdrucksensor BME280
- Luftdrucksensor Membran
- Regen Sensor / Sensor
- Alurohre
- Winkel
- Anschlussbox
- Heisskleber
- Zweikomponentenkleber