mirror of
https://github.com/skoelle/m5stack-dashboard.git
synced 2026-09-17 16:50:23 +00:00
4.7 KiB
4.7 KiB
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.examplemit Platzhaltern für WLAN SSID/Passwort erstellen.gitignorevorbereiten (schließtinclude/secrets.h,.pio/aus)- Minimalen
src/main.cppschreiben, der "Hello Dashboard" anzeigt scripts/deploy.shschreiben (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"mitprobability > 0in 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.exampleund übrige Struktur committen,secrets.hbleibt ausgeschlossen- Optional: Remote-Repository (GitHub/GitLab) verknüpfen