mirror of
https://github.com/skoelle/wt32sc01-dashboard.git
synced 2026-09-17 17:30:25 +00:00
README.md
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
title: "wt32sc01 Dashboard"
|
||||||
|
emoji: "📱"
|
||||||
|
category: code
|
||||||
|
subcategory: "Maker Firmware"
|
||||||
|
status: active
|
||||||
|
stack: [PlatformIO, Arduino, LovyanGFX, LVGL 9, ArduinoJson]
|
||||||
@@ -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).
|
||||||
|
|||||||
Reference in New Issue
Block a user