Benutzer-Werkzeuge

Webseiten-Werkzeuge


esp_bewaesserung

Dies ist eine alte Version des Dokuments!


Pflanzenbewässerung

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

esp_bewaesserung.1623064012.txt.gz · Zuletzt geändert: 2021/06/07 11:06 von varnholt