+-------------------+ +-------------------------+
| | | |
| frog | | frog-web |
| WHW Wetterstation | | Webserver + Datenbank |
| | | |
+---------+---------+ +------------+------------+
| ^
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| +-------------------+ |
| | | |
| | | |
+-----------> MQTT Broker +---------------
| |
| |
+-------------------+
frog ist ein in golang geschriebenes Programm, welches auf der Wetterstation läuft. Die Wetterstation ist ein Raspberry PI Zero mit WLAN und hat Sensoren für:
- Windgeschwindigkeit (Anemometer)
- Windrichtung (Windvane) und
- Regen
Weitere Sensoren die wir gerne noch hinzufügen würden:
- Temperatur Luft
- Temperatur Wasser
- Barometer
- Webcam?
Die Daten der Sensoren werden erfasst und dann über MQTT (MQTT ist ein de-facto Standard für IoT devices, hier eine 5-Minuten Erklärung auf YouTube) an einen Broker gesendet.
In der Testphase verwenden wir noch den Public-Broker von test.mosquitto.org
Die Sensordaten werden in die Channels
const TOPIC_WINDVANE = "anemo/windvane"
const TOPIC_ANEMO = "anemo/anemo"
const TOPIC_RAIN = "anemo/rain"
gepublished.
Im anemo/windvane Topic wird die Windrichtung einmal pro Sekunde geschrieben, in anemo/anemo wird die Windgeschwindigkeit gepublished. Der Sensor erzeugt mehr Daten bei mehr Wind. In anemo/rain wird pro 0.2494 mm Regen einmal gepublished.
Man kann das ganze (sofern der Sensor aktiv ist) einfach auf der Kommandozeile mit einem mqtt Client mithören:
sudo apt-get install mosquitto-clients
mosquitto_sub -v -h test.mosquitto.org -t 'anemo/windvane' -t 'anemo/anemo' -t 'anemo/rain'
frog-web ist in nodejs geschrieben und hört auf den topics mit. Die Daten werden in einer SQLite Datenbank zwischengespeichert, um rudimentäre Auswertungen machen zu können.
Um Frog Web auf dem Lokalen Rechner zu installieren muss man nodejs installiert haben (ich empfehle mit nvm) und dann folgende Befehle ausführen:
git clone https://github.com/WHW-HD/frog-web.git
cd frog-web
npm install
npm run dev
Dieser Befehl startet einene Webserver auf Port 3000 auf dem man dann die Daten sehen kann: http://localhost:3000
Viel Spaß!