esp_garden git · master
Distributed ESP sensor and actuator system (garden)
C++ 70.7% Markdown 18% C 10.7%git clone https://git.christianimmanuel.de/embedded/esp_garden.gitwget https://git.christianimmanuel.de/embedded/esp_garden/archive/esp_garden.tar.gzUpdate
README.md | 170 +++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 103 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index a62e6a9..a999e5f 100644 --- a/README.md +++ b/README.md @@ -9,70 +9,106 @@ [https://esp-garden.christianimmanuel.de/](https://esp-garden.christianimmanuel.de/) -- ESPS - - name: "Sensors" - - MAC: Wifi mac address - - connected\_esp's: ["Pump"] - -- ESP\_SENSOR - - esp: "Sensors" - - name: sensor\_a - - ifo: "Checks moisture of tomatoes" - - pin: 19 - - use\_time: true - - times: [10:00, 16:00] - - delay: 20000 // if use\_time is false it uses delay in ms - - min\_moisture: 20% // time when we gonna send - - send\_to: "Pump" - - notification: "pump\_tomatoe" - -- ESPS - - name: "Pump" - - MAC: Wifi mac address - - connected\_esp's: ["Sensors"] - -- ESP\_PUMP - - sensor: sensor\_a - - name: "pump\_tomatoe" - - ifo: "water tomatoes may delay after receiving request" - - pin: 19 - - delay: 20000 // delay before we gonna water, maybe it needs to dry out? - -- ESP\_PUMP - - sensor: sensor\_b - - name: "pump\_pumpkin" - - ifo: "Pumpkin needs alot of water?" - - pin: 13 - - delay: 0 - -- Workflow - - sensor\_a detects dry - - message server - - sends to pump - - pump is pumping or waiting some time to pump - - if its time to pump it requests data again (maybe it rained) - - if still dry, it pumps - - tells sensor\_a to start reading again - - message server - - -## Sensor: - -1. read values every n time or at time of day -1. send value to pump\_esp - - receive from pump if pumping gets delayed -1. send to esp\_server the [value, pump\_esp sent success?] - - maybe receive from esp\_server new configuration - -## Pump: - -1. get notified from sensor that its dry -1. A: no delay - 1. start pumping -1. B: delay - 1. tell esp\_sensor that its delayed - 1. delay - 1. request sensor\_esp - 1. if still dry: pump -1. notify esp\_server success of pumping - - message server + +Administration: + +[https://esp-garden.christianimmanuel.de/admin/login.php](https://esp-garden.christianimmanuel.de/admin/login.php) + +Username: esp\_garden +Password: esp\_garden\_pw + +## Structure + +### ESP32-Sensor + +Erhalten: +1.) von ESP32-Server (<-7.) [Zeit] +2.) von ESP32-Server (<-8.) [Zeit, namen geänderter Konfigurationen] +3.) von ESP32-Server (<-9.) [Konfiguration] + +Senden: +4.) an ESP32-Server (->3.,<-7.|8.) [Sensor Name, Sensor Wert] +5.) an ESP32-Pumpe (->1.) [Pumpen Name, Pumpen Delay, aktuelle Zeit, Zeitpunkt der nächsten Anfrage] +6.) an ESP32-Server (->4.) [Zeitpunkt der nächsten Anfrage] + +Anfrage: +7.) an ESP32-Server (->5.,<-9.) [Konfigurationsanfrage] + + +### ESP32-Pumpe + +Erhalten: +1.) von ESP32-Sensor (4.) [Pumpen Name, Pumpen Delay, aktuelle Zeit, Zeitpunkt der nächsten Anfrage] + +### ESP32-Server + +Erhalten: +1.) von Web-Server (<-4.) [Konfiguration] +2.) von Web-Server (<-3.) [namen geänderter Konfigurationen] +3.) von ESP32-Sensor (<-4.) [Sensor Name, Sensor Wert] +4.) von ESP32-Sensor (<-6.) [Zeitpunkt der nächsten Anfrage] +5.) von ESP32-Sensor (<-3.) [Konfigurationsanfrage] + +Senden: +6.) an Web-Server (->1.,<-3.) [Sensor Name, Sensor Wert] + +Antwort: +7.) an ESP32-Sensor (<-4.,->1.) [Zeit] +8.) an ESP32-Sensor (<-4.,->2.) [Zeit, namen geänderter Konfigurationen] +9.) an ESP32-Sensor (<-7.,->3.) [Konfiguration] + +Anfrage: +10.) an Web-Server (->2.,<-4.) [Konfigurationsanfrage] +11.) an NTP [Zeit] + +### Web-Server + +Erhalten: +1.) von ESP32-Server (<-3.) [Sensor Name, Sensor Wert] +2.) von ESP32-Server (<-4.) [Konfiguration anfrage] + +Antwort: +3.) an ESP32-Server (<-6.,->2.) [namen geänderter Konfigurationen] +4.) an ESP32-Server (<-10.,->1.) [Konfiguration] + +### ESP32-Strom + +#### Option A: +- ist der ESP32-Server + +Sendet zusätzlich: +1.) an Web-Server [Messwerte, Akku stand, o.ä.] + +#### Option B: +- ist alleinstehend + +Sendet: +1.) an ESP32-Server [Messwerte, Akku stand, o.ä.] + +### DeepSleep + +ESP32-Server: +- darf erst schlafen wenn ESP32-Sensor die Initial Konfiguration und Aktuelle Zeit erhalten hat +- schlläft bis 1 minute vor "Zeitpunkt der nächsten Anfrage" von ESP32-Sensor oder ESP32-Strom (falls Option B) + - falls nicht erhalten, warten bis zum nächsten Erhalt von Daten + +ESP32-Sensor: +- Schläft bis zum Zeitpunkt des nächsten Messens/Sendens + +ESP32-Pumpe: +- Schläft bis zum Zeitpunkt der nächsten Anfrage + - falls nicht erhalten, warten bis zum nächsten Erhalt von Daten + +ESP32-Strom: +- Schläft bis zum Zeitpunkt des nächsten Messens/Sendens + +### Saveties + +ESP32-Sensor: +- Konfiguration im Flash speichern um nach Stromverlust unabhängig vom Server weiter agieren zu können +- Uhrzeit unabhängig vom ESP32-Server weiter führen können (falls ESP32-Server ausgefallen) + +ESP32-Server: +- Sammeln von Daten falls WiFi kurzzeitig down,- löschen der ältesten Daten falls zu wenig Speicher + +