## Usage - 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 `ssid` of wifi network so it can find the right channel for the server esp - on client set `ESP_NOW_RECEIVER` to the WiFi mac address of the server side. - create a secret.h (check the example file in root dir) [https://esp-garden.christianimmanuel.de/](https://esp-garden.christianimmanuel.de/) 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 > 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". - `[ , ]` 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