Nimbin[12]?Embedded / esp_garden / commits / c5c10a4

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-24 06:09 · c5c10a4ae3fc8e46f2095490292fadfc57a8f091

 backlog.md     | 58 ++++++++++++++++++++++++++++++++++++----------------------
 produkt.md     | 15 ++++++++++-----
 sprint_plan.md | 39 ++++++++-------------------------------
 3 files changed, 54 insertions(+), 58 deletions(-)

diff --git a/backlog.md b/backlog.md
index 855645f..a338d7f 100644
--- a/backlog.md
+++ b/backlog.md
@@ -1,6 +1,9 @@
 # Backlog
 
-## Aufgabe 1: Einen aussagekräftigen Titel
+## Aufgabe 1: Garten-Netzwerk und Datenbank
+
+Da ich Langstreckenläufer und kein Sprinter bin befinden sich alle unteraufgaben in dieser Aufgabe.  
+Am unteren Teil dieser Aufgabe befindet sich ein "Sprint plan" welcher die Unteraufgaben beschreibt. Dieser wird nicht genau befolgt werden können, da mit jeder neuen (unbekannten) Aufgabe neue Herausforderungen entstehen können, welche eine Überarbeitung vorheriger Aufgaben benötigen kann.
 
 ### Beschreibung
 
@@ -30,13 +33,20 @@ Ein Bluetooth-Now Netzwerk bestehend aus:
         - sendet Neue Konfiguration an ESP32-Sensor
 
 
-> Im Folgenden beschreibt die Nummerierung keinen zeitlichen Ablauf, sie dient lediglich um auf die einzelnen Punkte zu verweisen.
+### Detaillierte Kommunikation
+
+> 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]  
+2.) von ESP32-Server (<-8.) [Zeit, Namen geänderter Konfigurationen]  
 3.) von ESP32-Server (<-9.) [Konfiguration]  
 
 Senden:  
@@ -51,13 +61,13 @@ Anfrage:
 #### ESP32-Pumpe
 
 Erhalten:  
-1.) von ESP32-Sensor (4.) [Pumpen Name, Pumpen Delay, aktuelle Zeit, Zeitpunkt der nächsten Anfrage]  
+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]  
+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]  
@@ -67,7 +77,7 @@ Senden:
 
 Antwort:  
 7.) an ESP32-Sensor (<-4.,->1.) [Zeit]  
-8.) an ESP32-Sensor (<-4.,->2.) [Zeit, namen geänderter Konfigurationen]  
+8.) an ESP32-Sensor (<-4.,->2.) [Zeit, Namen geänderter Konfigurationen]  
 9.) an ESP32-Sensor (<-7.,->3.) [Konfiguration]  
 
 Anfrage:  
@@ -81,7 +91,7 @@ Erhalten:
 2.) von ESP32-Server (<-4.) [Konfiguration anfrage]  
 
 Antwort: 
-3.) an ESP32-Server (<-6.,->2.) [namen geänderter Konfigurationen]  
+3.) an ESP32-Server (<-6.,->2.) [Namen geänderter Konfigurationen]  
 4.) an ESP32-Server (<-10.,->1.) [Konfiguration]  
 
 #### ESP32-Strom
@@ -102,7 +112,7 @@ Sendet:
 
 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)
+- 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:  
@@ -141,25 +151,29 @@ ESP32-Server:
 
 > Legen Sie die Bedingungen fest, unter denen die verantwortliche Person die Aufgabe als erledigt betrachten kann.
 
-- Erledigt ist das Projekt wenn die Beschreibungen (s.o.) umgesetzt wurden.
+- Erledigt ist das Projekt wenn die Punkte "Beschreibungen" und "Detaillierte Kommunikation" (s.o.) umgesetzt wurden.
 
-## Sprint plan
+### Sprint plan
 
-~~Plan Sprint 1: Erforschen der Bluetooth-Möglichkeiten  20h~~  
-~~Plan Sprint 2: Verbinden zweier ESP32 über Bluetooth-now  5h~~  
-~~Plan Sprint 3: ESP32 zu Webserver Connection inklusive Web-Page 12h~~  
-~~Plan Sprint 4: ESP32 zu Webserver mit Verbindung von Bluetooth-Now 15h~~  
-~~Plan Sprint 5: Implementierung der Konfigurationsübertragung 22h~~  
-Plan Sprint 6: Cleaning code 4h  
+~~Plan Sprint 1: Erforschen der Bluetooth-Möglichkeiten 18h~~  
+~~Plan Sprint 2: Verbinden zweier ESP32 über Bluetooth-Now 4h~~  
+~~Plan Sprint 3: ESP32 zu Webserver Connection inklusive Web-Page & Datenbank 12h~~  
+~~Plan Sprint 4: ESP32 zu Webserver mit Verbindung von Bluetooth-Now 12h~~  
+~~Plan Sprint 5: Implementierung der Konfigurationsübertragung 18h~~  
+~~Plan Sprint 6: Cleaning Code 4h~~  
 Plan Sprint 7: DeepSleep implementieren 7h  
 Plan Sprint 8: Anbindung der ESP32-Pumpe 4h  
 Plan Sprint 9: Planen und einbinden der Stromdaten 4h  
-Plan Sprint 11: Cleaning code 4h  
-Plan Sprint 12: ESP-Server mit WiFi Enterprise bestücken 4-8h  
-Plan Sprint 13: Software auf finale ESP schreiben und Fake-Daten durch echte Werte ersetzen 8h  
-Plan Sprint 14: Kalibrierung für Sensoren einarbeiten 8h  
-Plan Sprint 15: Cleaning code 4h  
-Plan Sprint 16: Webpage stylen 0-100h  
+Plan Sprint 11: Cleaning Code 4h  
+Plan Sprint 12: Erforschen von WiFi-Enterprise Funktionalität auf ESP 8h  
+Plan Sprint 13: eventuell muss der ESP-Server Code für ESP-idf umgebaut werden 6h    
+Plan Sprint 14: ESP-Server mit WiFi-Enterprise bestücken 4-8h  
+Plan Sprint 15: Cleaning Code 2h  
+Plan Sprint 16: Software auf finale ESP schreiben und Fake-Daten durch echte Werte ersetzen 8h  
+Plan Sprint 17: Kalibrierung für Sensoren einarbeiten 4h  
+Plan Sprint 18: Cleaning Code 4h  
+Plan Sprint 19: Dokumentation schreiben 6h  
+Plan Sprint 20: Webpage stylen 0-100h  
 
 
 ## Aufgabe 2: Wie in der Vorlage für Aufgabe 1
diff --git a/produkt.md b/produkt.md
index 363fd07..87ef397 100644
--- a/produkt.md
+++ b/produkt.md
@@ -12,15 +12,20 @@
 ## Motivation
 
 Der Hochschul-Garten wird digital. Bewässerung soll automatisiert werden, Sensoren die Umwelteinflüsse messen, Strom durch erneuerbare Energien erzeugt werden.  
-Da mit dieser Umstelllung neue Herausforderungen entstehen ist es notwendig die eingerichteten digitalen Geräte zu überwachen und mit geringsten Hürden Konfigurieren zu können. Dieses Projekt stellt einerseits eine Internetseite bereit um jeglichen Datenfluss monitoren zu können, andererseits bietet es über die Internetseite, gesichert durch einen Login, die Möglichkeit ohne technisches Know-How die digitalen Geräte neu zu konfigurieren. Wann muss bewässert werden, wann ist der Boden trocken, fließt genügen Strom über die Umweltbewusste Stromversorgung? Diese Fragen werden in Zukunft leichter zu beantworten und zu steuern sein.
+Da mit dieser Umstellung neue Herausforderungen entstehen ist es notwendig die eingerichteten digitalen Geräte zu überwachen und mit geringsten Hürden Konfigurieren zu können. Dieses Projekt stellt einerseits eine Internetseite bereit um jegliche Daten sammeln zu können, andererseits bietet es über die Internetseite, gesichert durch einen Login, die Möglichkeit ohne technisches Know-How die digitalen Geräte neu konfigurieren zu können. Wann muss bewässert werden, wann ist der Boden trocken, fließt genügen Strom über die Umweltbewusste Stromversorgung? Diese Fragen werden in Zukunft leichter zu beantworten und zu steuern sein.
 
 ## Beschreibung
 
-Im Hochschul-Garten werden verschiedene Mikrocontroller eingesetzt werden. Diese werden wir über ein Bluetooth-Now netzwerk miteinander verbinden. Ein Mikrocontroller dient dabei als "Host" um Daten an einen Web-Server mit einer Datenbank weiter leiten zu können.  
-Der Web-Server stellt eine Internetseite bereit über welche die gesendeten Daten betrachtet werden können. Zusätzlich bietet diese Internetseite eine Möglichkeit die Zeitpunkte zum Lesen der verschiedenen Sensordaten, sowie die Zeitpunkte zu Bewässerung zu verändern, sodass keine weitere Programmierung im nachinein nötig ist. Um den Stromverbrauch möglichst gering zu halten werden die Mikrocontroller ihre Kommunikationszeitpunkte absprechen um die Zeit ohne Kommunikation in einem "DeepSleep" (Tiefschlaf) verbringen zu können.
+Im Hochschul-Garten werden verschiedene Mikrocontroller eingesetzt werden. Über ein Bluetooth-Now netzwerk werden diese miteinander verbunden. Ein Mikrocontroller dient dabei als "Host" um Daten an einen Web-Server mit einer Datenbank weiter leiten zu können und Daten von diesem erhalten zu können.  
+Der Web-Server stellt eine Internetseite bereit über welche die gesendeten Daten angezeigt werden. Zusätzlich bietet diese Internetseite eine Möglichkeit die Zeitpunkte zum Lesen der verschiedenen Sensordaten, sowie die Zeitpunkte zu Bewässerung zu verändern, sodass keine weitere Programmierung im Nachhinein nötig ist. Um den Stromverbrauch möglichst gering zu halten werden die Mikrocontroller ihre Kommunikationszeitpunkte absprechen um die Zeit ohne Kommunikation in einem "DeepSleep" (Tiefschlaf) verbringen zu können.
 
 ## Evaluation
 
-Zum Testen wird ein Netzwerk, bestehend aus 3 ESP32-C3 genutzt. Sensordaten werden vorerst als feste Werte gehandhabt um nach Fertigstellung der einzelnen Komponenten durch andere Gruppen schnell in den Betrieb über gehen zu können.
+Zum Testen wird ein Netzwerk, bestehend aus 3 ESP32-C3 genutzt. Sensordaten werden vorerst als feste Werte gehandhabt um, nach Fertigstellung der einzelnen Komponenten durch andere Gruppen, schnell in den Betrieb über gehen zu können.
 
-Zum Testen der Unabhängigkeit der einzelnen Mikrocontroller werden zwischenzeitlich einzelne abgeschalten, sodass überprüft werden kann ob die Kommunikation weiterhin mit den aktiven Geräten besteht. Was passiert wenn das WLAN ausfällt, wenn ein einzelner ESP ausfällt? Ist die Kommunikation der bestehenden Geräte weiterhin abgesichert? Wie gleichen wir die Uhrzeit ab wenn keine Verbindung ins Web möglich ist? Was passiert nach einem Stromausfall?
+Zum Testen der Unabhängigkeit der einzelnen Mikrocontroller werden zwischenzeitlich einzelne abgeschaltet, sodass überprüft werden kann ob die Kommunikation weiterhin mit den aktiven Geräten besteht.  
+- Was passiert wenn das WLAN ausfällt, wenn ein einzelner ESP ausfällt?
+- Ist die Kommunikation der bestehenden Geräte weiterhin abgesichert?
+- Wie gleichen wir die Uhrzeit ab wenn keine Verbindung ins Web möglich ist
+- Was passiert nach einem Stromausfall?
+- Wie funktioniert Gruppenarbeit?
diff --git a/sprint_plan.md b/sprint_plan.md
index df2b896..7b902b1 100644
--- a/sprint_plan.md
+++ b/sprint_plan.md
@@ -2,47 +2,27 @@
 
 > Dieser Sprint wurde bereits erledigt [https://git.ide3.de/hsnr/mic/esp_garden/-/commit/a5c6d5046f2be9be21775dc12e560c3f36c69cb0](https://git.ide3.de/hsnr/mic/esp_garden/-/commit/a5c6d5046f2be9be21775dc12e560c3f36c69cb0)
 
-## Plan Übersicht
-
-~~Plan Sprint 1: Erforschen der Bluetooth-Möglichkeiten  20h~~  
-~~Plan Sprint 2: Verbinden zweier ESP32 über Bluetooth-now  5h~~  
-~~Plan Sprint 3: ESP32 zu Webserver Connection inklusive Web-Page 12h~~  
-~~Plan Sprint 4: ESP32 zu Webserver mit Verbindung von Bluetooth-Now 15h~~  
-~~Plan Sprint 5: Implementierung der Konfigurationsübertragung 22h~~  
-Plan Sprint 6: Cleaning code 4h  
-Plan Sprint 7: DeepSleep implementieren 7h  
-Plan Sprint 8: Anbindung der ESP32-Pumpe 4h  
-Plan Sprint 9: Planen und einbinden der Stromdaten 4h  
-Plan Sprint 11: Cleaning code 4h  
-Plan Sprint 12: ESP-Server mit WiFi Enterprise bestücken 4-8h  
-Plan Sprint 13: Software auf finale ESP schreiben und Fake-Daten durch echte Werte ersetzen 8h  
-Plan Sprint 14: Kalibrierung für Sensoren einarbeiten 8h  
-Plan Sprint 15: Cleaning code 4h  
-Plan Sprint 16: Webpage stylen 0-100h  
-
-
-
-## Kapitän: Christian Fischer, Planung, Leitung und Durchführung
+## Kapitän: Christian Fischer; Planung, Leitung und Durchführung
 
 ## Aufgabe 1: Implementierung der Konfigurationsübertragung
 
 ### Verantworliches Teammitglied: Christian Fischer
 
-### Erwarteter Zeitaufwand: 22h
+### Erwarteter Zeitaufwand: 18h
 
 ### Beschreibung
 
 Implementierung des Empfangens von Konfigurationen des ESP-Sensors über ESP-Server und Datenbank.
 
-- Beim ersten Starten des ESP-Sensor wird die Konfiguration vom ESP-Server erfragt. Der ESP-Server leitet die Anfrage an die Api-Schnittstelle weiter und wartet auf Antwort.
-- Bei erfolgreicher Weiterreichung an den ESP-Sensor schickt der ESP-Server eine Bestätigung an die Datenbank dass der ESP-Sensor die Daten erhalten hat.
-- Beim Neustart oder nach einen Tiefschlad lädt der ESP-Sensor die alten Konfiguration aus dem Flash-Speicher
-- Das erfragen der Konfiguration ist über einen api-Token abgesichert.
-- Bei einer Änderung der Konfiguration antwortet die Api-Schnittstelle nach Erhalt von ESP-Sensor-Daten mit den sensor namen der geänderten Konfigurationen. Der ESP-Server Leitet diese Namen an den ESP-Sensor weiter, sodass dieser die neuen Konfigurationen erfragen kann. (Ich bin nicht glücklich über diese Lösung, da eine Weitere Anfrage benötigt wird, aber derzeit ist es eine sichere Lösung dass die Konfigurationen an ihrem Ziel ankommen)
+- Beim ersten Starten des ESP-Sensor werden die einzelnen Konfigurationen der Sensoren vom ESP-Server erfragt. Der ESP-Server leitet die Anfrage an die Api-Schnittstelle weiter und wartet auf Antwort.
+- Bei erfolgreicher Antwort leitet der ESP-Server die einzelnen Konfigurationen an den ESP-Sensor weiter.
+- Der ESP-Sensor speichert die erhaltenen Konfigurationen im Flash-Speicher
+- Nach einem Neustart oder nach einem Tiefschlaf lädt der ESP-Sensor die alten Konfiguration aus dem Flash-Speicher
+- Das erfragen der Konfiguration ist über einen Api-Token abgesichert.
+- Bei einer Änderung der Konfiguration antwortet die Api-Schnittstelle nach Erhalt von ESP-Sensor-Daten mit den Sensor-Namen der geänderten Konfigurationen. Der ESP-Server Leitet diese Namen an den ESP-Sensor weiter, sodass dieser die neuen Konfigurationen erfragen kann. (Ich bin nicht glücklich über diese Lösung, da eine Weitere Anfrage benötigt wird, aber derzeit ist es eine sichere Lösung sodass die Konfigurationen an ihrem Ziel ankommen)
 
 
 ### Definition von „Spaß“
-> Definieren Sie die Aspekte der Aufgabe (falls möglich) die Motivation und Spaß bei der Ausführung der Aufgabe bringen könnten. Was könnte die Aufgabe interessant machen? Was könnte man daraus lernen?
 
 1. Programmieren
 1. Strukturieren
@@ -54,8 +34,5 @@ Implementierung des Empfangens von Konfigurationen des ESP-Sensors über ESP-Ser
 
 
 ### Definition von „erledigt“
-> Legen Sie die Bedingungen fest, unter denen die verantwortliche Person die Aufgabe als erledigt betrachten kann.
 
 Siehe Aufgabenbeschreibung.
-
-## Aufgabe 2: Wie in der Vorlage für Aufgabe 1