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.gzBacklog
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
Ein Bluetooth-Now Netzwerk bestehend aus:
- ESP32-Sensor
- liest Daten von Sensoren ein
- schickt Daten {Messwerte, Zeit zur Synkronisation, zeitpunkt der nächsten Anfrage} an ESP32-Pumpe
- schickt alle Daten an ESP32-Server und erhält als antwort die Zeit und dass die Konfiguration sich geändert hat
- bei geänderter Konfiguration wird aud den erhalt einer neuen Konfiguration gewartet
- geht in den tiefschlaaf wenn das nächste Lesen der Sensoren nicht innerhalb einer bestimmten Zeit erfolgen muss.
- ESP32-Pumpe
- erhält von ESP32-Sensor eine Anfrage nach einem möglichen Delay zu pumpen an eine bestimmte Pumpe
- Anfrage beinhaltet [Zeit, Pumpenname, Delay, Zeitpunt der nächsten Anfrage]
- ESP32-Strom
- sendet Daten an ESP32-Server oder ist der Server
- ESP32-Server
- erhält die Uhrzeit von einem NTP Server
- sendet Daten via POST Anfragen an einen Web-Server und verarbeitet dessen Antworten
- erhält Anfrage vom ESP32-Sensor nach Konfigurationen für den ESP32-Sensor
- schickt Konfigurations-Anfragen an den Web-Server
- antwortet ESP32-Sensor auf Anfrage mit Konfigurationen oder Zeit
- erhält vom ESP32-Sensor Daten und sendet sie an den Web-Server
- erhält als Antwort vom Web-Server ein OK oder eine neue Konfiguration falls sich diese geändert hat.
- sendet Neue Konfiguration an ESP32-Sensor
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] 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
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?
- Programmieren
- Strukturieren
- Organisieren
- Grübeln, Forschen, Verzweifeln
- Lernen
- Vollenden
- Erfolg & Scheitern
Definition von „erledigt“
Legen Sie die Bedingungen fest, unter denen die verantwortliche Person die Aufgabe als erledigt betrachten kann.
- Erledigt ist das Projekt wenn die Punkte "Beschreibungen" und "Detaillierte Kommunikation" (s.o.) umgesetzt wurden.
Sprint plan
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: eventuell muss der ESP-Server Code für ESP-idf umgebaut werden 6h
Plan Sprint 10: Cleaning Code 4h
Plan Sprint 11: Planen und einbinden der Stromdaten 4h
~~Plan Sprint 12: Erforschen von WiFi-Enterprise Funktionalität auf ESP 8h
~~Plan Sprint 13: ESP-Server mit WiFi-Enterprise bestücken 4-8h
~~Plan Sprint 14: Cleaning Code 2h
Plan Sprint 15: bug fixing 4h (selten wird die Pumpe nicht erreicht)
Plan Sprint 16: Webpage verbessern (eine seite zur konfiguration)
Plan Sprint 17: Software auf finale ESP schreiben und Fake-Daten durch echte Werte ersetzen 8h
Plan Sprint 18: Kalibrierung für Sensoren einarbeiten 4h
Plan Sprint 19: Cleaning Code 4h
Plan Sprint 20: Dokumentation schreiben 6h
Plan Sprint 21: Webpage stylen 0-100h