# Backlog ## 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: 1. 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. 1. 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] - 1. ESP32-Strom - sendet Daten an ESP32-Server oder ist der Server 1. 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". - `[ , ]` 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? 1. Programmieren 1. Strukturieren 1. Organisieren 1. Grübeln, Forschen, Verzweifeln 1. Lernen 1. Vollenden 1. 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