Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Pflanzenbewässerung
Da gibt es ja verschiedene Methoden, angefangen von der Giesskanne, über Bindfaden, Tonkegel, umgedrehte Wasserflaschen bis hin zu verschiedenen elektronischen Varianten - ich habe (fast) alle ausprobiert.
Giesskanne
Meine Pflanzen kamen auch gut ohne Elektronik aus, zwei mal die Woche giessen musste reichen. Testen, ob die Pflanze Wasser braucht mit dem Finger. Erde nass, nicht giessen, Erde trocken, giessen. Aber andere Möglichkeiten mussten ausprobiert werden :o)
Bindfaden
Einen Schnürsenkel oder Baumwollfaden in ein Glas Wasser hängen und das andere in die Pflanzenerde stecken. Damit er nicht austrocknet das ganze einfach noch durch einen Plastik-Strohhalm gezogen. Ist der Wasserspiegel über der Pflanze, läuft das ganze Wasser in die Pflanze - also nicht gut. Man muss die Pflanze oberhalb des Wassers aufstellen - sieht ja optisch nicht so toll aus. Dafür gibt es dann eigene Blumentöpfe, wo das Wasser unten drin ist. Das wollte ich mir aber nicht antun.
Wasserflasche
Einfach eine kleine Flasche mit Wasser füllen, umgekehrt in die Erde. Fertig. Sieht scheußlich aus. Habe ich jetzt nur mit einer ganz kleinen Flache gemacht. Dort noch den Deckel drauf und ein paar Löcher reingebohrt. Dann kommt nicht so viel raus und auch meine Kaktee verträgt das.
Tonkegel
Davon bin ich eigentlich begeistert, wenn es auch irgendwie nur zwei Anbieter gibt [Blumat für 4€ und aus China für 2,40€ ]. Ein Tonkegel wird mit Wasser gefüllt, und ein oben angebrachter Schlauch ins Wasser gelegt. Diffundiert das Wasser über den Tonkegel in die Erde, entsteht ein Unterdruck und Wasser wird in den Tonkegel gesaugt. Aber auch hier muss das Wasser unterhalb der Pflanze sein (siehe Bindfaden). An meine Hänge-Erdbeere habe ich eine Plastiktüte angebracht und das geht soweit ganz gut.
ESP01 mit China-Relais
ESP01 mit China-Relais
Nachdem ich mir eine kleine Pumpe für 3-5 Volt gekauft habe, wollte ich sie auch einbinden.
Direkt an den ESP-01 der Pflanzenüberwachung kann ich sie nicht anschliessen, da sie zu viel Strom für einen GPIO zieht. Also machte ich sie unabhängig. Ein ESP2866 mit Relais aus China musste her - ist V1.0. (inzwischen habe ich auch V4.0 und da gehts gleich - dafür muss man wegen dem Flackernden Relais was anderes machen). Ja, die funktionieren nicht gleich. Man muss erst CHPD (CHIP_EN) mit VCC verbinden. Leider waren bei meinem auch die Relais-Anschlüsse falsch herum eingelötet. Und dann wusste ich nicht dass ich '0' als GPIO angeben musste, nicht 13 oder LED oder sonst was. Damit er nicht so viel Energie verbraucht, habe ich den DeepSleep-Mod gemacht. Was hab ich gebraucht, um endlich die eine Seite des Kabels an den SMD-Baustein anzulöten. Und dann hatte ich am Reset Beinchen eine kalte Lötstelle. Problem: Als das alles ging stand ich vor dem Problem, dass beim Starten das Relais ganz kurz anzieht. Ich hab das jetzt mal ignoriert, damit ich vorwärts komme - Update April 2021: Die Eingangsspannung mit dem äußeren Pin des Relais verbunden (das mittlere über NO), dann Schaltet das Relais beim Strom anschliessen nicht mehr. Leider immer noch beim Wachwerden des ESP01. Lösung Juni 2021: 22 kOhm Widerstand zwischen GPIO0 und GND - danke an GitHub-forum
Man sollte seine eigene Dokumentation lesen. Im unteren Teil der Info zum Luftbefeuchtern habe ich beschrieben, dass man noch zusätzlich den R2 abkratzen muss, dann sollte es gehen. Jetzt will ich aber erst mal sehen, ob es überhaupt geht und mache es noch nicht.
Im Source code des Sketches mache ich eine Verbindung zu meinem Heimnetz, Frage den MQTT Server ab. Wenn dort 'on' gepushed wurde, wird das Relais für 5 Sekunden (ca. 20ml) betätigt. Dann wird das Retain-Flag zurückgesetzt und dann geht alles wieder für 1 Stunde in den Tiefschlaf.
Auf der Seite des RaspberryPi werden ja stündlich die Daten von LilyGo entgegengenommen. Wenn dort der Salzgehalt unter 25 fällt, wird der entsprechende MQTT Befehl gepostet, sonst zurück genommen.
Da die MQTT Nachrichten nicht gleich verarbeitet werden, werden sie als 'Retain' verschickt. Daher muss der Bewässerer mindestens so lange warten, bis LilyGo die neuesten Daten schickt und das Retain beendet, sonst würde es eine Überflutung geben. Jetzt ist es nur ein großes Glas Wasser, wäre also nicht so schlimm, aber wer weiß.
mosquitto_pub -d -r -t /home/data -m "on" mosquitto_pub -d -r -t /home/data -n
Die Übermittlung der Spannung der Batterie hat nie funktioniert. Erst jetzt, mit
ADC_MODE(ADC_VCC);
ausserhalb aller Funktionen und
float volt=ESP.getVcc(); Serial.print(volt/1024.00f);
in einer Funktion wird es übermittelt. Dabei habe ich gleich noch den Zustand per MQTT übermittelt. Bei jedem Start aus dem Tiefschlaf die Spannung und bei anliegender MQTT-Message diese. Damit weiss ich, wie oft er aus dem Tiefschlaf erwacht, und wann gegossen wurde.
Den Tiefschlaf habe ich von den in der Dokumentation früher mal ungefähr 71 Minuten (4294967295us) auf Maximum eingestellt. Das sollten jetzt laut einer Webseite 3,5 Stunden sein. Das geht mittels
ESP.deepSleep(ESP.deepSleepMax());
Besser wäre natürlich noch länger und dann an Hand der Giesshäufigkeit zu ermitteln, wie lange er schlafen darf. Aber das kommt ein anderes Mal.
Wenn die Batterie leer ist, versucht der ESP der Pumpe nach einem „Fatal exception“ zu starten. Das ist genauer, als die Spannung von der Pflanzenüberwachung abzufragen. Da das aber gleich am Anfang in die DB geschrieben wird, bekomme ich das zeitnah mit. Ich habe die Statusabfrage jetzt mal daran angepasst.
Reset Nummern 0 = Power reboot 1 = Hardware WDT reset 2 = Fatal exception 3 = Software watchdog reset 4 = Software reset 5 = Deep-sleep 6 = Hardware reset
Da das mit der „Fatal exception“ nicht zuverlässig funktioniert, jetzt zusätzlich noch abgefragt, wann der ESP wieder aufwacht. das passiert nämlich dann nicht mehr nach 3 Stunden, sondern fast im Minutentakt. Eigentlich sollte ich dann ganz 'abschalten' - wenn ich mal weiss, wie - geht wohl nicht so ohne weiteres
Jetzt braucht die ganze Kommunikation noch 15 Sekunden, was bei 70mA dann doch etwas lang ist.
Zeit ist jetzt 4, 6 bzw. 8 Sekunden. Je nachdem ob schnelle Verbindung zum Router, normale Verbindung zum Router oder Pumpe aktiviert werden musste. Kürzere Delays und 2 Sekunden beim Connect gespart - Stand April 2021
Ruhestrom im deep-sleep ist leider immer noch 2mA Ob das daran liegt, dass die 5V auf 3.3V runter gewandelt werden oder woran es liegt ist mir unklar.
Aktuell habe ich als Stromquelle meine 'kaputten' EX4-Drohnen Akkus im Einsatz (3.8V 2.400mAh). Ein Akku an Lilygo und ESP01 mit Relais und Pumpe zur Wasserversorgung hält aktuell (Mai 2021) ziemlich genau eine Woche. Daten der Pflanze werden alle 2 Stunden gelesen und verschickt, der ESP wacht nach der Maximalzeit von je rund 3 Stunden auf. Leider zieht das Relais beim Aufwachen immer noch kurz an. Lösung Juni 2021: 22 kOhm Widerstand zwischen GPIO0 und GND - danke an GitHub-forum
Jetzt habe ich mal je einen Akku an jedes Gerät gehängt, um rauszubekommen, was mehr Energie braucht - wahrscheinlich die Pumpe.
Stand 06/2021