Nimbin[12]?Embedded / esp_garden

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
079650bUpdate file PCB_notes.txtDavid.Schüring · 8 months ago
dclient_pump/
dclient_sensor/
dMIC_GreenGardening_G4_PCB/
dserver_hsnr/
-.gitignore73 B
-backlog.md6.9 KB
-database.sql4.3 KB
-Dokumentation_Mikrocontroller_G04.pdf772 KB
-esp.ino381 B
-globals.cpp961 B
-globals.h2.7 KB
-idee.txt371 B
-init_esp-idf.sh30 B
-produkt.md2.6 KB
-README.md3.8 KB
-review_retro.md733 B
-secrets.example.h509 B
-sprint_plan.md3.6 KB
-sprint_plan_1.md968 B

README.md

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/

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