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.gzUsage
- install content of server on the esp that is posting data to a server.
- install content of client on esp that shall connect to esp-now network and server esp
- on client set
ssidof wifi network so it can find the right channel for the server esp - on client set
ESP_NOW_RECEIVERto the WiFi mac address of the server side. - create a secret.h (check the example file in root dir)
https://esp-garden.christianimmanuel.de/
Administration:
https://esp-garden.christianimmanuel.de/admin/login.php
Username: esp\_garden Password: esp\_garden\_pw
Structure
In den Folgenden Bereichen beschreibt die Nummerierung keinen zeitlichen Ablauf, sie dient lediglich dem Verweis untereinander.
<-[0-9]+.bedeutet dass von dem zuvor genannten ESP32 eine Nachricht erhalten wird.[0-9]+.->bedeutet dass an den zuvor genannten ESP32 eine Nachricht gesendet wird.|bezeichnet ein "Oder".[ <Name>, ]bezeichnet die verschiedenen Werte welche in der Kommunikation enthalten sind.
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
- schlä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