README.md

This commit is contained in:
2026-08-15 00:04:49 +02:00
parent 957f30600e
commit 94b551738d
2 changed files with 31 additions and 25 deletions
+6
View File
@@ -0,0 +1,6 @@
title: "wt32sc01 Dashboard"
emoji: "📱"
category: code
subcategory: "Maker Firmware"
status: active
stack: [PlatformIO, Arduino, LovyanGFX, LVGL 9, ArduinoJson]
+25 -25
View File
@@ -1,6 +1,6 @@
# WT32-SC01 Plus Dashboard # 🖥️ WT32-SC01 Plus Dashboard
Wetter-, Kalender- und MVG-Abfahrten-Dashboard für den WT32-SC01 Plus 🌤️ 📅 🚇 Wetter-, Kalender- und MVG-Abfahrten-Dashboard für den WT32-SC01 Plus
(ESP32-S3, 3.5" kapazitiver Touch-IPS-Display, 320x480 im Hochformat), (ESP32-S3, 3.5" kapazitiver Touch-IPS-Display, 320x480 im Hochformat),
gesteuert ausschließlich über Touch. Vollständig übernommene Backend-APIs gesteuert ausschließlich über Touch. Vollständig übernommene Backend-APIs
und Fachlogik aus dem [M5Stack-Vorgängerprojekt](https://github.com/skoelle/m5stack-dashboard), und Fachlogik aus dem [M5Stack-Vorgängerprojekt](https://github.com/skoelle/m5stack-dashboard),
@@ -15,14 +15,14 @@ Details zu Funktionsumfang, API-Formaten und Design-Entscheidungen
stehen in [`SPEC.md`](SPEC.md). Die Migrationshistorie (Vorgänger-Spec, stehen in [`SPEC.md`](SPEC.md). Die Migrationshistorie (Vorgänger-Spec,
Migrationsplan, Task-Liste) liegt unter [`docs/`](docs/). Migrationsplan, Task-Liste) liegt unter [`docs/`](docs/).
## Setup ## 🚀 Setup
1. PlatformIO CLI installieren: 1. 💻 PlatformIO CLI installieren:
``` ```
pip install -U platformio pip install -U platformio
``` ```
2. WLAN-Zugangsdaten + API-URLs eintragen: 2. 🔑 WLAN-Zugangsdaten + API-URLs eintragen:
``` ```
cp include/secrets.h.example include/secrets.h cp include/secrets.h.example include/secrets.h
``` ```
@@ -30,25 +30,25 @@ Migrationsplan, Task-Liste) liegt unter [`docs/`](docs/).
`*_API_URL`-Konstanten anpassen. `include/secrets.h` ist über `*_API_URL`-Konstanten anpassen. `include/secrets.h` ist über
`.gitignore` vom Repo ausgeschlossen. `.gitignore` vom Repo ausgeschlossen.
3. (Optional) Pinbelegung verifizieren: `include/board_pins.h` enthält die 3. 📌 (Optional) Pinbelegung verifizieren: `include/board_pins.h` enthält die
Referenz-Pinout für das WT32-SC01 Plus (ST7796 8-Bit-Parallel + Referenz-Pinout für das WT32-SC01 Plus (ST7796 8-Bit-Parallel +
FT6336U I2C-Touch). Bei abweichender Board-Revision hier anpassen. FT6336U I2C-Touch). Bei abweichender Board-Revision hier anpassen.
4. Gerät per USB anschließen. 4. 🔌 Gerät per USB anschließen.
## Build & Flash ## 🔨 Build & Flash
**Linux/macOS:** **🐧 Linux/macOS:**
``` ```
./scripts/deploy.sh ./scripts/deploy.sh
``` ```
**Windows:** **🪟 Windows:**
``` ```
scripts\deploy.cmd scripts\deploy.cmd
``` ```
Falls mehrere serielle Geräte angeschlossen sind und die automatische 🔌 Falls mehrere serielle Geräte angeschlossen sind und die automatische
Port-Erkennung fehlschlägt, kann der Port explizit übergeben werden: Port-Erkennung fehlschlägt, kann der Port explizit übergeben werden:
``` ```
@@ -70,25 +70,25 @@ Falls du den Monitor separat sehen willst:
pio device monitor pio device monitor
``` ```
## Bedienung ## 🎮 Bedienung
| Touch | Funktion | | Touch | Funktion |
|---|---| |---|---|
| Tap auf Wetter-Kachel (Home) | Wetter-Detailseite | | 🏠 Tap auf Wetter-Kachel (Home) | 🌤️ Wetter-Detailseite |
| Tap auf Kalender-Kachel (Home) | Kalender-Detailseite | | 🏠 Tap auf Kalender-Kachel (Home) | 📅 Kalender-Detailseite |
| Tap auf MVG-Kachel (Home) | MVG-Abfahrtsseite | | 🏠 Tap auf MVG-Kachel (Home) | 🚇 MVG-Abfahrtsseite |
| Tap auf Zurück-Button (unten links, Detailseiten) | Zurück zur Hauptseite | | 🔙 Tap auf Zurück-Button (unten links, Detailseiten) | ⬅️ Zurück zur Hauptseite |
| Tap auf Wetter-Kachel im Fehlerzustand | Manueller Retry | | 🔄 Tap auf Wetter-Kachel im Fehlerzustand | 🔁 Manueller Retry |
Nach 5 Minuten ohne Touch-Eingabe springt das Gerät automatisch zurück Nach 5 Minuten ohne Touch-Eingabe springt das Gerät automatisch zurück
zur Hauptseite. Die Hauptseite aktualisiert sich alle 10 Minuten, die zur Hauptseite. Die Hauptseite aktualisiert sich alle 10 Minuten, die
MVG-Seite jede Minute (nur beim Betreten der Seite, kein Background-Refresh). MVG-Seite jede Minute (nur beim Betreten der Seite, kein Background-Refresh).
## Fehlerbehandlung ## ⚠️ Fehlerbehandlung
Wenn eine API nicht erreichbar ist, werden die letzten gültigen Daten weiterhin angezeigt (außer bei MVG-Abfahrten, wo nur beim aktuellen Aufruf geladen wird), zusätzlich wird auf der betroffenen Kachel bzw. dem Screen eine Fehleranzeige gezeigt (Text + ggf. Retry-Icon). Wenn eine API nicht erreichbar ist, werden die letzten gültigen Daten weiterhin angezeigt (außer bei MVG-Abfahrten, wo nur beim aktuellen Aufruf geladen wird), zusätzlich wird auf der betroffenen Kachel bzw. dem Screen eine Fehleranzeige gezeigt (Text + ggf. Retry-Icon).
**Retry:** **🔄 Retry:**
- Automatisch beim nächsten regulären Refresh-Intervall (10 Min. bzw. 1 Min.) - Automatisch beim nächsten regulären Refresh-Intervall (10 Min. bzw. 1 Min.)
- Manuell durch erneutes Antippen der Kachel im Fehlerzustand - Manuell durch erneutes Antippen der Kachel im Fehlerzustand
@@ -122,13 +122,13 @@ Wenn eine API nicht erreichbar ist, werden die letzten gültigen Daten weiterhin
└── docs/ Migrationshistorie (SPEC-old, PLAN, TODO) └── docs/ Migrationshistorie (SPEC-old, PLAN, TODO)
``` ```
## Utilities ## 🛠️ Utilities
- **`text_utils.h`** Transliteriert deutsche Umlaute und Sonderzeichen von UTF-8 nach ASCII, damit LVGL-Labels Sonderzeichen korrekt darstellen können. - **🔤 `text_utils.h`** Transliteriert deutsche Umlaute und Sonderzeichen von UTF-8 nach ASCII, damit LVGL-Labels Sonderzeichen korrekt darstellen können.
- **`date_utils.h`** Datumsformatierung ohne NTP-Abhängigkeit. Formatiert Zeitstempel aus den API-Responses in lesbare deutsche Strings. - **📅 `date_utils.h`** Datumsformatierung ohne NTP-Abhängigkeit. Formatiert Zeitstempel aus den API-Responses in lesbare deutsche Strings.
- **`theme.h`** Dark-Mode-Farbschema für LVGL: sehr dunkler Hintergrund (`#000000`/`#0B0B0D`), heller Text, dezente Akzentfarben pro Kachel. - **🎨 `theme.h`** Dark-Mode-Farbschema für LVGL: sehr dunkler Hintergrund (`#000000`/`#0B0B0D`), heller Text, dezente Akzentfarben pro Kachel.
## Icons ## 🎨 Icons
Icons werden prozedural als LVGL-Canvas-Objekte gezeichnet (keine externen Bitmap-Dateien). Das `src/icons/`-Verzeichnis enthält Funktionen, die Icon-Shapes direkt im Code erzeugen u.a. Wetter-Icons (Sonne, Wolken, Regen), U-Bahn/S-Bahn-Symbole, Kalender-Icon, Zurück-Pfeil und Retry-Icon. Vorteil: Kein Nachladen von SD-Karte, keine .bin-Abhängigkeit, Icon-Pixel sind im Flash gespeichert. Icons werden prozedural als LVGL-Canvas-Objekte gezeichnet (keine externen Bitmap-Dateien). Das `src/icons/`-Verzeichnis enthält Funktionen, die Icon-Shapes direkt im Code erzeugen u.a. Wetter-Icons (Sonne, Wolken, Regen), U-Bahn/S-Bahn-Symbole, Kalender-Icon, Zurück-Pfeil und Retry-Icon. Vorteil: Kein Nachladen von SD-Karte, keine .bin-Abhängigkeit, Icon-Pixel sind im Flash gespeichert.
@@ -136,6 +136,6 @@ Icons werden prozedural als LVGL-Canvas-Objekte gezeichnet (keine externen Bitma
Vorgängerprojekt mit M5Stack Core: <https://github.com/skoelle/m5stack-dashboard> Vorgängerprojekt mit M5Stack Core: <https://github.com/skoelle/m5stack-dashboard>
## Lizenz ## 📜 Lizenz
Dieses Projekt steht unter der [MIT-Lizenz](LICENSE). Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).