Kein grüner Daumen? DIY IoT machts möglich!

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:

Lösungskonzept
Bild 1: Lösungskonzept der IoT Applikation (Bildquelle: eigenes Bild)

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:

Hardware
Bild 2: Hardwarekomponenten (Bildquelle: eigenes Bild)

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.-

Sensorschema
Bild 3: Schema des Sensormodul (Bildquelle: eigenes Bild)

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.

Sensor-Hardware
Bild 4: Sensormodul als Dead Bug Aufbau (Bildquelle: eigenes Bild)

Die Software:

Sensor:

Als Programmierumgebung für den Sensor eignet sich das Arduino IDE Framework. Der Code ist in C++ geschrieben:

Link zum C++ Code
Bild 5: Link zum Code auf GitHub (Bildquelle: eigenes Bild)

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:

YouTube Video RPi USB Boot
Bild 6: Link zum YouTube Video – Setup Raspberry PI 4 (Bildquelle: Screenshot Video)

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:

YouTube Video IoI Stack mit Docker
Bild 7: Link zum YouTube Video – Setup IoT Stack mit Docker (Bildquelle: Screenshot Video)

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:

Node-RED Flow
Bild 8: Link zum Node-RED Flow als JSON-File (Bildquelle: eigenes Bild)

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:

Grafana Dashboard
Bild 8: Grafana Dashboard (Bildquelle: eigenes Bild)

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:

Sensort mit 3D
Bild 9: DIY Sensor-Case mit 3D Druck (Bildquelle: eigenes Bild)

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.
Beitrag teilen

Alex Häusermann

Alex Häusermann ist Geschäftsführer der HCons GmbH, polyvalent in Betriebswirtschaft & Naturwissenschaften und fasziniert von neuen Technologien.

Alle Beiträge ansehen von Alex Häusermann →

Schreibe einen Kommentar