Nimbin[12]?Embedded / esp_garden / commits / 7c92d17

esp_garden git · master

Distributed ESP sensor and actuator system (garden)

esp32 esp-idf iot sensors c++ sql · first commit 2025-10-15 · last commit 2026-01-20 (8 months ago) · synced 3 days ago · upstream: git.ide3.de/hsnr/mic/esp_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.gz

Update

Christian Immanuel · 2025-10-22 19:56 · 7c92d17614145050b0c65bc1f044007e5c760a14

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