From 94b551738d66e6247021282e1e9ddb623cf80890 Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Sat, 15 Aug 2026 00:04:49 +0200 Subject: [PATCH] README.md --- .moonweb.yml | 6 ++++++ README.md | 50 +++++++++++++++++++++++++------------------------- 2 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 .moonweb.yml diff --git a/.moonweb.yml b/.moonweb.yml new file mode 100644 index 0000000..1bd8a4b --- /dev/null +++ b/.moonweb.yml @@ -0,0 +1,6 @@ +title: "wt32sc01 Dashboard" +emoji: "📱" +category: code +subcategory: "Maker Firmware" +status: active +stack: [PlatformIO, Arduino, LovyanGFX, LVGL 9, ArduinoJson] diff --git a/README.md b/README.md index 135256e..d751883 100644 --- a/README.md +++ b/README.md @@ -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), gesteuert ausschließlich über Touch. Vollständig übernommene Backend-APIs 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, Migrationsplan, Task-Liste) liegt unter [`docs/`](docs/). -## Setup +## 🚀 Setup -1. PlatformIO CLI installieren: +1. 💻 PlatformIO CLI installieren: ``` pip install -U platformio ``` -2. WLAN-Zugangsdaten + API-URLs eintragen: +2. 🔑 WLAN-Zugangsdaten + API-URLs eintragen: ``` 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 `.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 + 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 ``` -**Windows:** +**🪟 Windows:** ``` 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: ``` @@ -70,25 +70,25 @@ Falls du den Monitor separat sehen willst: pio device monitor ``` -## Bedienung +## 🎮 Bedienung | Touch | Funktion | |---|---| -| Tap auf Wetter-Kachel (Home) | Wetter-Detailseite | -| Tap auf Kalender-Kachel (Home) | Kalender-Detailseite | -| Tap auf MVG-Kachel (Home) | MVG-Abfahrtsseite | -| Tap auf Zurück-Button (unten links, Detailseiten) | Zurück zur Hauptseite | -| Tap auf Wetter-Kachel im Fehlerzustand | Manueller Retry | +| 🏠 Tap auf Wetter-Kachel (Home) | 🌤️ Wetter-Detailseite | +| 🏠 Tap auf Kalender-Kachel (Home) | 📅 Kalender-Detailseite | +| 🏠 Tap auf MVG-Kachel (Home) | 🚇 MVG-Abfahrtsseite | +| 🔙 Tap auf Zurück-Button (unten links, Detailseiten) | ⬅️ Zurück zur Hauptseite | +| 🔄 Tap auf Wetter-Kachel im Fehlerzustand | 🔁 Manueller Retry | Nach 5 Minuten ohne Touch-Eingabe springt das Gerät automatisch zurück zur Hauptseite. Die Hauptseite aktualisiert sich alle 10 Minuten, die 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). -**Retry:** +**🔄 Retry:** - Automatisch beim nächsten regulären Refresh-Intervall (10 Min. bzw. 1 Min.) - 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) ``` -## Utilities +## 🛠️ Utilities -- **`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. -- **`theme.h`** – Dark-Mode-Farbschema für LVGL: sehr dunkler Hintergrund (`#000000`/`#0B0B0D`), heller Text, dezente Akzentfarben pro Kachel. +- **🔤 `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. +- **🎨 `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. @@ -136,6 +136,6 @@ Icons werden prozedural als LVGL-Canvas-Objekte gezeichnet (keine externen Bitma Vorgängerprojekt mit M5Stack Core: -## Lizenz +## 📜 Lizenz Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).