Wie man mit wenigen Komponenten und etwas Open-Source Software seine eigene IoT Lösung aufbauen kann und dabei seine Topfpflanzen nicht verdursten lässt – und – so ganz nebenbei noch ganz viel lernt.
Inspiriert vom Buch «IoT-Programmierung mit Node-RED» von Erik Bartmann [I] habe ich mich kürzlich mit dem Virus IoT infiziert. Via Recherche im Internet bin ich auf weitere, sehr interessante Lösungen gestossen und dabei ein paar interessante Bausteine, Technologien und Konzepte kennen gelernt.
Meine Bedürfnisse:
- Messung der Erdfeuchtigkeit im Pflanzentopf
- Wireless, batteriebetriebene Sensoren
- Betrieb im geschlossenen Heimnetzwerk
- Grafische Visualisierung auf PC’s und Mobiles inkl. Alarmierung per E-Mail
- Einfach und kostengünstig
Lösungskonzept:
Die Sensoren sind via WLAN und der inhouse Netzwerkstruktur mit einem Raspberry Pi 4 verbunden, auf welchem ein IoT Stack läuft. Die Sensoren setzen periodisch die Messwerte via MQTT zum mosquitto Messagehandler ab. Dieser übergibt sie Node-RED zwecks Alarmhandling, Datenaufbereitung und Abspeicherung in influxdb. Die influxdb als Zeitreihen-Datenbank entkoppelt die Datenerfassung und Datenauswertung. Grafana agiert als voll responsives grafisches MMI und bezieht die Daten aus der influxdb.
Die Hardware:
Das Sensormodul besteht aus lediglich 11 Komponenten davon 3 aktive. Das Herzstück bildet der ESP8266 Chip (1) mit CPU, I/O Pins und integriertem WLan Modul. Der kapazitive Feuchtesensor (2) ermittelt einen Analogwert in Abhängigkeit der Erdfeuchte. Der DS2438 Chip (3) erfasst die Batteriespannung sowie die Umgebungstemperatur und stellt diese via 1 Wire Bus der CPU zur Verfügung. Als Energiespeicher dient ein LiFePO 4 Akku (5) mit nominal 3.7V und 1100mAh. Kosten für das Sensormodul betragen etwas weniger als CHF 20.-, wobei der Akku mit CHF 13.50 den Löwenanteil ausmacht. NB: Die 3 aktiven Komponenten tragen weniger als CHF 2.60 bei (AliExpress).
Der IoT Stack besteht aus einem Raspberry Pi4 mit 4GB Ram (5) sowie einem 256 GB SSD Speichermedium (6). Kosten für den IoT Stack komplett mit Netzteil zum Pi 4 liegen unterhalb von CHF 120.-.
Info: Als Programmierinterface dient ein ESP01 USB/Serial Adapter von shopofthings.ch für CHF 10.-
Der Kapazitätssensor wird über den Stecker X1 via Pin 5 (Vout), Pin 6 (GND) und Pin 4 (ADC) angeschlossen. Über die Schnittstelle X1 wird das Modul programmiert. Akku Anschluss via SV1.
Die Software:
Sensor:
Als Programmierumgebung für den Sensor eignet sich das Arduino IDE Framework. Der Code ist in C++ geschrieben:
NB: Code an den Stellen mit // ***CUSTOMIZING*** auf das Projekt anpassen!
Funktionsprinzip:
Die meiste Zeit befindet sich der ESP im Tiefschlaf. Alle 30min erwacht der ESP und fällt sofort wieder in den Tiefschlaf falls noch nicht 6 Zyklen durchlaufen wurden. Nach 6 Zyklen werden folgende Funktionen ausgeführt:
- Sensoren mit Spannung versorgen
- WIFI Verbindungsaufbau
- Sensoren auslesen
- Feuchtigkeitswerte normalisieren
- MQTT Payload String zusammensetzen
- Payload String an den MQTT Messagehandler senden
- ESP wieder in den Tiefschlaf legen
Raspberry Pi 4:
Das Aufsetzen eines Raspberry Pi 4 mit USB-Boot von einer SSD ist simpel. Andreas Spiess hat dazu in seinem Kanal das YouTube Video #341 veröffentlicht:
Man beachte dabei:
- Vergabe eines eindeutigen Hostnamen
- Nicht zwingend aber sinnvoll: fixe IP-Adresse
Das Aufsetzen des IoT Stack inklusive Docker hat er im Video #295 erklärt:
PS: Das Setup des PI 4 hat bei mir übrigens problemlos funktioniert – herzlichen Dank an Andreas Spiess!
Jetzt benötigen wir noch die Logik in Node-RED. Der folgende Flow kann mit der Importfunktion mittels dem JSON File unter dem Link importiert werden:
NB: Nach dem Import müssen die Nodes noch auf das Projekt angepasst werden.
Schliesslich muss man in Grafana ein Dashboard konfigurieren, was bei mir so aussieht:
Das wars! Ziemlich einfach – nicht?
Echt? Nein nicht ganz – weit anspruchsvoller gestaltet sich das Thema Gehäuse. Diese habe ich mit meinem 3D Drucker selbst ausgedruckt und sehen so aus:
Fazit: Das System mit 15 Sensoren funktioniert erstaunlich gut und sehr stabil. Die Laufzeit mit einer Akkuladung beträgt etwas mehr als 4 Monate.
Ziel erreicht? Grüner Daumen dankt IoT? Nicht ganz, die Pflanzen verdursten zwar nicht mehr, aber die Themen Düngung und Pflanzenschutz sind damit leider nicht gelöst – dafür habe ich ganz viel über IoT gelernt.
Literatur
[I] Bartmann, Erik (2018). IoT-Programmierung mit Node-RED. Aachen: Elektor-Verlag GmbH, Aachen
Weiterführende Links zum Thema
- Für alle «Makers» lohnen sich die YouTube Videos von Andreas Spiess. Es gibt da einiges zum Thema IoT zu entdecken unter anderem auch zu LoRa.
- Wer noch keine grosse Erfahrung mit dem Arduino IDE und/oder dem ESP8266 hat, kann auf der Homepage von Stefan Frings wertvolle Beispiele und Tipps finden. Des Weiteren ist das Internet eine sehr ergiebige Quelle für haufenweise Informationen und Beispiele.