Bodenfeuchtesensor für Homematic IP bauen und nutzen (Teil 1, Grundlagen)

Wer eine Gartenbewässerung benutzt kennt das Thema: Wann sollen der Rasen, die Beete oder die Hecken am besten bewässert werden. Bisher schalte ich in einem statischen Rhytmus die Rasenbewässerung ein, die nur dann gestoppt wird, wenn der Regensensor feststellt, dass genug Regen in den vergangenen 48 Stunden gefallen ist. Mir ist das aber zu statisch und das Regenintervall im Sommer sollte anders als im Frühjahr oder im Herbst sein. Daher möchte ich die Feuchtigkeit des Bodens messen, um die Bewässerung nach Bedarf ein-/und auszuschalten.

Ich bin davon ausgegangen, dass es hierzu gute fertige Lösungen gibt, habe aber festgestellt, dass die meisten fertigen System proprietär sind und nur mit dem Hersteller der Bewässerungsanlage funktionen. Meine Steuerung soll aber über HMIP in Verbindung mit einer CCU3 erfolgen. Wie sieht eine mögliche Lösung also aus?

Hierzu habe ich dann viele auf der Basis von Arduino und ESP 8266 realisierte Projekte entdeckt, die mir im ersten Moment als sehr komplex erschienen. Nach dem ausgiebigen Studium der Projekte sowie einigen Experimenten habe ich eine für mich passende Lösung gefunden.  Die Erfahrungen auf dem Weg dahin beschreibe ich in den folgenden Beiträgen. Im Teil 1 konzentriere ich mich dabei auf die Auswahl der Hardware.

Aufgabenstellung

An mehreren Stellen im Garten soll die Feuchtigkeit des Bodens gemessen werden und die Daten an die CCU für die Steuerung einer Bewässerungsanlage versendet werden.

Die Lösung soll

  • einfach und replizierbar sein,
  • wenige Lötarbeiten beinhalten,
  • wenig Programmieruafwand erfordern,
  • robust und wartungsarm sein,
  • unabhängig von Stromkabeln sein,
  • evtl. auch für andere Sensoranwendunge (Füllstand, Bodentemperatur, etc.) verwendbar sein.

Nützliche Links

Für meine Lösung haben mir Teile der folgenden Beiträge geholfen:

Tasmota

https://tasmota.github.io/docs/ (Hier insbesondere die Erläuterung von Deep Sleep)

http://stefanfrings.de/esp8266/ (Technische Daten zum D1 Mini)

https://www.schimmer-media.de/index.php?attachment/5125-tasmota-und-der-deepsleep-20200615-pdf/ (Nette kleine Anleitung zum Umgang mit dem Deep Sleep Modus und Tasmota)

https://www.youtube.com/watch?v=-hq_Gil124k (Tasmota flashen)

https://www.verdrahtet.info/2020/05/04/tasmota-verbrauchswerte-an-homematic-uebergeben/ (Tasmota Sensordaten an CCU übertragen)

https://www.youtube.com/watch?v=mqCuiFyesq4&t=84s (Deep Sleep Programme)

Feuchtigkeitssensorprojekte

https://www.youtube.com/watch?v=x8Taq4vpRiU&t=321s (Sehr schöne Beschreibung mit Solarpanel)

https://www.raspilc.de/Tutorials/Akkubetriebener-Bodenfeuchtesensor-mit-ESP8266-und-monatelanger-Laufzeit  (Anwendung mit maximaler Energieeinsparung)

https://docs.google.com/document/d/1b7mVaYa7b8OZ57vo4sIMqi5LDa0pBODMaFfkio5MvtM/edit (Sensorprojekt mit zusätzlichem AD-Wandler und Relaissteuerung für Pumpe)

https://www.youtube.com/watch?v=8fsAj6tRKow&t=614s (Projekt mit mehreren Feuchtigkeitssensoren)

ESP und Betriebssystem

Da man für so ein Projekt "nur" einen simplen Mikrocontroller mit ein paar Ein-und Ausgängen sowie geringem Stromverbrauch braucht, habe ich mich für den ESP8266 in Form eines D1 Minis entschieden. Dieses Gerät ist super kompakt, bietet aber ausreichend Schnittstellen für Sensoren inkl. einer analogen Schnittstelle und verbraucht so wenig Strom, dass man diesen auch auch über Akkus bereitstellen kann.

Als Betriebssystem habe ich mich für Tasmota entschieden. Tasmota bietet für viele Sensoranwendungen direkt das richtige Betriebssystem und kann i.d.R. über die Tasmota WEBUI konfiguiert werden. Zum Stromsparen gibt es einen DeepSleep-Modus (komme ich später zu) und zur Kommunikation einen MQTT Client, der kontinuierlich die Sensordaten an einen MQTT-Broker schickt.

Ein riesen Vorteil von Tasmota ist, dass man die gesamte Bedienung auch über eine WLAN-Verbindung vornehmen kann. Im Gegensatz zu Sketch benötigt man keine direkte USB Verbindung sondern kann Monitor und Konfiguration direkt über WLAN nutzen. Ebenso sind über WLAN auch Updates des Betriebssyytems möglich. Dies ist ein riesen Vorteil von Tasmota.

Ich habe meinen D1 Mini von AZ-Delivery erhalten. Dieser besitzt eine MicroUSB-Buchse, so dass das Flashen mit Tasmota über diese Buchse erfolgen kann. Vor dem Flashen sollte der CH340 Treiber installiert werden, damit der Rechner den D1-Mini erkennen kann. Dieser befand sich ebenfalls auf der AZDelivery Seite.

Zum Flashen habe ich das Tool Tasmotizer  verwendet, auf das"tasmota.bin" Image zurückgegriffen und die Option "Self Resettung device" enabled. Nach dem Flashen kann über den Button "Send Config" direkt auch die WLAN-Konfiguration angebeben sowie das Senden von MQTT-Paketen enabled werden. Hierzu muss allerdings zuerst einen MQTT-Server installiert, dessen IP-Adresse im lokalen Netzwerk gesucht und in Tasmota eingetragen werden.

Die Tasmota Binärdateien können von der folgenden Seite direkt heruntergeladen werden: http://ota.tasmota.com/tasmota/release/ . Alternativ kann über die die Dropdownliste "Release ..." auch direkt ein File auf der Webseite ausgewählt werden. Mir ist aufgefallen, dass es hier (wenn die Internetverbindung nicht ideal ist) schon mal zum Crash des Tasmotizer kommen kann, so dass ich zur Sicherheit immer über die erste Option gehe.

Ich mache i.d.R. ein Backup vom D1 Mini, wenn dieser das erste Mal "geflasht" wird. Damit sichere ich mir immer die erste vom Werk vorgegebene Installation.

NACHTRAG: Ich finde allerdings die Backup-Datei der originalen Firmware Datei nach dem angeblichen Speichern nicht, so dass ich diese Option im Nachhinein nicht mehr verwende.

Ebenso habe ich festgestellt, dass ein Flashen nicht geht, wenn man für den DeepSleep-Modus bereits D0 und RST verbunden hat, so dass ich empfehke, das Flashen ohne irgendwelche PIN-Verbindungen am Board durchzuführen.

Grundsätzlich gilt:  Nach Installation und angepassten Konfigurationen macht es Sinn, diese zu sichern, um sie nach einer Neuinstallation wieder laden zu können.  Dies geschieht in der Tasmota WebUI über den Menüpunkt "Configuration / Backup Configuration". Sämtliche unter "Configuration" eingestellten Parameter sowie die selbst erstellten Rules können so gespeichert und später wieder geladen werden.

Bodenfeuchtesensoren

Schon beim Sensor trennt sich die Spreu vom Weizen. Der Umbau irgendwelcher Gardena Lösungen war für mich keine Option. Ich habe mir daher zuerst den über die verschiedenen Plattformen erhältlichen kapazitativen "Soil Moisture Sensor v1.2." beschafft, den es für wenige Euro zu kaufen gibt. Nach ersten Experimenten ist mir aufgefallen, dass dessen Genauigkeit zu wünschen übrig lässt (sehr große Sprünge bei den Messungen). Ebenso ist die Haltbarkeit im "Nassen" sehr dürftig. Man sollte ihn mit Lack, Heißkleber, etc. isolieren, damit kein Wasser in die Platine eindringt. Das Kabel ist ebenfalls sehr kurz und insgesamt zeigen die vielen Berichte im Netz auf, dass das Ding eher was für eine Saison und dann auch für etwas trockener Plätze wie Blumenkübel ist.

Gefunden habe ich alternativ den professionellen SMT50 von der Firma Truebner, den man z.B.  über DVS-Beregnung erhält. Ja, das Ding ist recht teuer, aber der Sensor ist tatsächlich für das Vergraben in der Erde gemacht, liefert zusätzlich die Bodentemperatur und ist mit einem 10 Meter Kabel ausgestaattet und so abgedichtet, dass man hier nicht selber mit Schrumpfschlauch oder ähnlichem Zeugs rumbasteln muss. Erste Tests zeigen mir sehr genaue Werte bei den Messungen an.

Erweiterung auf 4 analoge Ports

Der SMT50 liefert zwei analoge Werte: Bodenfeucht und Bodentemperatur. Leider hat der D1 Mini mit dem ESP 8266 nur einen analogen Port. Das Thema kann man aber lösen, indem man einen AD-Wandler vom Typ ADS1115 verwendet und von diesem digitale Signale an die digitalen Kanaäle des D1-Mini schickt.  Dieser Wandler bietet 4 analoge Eingangskanäle und 4 digitale Ausgangskanäle, die widerum mit dem D1 Mini direkt verbunden werden können.

Tasmota flashen

Damit der D1 Mini mit dem ADS2111 funktioniert ist es erforderlich eine spezielle Tasmota Version aufzuspielen. Dabei handelt es sich um die tasmota-sensors.bin.gz Version. Nur mit dieser wird der ADS2115 korrekt angesprochen und auf der Hauptseite angezeigt.

Beim Flashen kann man auf auf das "Firmware Upgrade Menü" auf dem D1 Mini zurückgreifen, wenn bereits die "Tasmota.bin" Version installiert ist. Wenn man diese Upgrade-Funktion aktiviert gibt es zwei Optionen: Das Upgrade via Weblink (OTA URL) oder das Upgrade via file Upload.

Man sollte nicht die Version via File Upload wählen, da sonst häufig die folgende Fehlermeldung erscheint:

Das liegt daran, dass nicht direkt auf "tasmota-sensors.bin" geflasht werden kann sondern vorher auf "tasmota-minimal.bin" geflasht werden muss. Erst anschließend kann man "tasmota-sensors.bin" flashen. Einen kleinen Beitrag dazu findet man auf https://github.com/arendst/Tasmota/issues/7560.

Einfacher ist es im Firmware Upgrade Menü die Option Upgrade via Weblink zu wählen und als OTA URL den Dateilink wie folgt einzutragen: http://ota.tasmota.com/tasmota/release/tasmota-sensors.bin.gz

Nach dem Start lädt nun zuerst" Tasmota-Minimal.bin" bevor anschließend auch "Tasmota-Sensors.bin" direkt geflasht wird. Nun ist die richtige Version auf dem D1 Mini und Ihr solltet auf der Startseite auch 4 Analog-Inputkanäle mit Werten sehen.

Natürlich kann man den D1-Mini auch direkt mit "tasmota-sensors.bin" initial flashen und spart sich somit diesen Schritt.

Akku und Zubehör

Um den D1 Mini mit Strom zu versorgen reichen Akkus aus.

Ich habe mich für einen möglichst großen Litium / Ionenen Akku der Größe 18650 mit 3400 mAh entschieden, ebenso den passenden Akkuhalter. Wichtig war mir ein eingebauter Schutz vor Überladung und Tiefenentladung im Akku. Folgende Bauteile habe ich bestellt:

Akku der Firma NITECORE: https://www.nitecore.de/akkus/18650-li-ion-akkus/nl1834/nitecore-li-ion-akku-typ-18650-3400mah-nl1834

Akkuhalter: https://www.amazon.de/Zerone-Kunststoff-Batteriehalter-Aufbewahrungsbox-Wiederaufladbare-default/dp/B07FKPL7NS/ref=sr_1_5?dchild=1&keywords=akkuhalter+18650&qid=1625931143&sr=8-5

Mein erstes Ladegerät wurde die Akku-/Powerbank Kombination von Akkuteile: https://www.akkuteile.de/ladegeraete/xtar/xtar-pb2s-2-schacht-handliche-li-ion-akku-reise-ladegeraet-powerbank_500234_2717.

Dieses Gerät hatte aber zwei wesentliche Nachteile, weswegen ich von dem Gebrauch für den hier beschriebenen Zweck abrate:

  • Das Gerät besitzt entgegen den Angaben auf der Shopseite keine 0-Volt Reaktivierung von tiefenentladenen Akkus
  • Die Powerbank wird in den Schlafzustand versetzt, wenn nicht genug Strom (wie beim D1-Mini) verbraucht wird. Man kann das Ding also nicht als externe Akkueinheit für den D1 Mini nutzen.

Das Problem mit der Tiefenentladung

Bei meinen ersten Versuchen wurde der Akku direkt an den D1-Mini angeschlossen und nach 2 Tagen war der Akku leer (richtig leer). Mit dem normalen Ladegerät von Akkuteile war nichts mehr zu machen (der Akku war angeblich defekt). Nach erneuter Recherche habe ich festgestellt, dass der Akku tatsächlich tiefenentladen war, denn der Sensor hatte kontinuierlich Strom verbraucht und die Schutzschaltung wurde nicht aktiviert. Zuerst war meine Vermutung, dass der Akku unbrauchbar geworden sein könnte. Nach Rücksprache mit NITECORE (tolle und fachkundige Hotline) gab es Entwarnung und mir wurde der NITECORE UMS2 (wichtig ist das "S" im Namen) emfpohlen, der die tiefenentladenen Akkus wieder aktiviert und auflädt.

https://www.nitecore.de/ladegeraete/u-serie/ums2/nitecore-ums2-usb-schnell-ladegeraet?c=66. Mit diesem Gerät kann man auch andere Akkus laden. Das Reaktiviern funktioniert einwandfrei und die Statusanzeigen sind wirklich super.

Und tatsächlich, das Ladegrät hat den Akku wieder voll aufgeladen. Um die Tiefenentladung zukünftig zu vermeiden und auch das Aufladen des Akkus durch ein Solarpanel zu ermöglichen ist es hilfreich, ein Lithium-Ionen Laderegler mit einem "Battery Shield" einzusetzen. Der von mir ausgewählte  Laderegler schaltet bei 2,5 V Tiefentladung ab und verschafft mir zusätzlich die Möglichkeit, den Akku über einen eigenen USB-Anschluss oder ein Solarpanel zu laden.

https://www.bastelgarage.ch/tp4056-lithium-lipo-akku-batterie-lademodul-micro-usb-5v-1ahttps://www.amazon.de/gp/product/B0798M12N8/ref=ppx_yo_dt_b_asin_title_o02_s02?ie=UTF8&psc=1

Die Dinger gibt es auch von anderen Hersteller wie z.B. AZ-Delivery.

Solarpanel

Bei den Solarpanels gibt es eine große Auswahl, die leider immer häufiger wechselt, so dass die einmal gewählten Artikel nach kurzer Zeit nicht mehr verfügbar sind. Auf folgende Punkte sollte geachtet werden:

  • Das Panel sollte zum Laderegler passen und dessen unterstützte Eingangsspannung nicht überschreiten. In meinem Fall sind dies 5V.
  • Da das Panel draußen Wind- und Wetter ausgesetzt sind, sollte das Panel gegen Wasser unempfindlich sein. Einige Panels sind insbesondere an den Kanten nochmal mit einem eigenen Schutzmantel geschützt, so dass in die Schichten zwischen Panel und Platine kein Wasser eindringen kann. Alternativ kann man versuchen, das Ganze mit Lacken dicht zu bekommen.
  • Das Panel sollte nicht zu groß sein, wenn man dieses auf der Box, in der sich die Elektronik befindet aufkleben möchte (mit Heißkleber).

Zusammenfassung Hardware

Für einen robusten Bodenfeuchtesensor benötige ich also folgende Bauteile:

  • D1 Mini mit dem Betriebssystem tasmota-sensors.bin
  • ADS1115 (AD/Wandler mit 4 Ports)
  • Akku 18650 mit Akkuhalter
  • Laderegler mit BatteryShield
  • (optional) Solarpanel
  • Witterungsbeständigen Verbindungsdosen von Spelsberg , z.B. die  Abox-i 040-L, grau, IP65 (Zum Unterbringen der Elektronik im Freien).