Diese Wetterstation hat vor allen Dingen den Zweck, verschiedene Technologien miteinander zu verknüpfen. Dabei steht der Spaß am Basteln, die Erweiterbarkeit und die Wartbarkeit im Vordergrund. Ansonsten kann man mit einer Wetterstation heutzutage niemanden mehr hinter'm Ofen hervorlocken, aber immerhin kann ich hierbei wesentlich bessere Sensoren verwenden, als gewöhnlich in bezahlbaren Wetterstationen verbaut sind.
- Die eigentlichen Sensoren sind an einen ESP32 angeschlossen, der in C++ mit dem ESP-IDF programmiert wurde.
- Alle 5 Sekunden werden die Sensoren abgefragt und an einen MQTT-Server (Raspberry Pi 4) weitergeleitet.
- Das WLAN des ESP kann über Bluetooth eingerichtet werden.
- Ein kleines Python-Skript meldet sich beim MQTT-Broker für die Wetterdaten an und sendet die Werte an eine InfluxDB auf einem VServer im Netz.
- Auf dem VServer wird dann mit Grafana ein schönes Wetter-Dashboard dargestellt und kann von überall aufgerufen werden. Die InfluxDB bekommt auch noch die Wetterdaten von einem weiteren Sensor bei meiner Arbeitsstelle.
- Neue Sensoren (Windstärke, Regenmenge und Windrichtung) sind in Vorbereitung und können problemlos dem MQTT-Server hinzugefügt werden.
- Batteriebetriebene Sensoren (z.B. im Gewächshaus) werden mit LoRa-Funkmodulen angebunden und senden nur alle 120 s ihre Werte an den Raspberry (mit LoRa-Modul).
- Ein akkubetriebenes Anzeigemodul (STM32 mit LoRa und transflektivem LCD-Display) ist in Planung. Hier steht eine stromsparende Technik im Vordergrund. Der Akku sollte schon ein Jahr lang durchhalten.
Sensor | Aufgabe | Anzahl |
---|---|---|
SHT35 | Temperatur und Luftfeuchte | 3 |
VEML7700 | LUX | 1 |
BMP280 | Luftdruck und Temperatur | 1 |
BMP380 | Luftdruck und Temperatur bei der Arbeit | 1 |
Auf dem Raspberry sind folgende Befehle auszuführen:
sudo raspi-config nonint do_spi 0
sudo apt-get install python3-dev
Neuere Python-Distributionen (Raspberry OS ab bookworm) benötigen ein virtuelles Environment, um dort die lokalen libs zu installieren (dafür ist pipx NICHT geeignet):
cd
python -m venv wetter
source wetter/bin/activate
pip install paho-mqtt rpi-lgpio spidev pyLoRa cbor2 influxdb
Das LoRa-Modul wird an folgende Pins des Raspberrys angeschlossen:
LoRa-Modul | Raspberry |
---|---|
RST | GPIO25 |
CS/NSS | CE1 |
DI/MOSI | MOSI |
DO/MISO | MISO |
DIO0 | GPIO22 |
DIO1 | GPIO23 |
DIO2 | GPIO24 |
Das ist die Pinbelegung des Adafruits-Funk-Bonnets, die man auch nicht ändern kann. Beim Einsatz von Ra02-Modulen können auch DIO1 und DIO2 weggelassen werden.