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

4.7 KiB
Raw Blame History

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