mirror of
https://github.com/skoelle/wt32sc01-dashboard.git
synced 2026-09-17 17:30:25 +00:00
- Move SPEC-old.md, PLAN.md, TODO.md -> docs/ (migrationshistorie nachvollziehbar, nicht geloescht laut Auftrag) - README.md neu: WT32-SC01-Plus-Setup, Touch-Bedienung, Projektstruktur, Verweis auf m5stack-dashboard als Referenz - deploy.sh unverändert (hardwareunabhaengig, ruft nur pio run --target upload auf)
5.4 KiB
5.4 KiB
TODO – WT32-SC01 Plus Dashboard
Letztes Update: 2026-08-02 · Details/Begründungen siehe PLAN.md, Fachanforderungen siehe SPEC.md
Phase 0 – Setup
- Neues GitHub-Repository anlegen (Vorschlag:
wt32sc01-dashboard) git initlokal, Remote verknüpfen, erster Commit (leeres PlatformIO-Grundgerüst)platformio.inineu anlegen: Boardesp32-s3, Frameworkarduino, PSRAM aktivieren- LovyanGFX und LVGL (v9) als Lib-Dependencies eintragen
.gitignoreausm5stack-dashboardübernehmen (inkl.include/secrets.h,.pio/)include/secrets.h.exampleaus Original übernehmen,include/secrets.hlokal anlegen (nicht committen)
Phase 1 – Display & Touch
- Exakte Pinbelegung des konkret vorliegenden WT32-SC01-Plus-Boards verifizieren (Display-Datenbus, WR/RD/DC/CS/RST, Backlight, Touch-I2C SDA/SCL/INT)
include/board_pins.hmit verifizierten Pin-Defines anlegensrc/display/display_setup.cpp/.h: LovyanGFX-Panel-Konfiguration für ST7796 (8-Bit-Parallel/i80) erstellen- Display-Rotation auf Portrait (320×480) erzwingen
- Touchcontroller FT6336U initialisieren (I2C) und in LVGL als Input-Device registrieren
- LVGL-Tick-Timer (
lv_tick_inc) und Haupt-Loop (lv_timer_handler) einbauen - Testscreen mit einem einzelnen antippbaren Button bauen, Touch-Koordinaten/Kalibrierung verifizieren
Phase 2 – API-Schicht portieren
src/api/http_client.h/cppaus Original-Repo in neues Repo kopieren, Includes/Namespaces anpassensrc/api/weather_api.h/cppkopieren, gegen Endpointhttp://docker-host-pve.fritz.box:3088/api/weathertestensrc/api/calendar_api.h/cppkopieren, gegen Endpointhttp://docker-host-pve.fritz.box:8077/api/eventstestensrc/api/departures_api.h/cppkopieren, gegen Endpointhttp://docker-host-pve.fritz.box:8078/api/departurestesten- Alle drei API-Clients unabhängig vom UI verifizieren (Serial-Log: Parsing korrekt, Felder vollständig)
- WLAN-Verbindungsaufbau (Setup-Routine) aus Original übernehmen/anpassen
Phase 3 – Wiederverwendbare UI-Bausteine
src/ui/widgets/tile_button.h/cpp: LVGL-Kachel-Komponente (Icon + Titel + optionaler Wert/Vorschau-Text), touch-tauglich groß dimensioniertsrc/ui/widgets/back_button.h/cpp: fixer Zurück-Button unten links, auf allen Detailseiten wiederverwendbar- Gemeinsames Farbschema/Theme (Dark Mode, Akzentfarben pro Kategorie) als LVGL-Style-Konstanten definieren
src/ui/screen_base.h: gemeinsame Screen-Lifecycle-Abstraktion (create/show/hide/refresh) für LVGL
Phase 4 – Home-Screen
src/ui/home_screen.h/cpp: Layout mit Wetter-Kachel (groß, oben), Kalender-Kachel (groß, mit 2 Terminen), MVG-Kachel (klein, ohne Vorschau)- Fachlogik aus Original
home_screen.cppübernehmen: Temperatur/Icon/Beschreibung-Aufbereitung, Regen-Hinweis-Schwellwert-Logik, Termin-Formatierung (all_dayvs. Uhrzeit) - Touch-Handler: Tap auf Wetter-Kachel → Wetter-Detail, Tap auf Kalender-Kachel → Kalender-Detail, Tap auf MVG-Kachel → MVG-Seite
- Regen-Hinweis-Badge auf Wetter-Kachel einbauen
- Refresh-Timer 10 Minuten (Wetter + Kalender) einbauen
Phase 5 – Detailseiten
src/ui/weather_detail_screen.h/cpp: scrollbare Stundenliste (Zeit, Temperatur, Icon, Regenwahrscheinlichkeit), Fachlogik aus Original übernehmensrc/ui/calendar_detail_screen.h/cpp: scrollbare Liste aller 10 Termine, Fachlogik aus Original übernehmensrc/ui/mvg_screen.h/cpp: scrollbare Liste aller Abfahrten (Linie, Ziel, Zeit, Verspätung, Ausfall-Hinweis), Fachlogik aus Original übernehmenback_button-Widget auf allen drei Detailseiten unten links einbinden und verdrahten- Refresh-Timer 1 Minute für MVG-Seite einbauen
Phase 6 – Icons & Feinschliff
icons.haus Original sichten: welche Icons sind direkt übernehmbar, welche müssen in höherer Auflösung neu exportiert werden- Fehlende/größere Icon-Varianten neu rendern (RGB565-Arrays), Icon-Set vervollständigen (inkl. Zurück-Pfeil-Icon, das es im Original nicht gab)
- 5-Minuten-Inaktivitäts-Timer (automatischer Rücksprung zur Hauptseite) implementieren
- Fehlerzustände (API nicht erreichbar) auf allen Screens mit Retry-Icon/Text umsetzen, manueller Retry per Tap
- Visuelle Feinabstimmung: Schriftgrößen, Abstände, Kachel-Farben gegen Referenzbild/SPEC.md prüfen
Phase 7 – Deploy & Doku
scripts/deploy.shaus Original übernehmen, Board-Flag/Baudrate für WT32-SC01 Plus anpassen- Testen: Build + Flash über
deploy.shohne Parameter (Auto-Port) und mit explizitem Port README.mdschreiben (Setup-Anleitung, Verweis aufm5stack-dashboardals Referenzprojekt)- End-to-End-Test auf echter Hardware: alle 4 Screens, alle Touch-Interaktionen, beide Refresh-Intervalle, Inaktivitäts-Rücksprung, Fehlerfall (WLAN/API trennen)
- Repo aufräumen (nicht benötigte PlatformIO-Boilerplate entfernen), finalen Commit/Tag setzen
Blocker / braucht Klärung
- Original-Quelltext (
main.cpp, Screen-.cpp-Dateien,icons.h) muss noch im Detail eingesehen werden (GitHub-Tool lieferte bisher nur Struktur, keinen Volltext) – vor Phase 2/4/5/6 nachholen, um exakte Portier-Aufwände zu bestätigen - Pinbelegung WT32-SC01 Plus am konkreten Board verifizieren (Blocker für Phase 1)
- Name des neuen Repositories final bestätigen