mirror of
https://github.com/skoelle/m5stack-dashboard.git
synced 2026-09-17 16:50:23 +00:00
Initial commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user