Files
m5stack-dashboard/TODO.md
T
2026-08-01 23:38:09 +02:00

99 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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