Initial commit

This commit is contained in:
2026-08-01 23:38:09 +02:00
parent 0d9cca3668
commit a99b986544
28 changed files with 1476 additions and 1 deletions
+98
View File
@@ -0,0 +1,98 @@
# TODO.md Einzelne Tasks
_Letztes Update: 2026-08-01 23:18 CEST_
Checkliste abgeleitet aus PLAN.md. Reihenfolge entspricht der empfohlenen Umsetzungsreihenfolge.
## Phase 0 Projekt-Grundgerüst
- [ ] PlatformIO-Projekt für M5Stack Core initialisieren (`platformio.ini`: Board, Framework Arduino, M5Stack-Library)
- [ ] Ordnerstruktur anlegen: `include/`, `src/screens/`, `src/api/`, `src/icons/`, `scripts/`
- [ ] `include/secrets.h.example` mit Platzhaltern für WLAN SSID/Passwort erstellen
- [ ] `.gitignore` vorbereiten (schließt `include/secrets.h`, `.pio/` aus)
- [ ] Minimalen `src/main.cpp` schreiben, der "Hello Dashboard" anzeigt
- [ ] `scripts/deploy.sh` schreiben (Build + Flash, automatische Port-Erkennung, optionaler Port-Parameter)
- [ ] Deploy-Skript testen, Testtext auf echtem Gerät prüfen
## Phase 1 WLAN & HTTP-Grundlage
- [ ] WLAN-Verbindungsaufbau mit `secrets.h`-Werten implementieren
- [ ] Verbindungsstatus (verbindet/verbunden/Fehler) auf Display anzeigen
- [ ] Generischen HTTP-GET-Client in `src/api/` implementieren
- [ ] ArduinoJson (oder Alternative) als Dependency einbinden
- [ ] Wetter-API testweise abrufen und Rohdaten (Temperatur, Beschreibung) als Text anzeigen
- [ ] Auf echtem Gerät gegen echte API testen
## Phase 2 Screen-Grundgerüst & Navigation
- [ ] Screen-State-Machine implementieren (Enum + Render-Dispatch)
- [ ] Vier Platzhalter-Screens anlegen: Home, WeatherDetail, CalendarDetail, MVG
- [ ] Button-A-Logik: Toggle zwischen WeatherDetail und CalendarDetail
- [ ] Button-B-Logik: zurück zu Home
- [ ] Button-C-Logik: wechsle zu MVG-Screen
- [ ] 5-Minuten-Inaktivitäts-Timeout implementieren (zurück zu Home)
- [ ] Theme-Datei mit Basisfarben (Schwarz/Weiß, iOS-Dark-Mode-Look) anlegen
- [ ] Navigation zwischen allen vier Screens auf echtem Gerät testen
## Phase 3 Home-Screen (final)
- [ ] Wetter-API-Aufruf in Home-Screen integrieren
- [ ] Kalender-API-Aufruf in Home-Screen integrieren
- [ ] Regen-Hinweis-Logik implementieren (irgendein `precipitation.type == "rain"` mit `probability > 0` in den nächsten 8 Stunden)
- [ ] Anzeige der nächsten 2 Kalendertermine inkl. `all_day`-Sonderbehandlung
- [ ] 10-Minuten-Refresh-Timer implementieren
- [ ] Layout verfeinern: große Temperaturanzeige, klare visuelle Hierarchie
- [ ] Auf echtem Gerät über längeren Zeitraum (mind. 1 Refresh-Zyklus) testen
## Phase 4 Icon-Set (farbig, RGB565)
- [ ] Icon-Liste finalisieren (Sonne, bewölkt, Regen, Nacht-Varianten, U-Bahn, S-Bahn, Kalender, Regen-Warnung, Retry/Fehler)
- [ ] Icon-Vorlagen erstellen/beschaffen (farbig, für kleines Display optimiert)
- [ ] Konvertierung zu RGB565-Bitmap-Arrays einrichten (Skript oder Tool)
- [ ] Icons in `src/icons/` ablegen und einbinden
- [ ] Mapping `symbol`-Feld → Icon implementieren (`mo____`, `mb____`, `wb____`, etc.)
- [ ] Icons im Home-Screen integrieren und visuell prüfen
## Phase 5 Wetter-Detailseite
- [ ] Vollständige `forecast`-Liste abrufen und verarbeiten
- [ ] Darstellung pro Stunde: Zeit, Temperatur, Icon, Regenwahrscheinlichkeit
- [ ] Scroll- oder Paginierungslogik implementieren, falls nötig
- [ ] Auf echtem Gerät testen (Navigation über Button A von Home)
## Phase 6 Kalender-Detailseite
- [ ] Vollständige `events`-Liste (10 Termine) abrufen und anzeigen
- [ ] `all_day`-Sonderbehandlung analog zur Hauptseite
- [ ] Scroll-/Paginierungslogik implementieren
- [ ] Auf echtem Gerät testen (Navigation über Button A Toggle)
## Phase 7 MVG-Abfahrtsseite
- [ ] Vollständige `departures`-Liste abrufen und anzeigen (ungefiltert)
- [ ] Farbliche Kennzeichnung U-Bahn vs. S-Bahn
- [ ] Anzeige von Verspätung (`delay_min`) und Ausfall (`cancelled`)
- [ ] 1-Minuten-Refresh-Timer implementieren
- [ ] Auf echtem Gerät testen (Navigation über Button C)
## Phase 8 Fehlerbehandlung
- [ ] Timeout-Handling für alle drei API-Clients implementieren
- [ ] Einheitliche Fehleranzeige (Retry-Icon + Text) pro Screen implementieren
- [ ] Automatischen Retry beim nächsten Refresh-Intervall sicherstellen
- [ ] Manuellen Retry per erneutem Tastendruck implementieren
- [ ] Fehlerfall simulieren (z.B. Docker-Service stoppen) und Verhalten prüfen
## Phase 9 Politur & Feinschliff
- [ ] Alle Screens gegen UI-Konzept prüfen (Kontrast, Schriftgrößen, Abstände)
- [ ] Speicherverbrauch und Rendering-Performance prüfen
- [ ] Code aufräumen und kommentieren
- [ ] README.md mit Setup-Anleitung (WLAN-Konfiguration, Flash-Vorgang) schreiben
- [ ] Finalen Dauertest durchführen (mehrere Stunden Betrieb ohne Absturz)
## Später (nicht Teil der Phasen)
- [ ] Git-Repository initialisieren (`git init`)
- [ ] `secrets.h.example` und übrige Struktur committen, `secrets.h` bleibt ausgeschlossen
- [ ] Optional: Remote-Repository (GitHub/GitLab) verknüpfen