Commit Graph
24 Commits
Author SHA1 Message Date
stefankoelle fdb71bb3c6 new layout 2026-08-02 13:27:07 +02:00
stefankoelle cc1efb8d43 fix backlight and touch pins 2026-08-02 13:11:34 +02:00
stefankoelle 36b58f99c9 correct pins 2026-08-02 12:51:44 +02:00
stefankoelle 6eec8255e3 new board config 2026-08-02 12:31:47 +02:00
stefankoelle e25091844a try 2026-08-02 12:09:41 +02:00
stefankoelle 7b05426993 fixed 2026-08-02 11:54:27 +02:00
stefankoelle e8dd23ac77 removing warnings leads to other problems 2026-08-02 11:33:22 +02:00
stefankoelle d8ef7b7e2f fix 2026-08-02 11:25:24 +02:00
stefankoelle ea469f4115 move file 2026-08-02 11:09:40 +02:00
stefankoelle 8040abb103 README.md 2026-08-02 11:03:43 +02:00
stefankoelle fedeccc148 AGENTS.md 2026-08-02 10:56:09 +02:00
stefankoelle 71be017100 Phase 7: add Windows .cmd equivalents for build/deploy scripts 2026-08-02 10:44:45 +02:00
stefankoelle a686689787 Phase 7: archive migration docs to docs/, rewrite README for WT32-SC01 Plus
- 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)
2026-08-02 10:44:29 +02:00
stefankoelle 65e7ec8523 Phase 6: procedural LVGL canvas icons + manual retry on weather tile
- src/icons/icons.{h,cpp}: colored procedural icons drawn onto LVGL
  canvases (PSRAM-backed ARGB8888): sun, moon, cloud, rain, thunderstorm
  (selected from API symbol field), rain-warning triangle, retry/error
  symbol, back arrow. Replaces old M5GFX-based icons.h.
- tile_button: add tile_button_set_icon_obj() to swap text glyph for a
  canvas icon object
- home_screen: weather tile now shows the real procedural weather icon
  (rebuilt on each refresh); tapping the weather tile in error state
  triggers a manual retry (SPEC.md section 8) instead of navigating
2026-08-02 10:43:30 +02:00
stefankoelle 592a615a5d Phase 5: detail screens (scrollable lists + back button) + main controller
- weather_detail: scrollable hourly forecast (time, temp, description,
  rain probability), data logic ported from old weather_detail_screen.cpp
- calendar_detail: scrollable list of all 10 events (summary + formatted
  date/all_day), ported from old calendar_detail_screen.cpp
- mvg: scrollable departures list (line badge U/S colored, destination,
  time/delay, cancellation), 1-minute refresh timer ported from old
  mvg_screen.cpp
- all three use back_button widget (fixed bottom-left)
- main.cpp: Screen controller, navigates between screens via callbacks,
  5-minute inactivity timeout -> home, per-screen tick() for refresh
2026-08-02 10:38:10 +02:00
stefankoelle 28e3faf056 Phase 4: home screen with three touch tiles
- weather tile (big, top, accent blue): temperature + description +
  rain hint badge, tap -> weather detail
- calendar tile (big, middle, accent purple): first 2 events as preview
  (summary + DateUtils::formatShortDE incl. all_day handling), tap ->
  calendar detail
- mvg tile (small, bottom, accent green): label only, no preview,
  tap -> mvg screen
- 10-minute refresh timer + tick() check (ported from old home_screen.cpp)
- data logic reused verbatim: doFetch/weatherOk/calendarOk pattern,
  willRainSoon threshold, sanitizeGermanText + formatShortDE formatting
- placeholder glyphs (LV_SYMBOL_IMAGE/LIST/FILE) until bitmap icons
  land in Phase 6
2026-08-02 10:38:01 +02:00
stefankoelle 14e1b4f7af Phase 3: reusable UI widgets (tile_button, back_button) + screen_base lifecycle
- tile_button: large touch tile with accent bg + title + icon + value,
  fires LV_EVENT_CLICKED (for home screen tiles)
- back_button: fixed bottom-left Zurueck button (LV_SYMBOL_LEFT),
  large touch target, reused on all detail screens
- screen_base.h: Screen struct with create/show/hide/refresh/tick
  lifecycle around an lv_obj_t root (replaces old ScreenId-only header)
- lv_conf.h: enable Montserrat 16/20/24 fonts used by the widgets
2026-08-02 10:32:29 +02:00
stefankoelle 4a9b462cea Phase 2: add Serial-log API verification at boot
Fetch weather/calendar/departures once in setup() after WiFi and dump
parsed fields to Serial, so JSON parsing against the three real
endpoints can be verified on hardware independently of the UI. API
layer itself unchanged (1:1 from m5stack-dashboard).
2026-08-02 10:30:14 +02:00
stefankoelle 82d466cada Phase 0: minimal main.cpp (WiFi + display + LVGL test button) + carry over hardware-independent helpers
- src/main.cpp rewritten for ESP32-S3: Serial + display_init + WiFi
  connect (logic ported from old main.cpp, M5.Lcd prints -> Serial),
  LVGL test button screen to verify touch in Phase 1
- include/text_utils.h, date_utils.h: kept 1:1 (no M5Stack dependency)
- include/secrets.h.example, .gitignore, scripts/{build,deploy}.sh,
  .github/workflows/build.yml: kept 1:1 (hardware-independent)
2026-08-02 10:29:01 +02:00
stefankoelle 59198284fd Phase 0/2: API layer kept 1:1, only secrets.h include path fixed
http_client/weather_api/calendar_api/departures_api are hardware-
independent (HTTP GET + ArduinoJson parsing, same endpoints, same
JSON). Kept verbatim per PLAN.md migration strategy; only changed
#include "../../include/secrets.h" -> #include <secrets.h> to match
the PlatformIO include/ layout (no functional change).
2026-08-02 10:28:56 +02:00
stefankoelle abb5c62f3b Phase 0/1: display_setup (LovyanGFX + LVGL) and LVGL theme
- include/theme.h: replace M5Stack-based RGB565 constants with LVGL
  lv_color_hex helpers; same dark-mode palette + tile accent colors,
  portrait SCREEN_W=320 / SCREEN_H=480
- src/display/display_setup.{h,cpp}: custom LGfx device class with
  Panel_ST7796 + Bus_Parallel8 (esp32s3) + Light_PWM + Touch_FT5x06
  (FT6336U is FT5x06 family), setRotation(1) for portrait 320x480
- LVGL display driver with two PSRAM partial draw buffers (320x80)
- LVGL pointer indev wired to LovyanGFX touch readback
- display_loop() drives lv_tick_inc + lv_timer_handler
2026-08-02 10:28:49 +02:00
stefankoelle 9e5056333c Phase 0: platformio.ini for esp32-s3 + LovyanGFX/LVGL9
- Replace m5stack-core-esp32 env with wt32-sc01-plus (freenove_esp32_s3_wroom
  board as closest N8R8 PSRAM match; WT32-SC01 Plus has no built-in board ID)
- 8MB partition table, USB CDC, PSRAM build flags
- lib_deps: LovyanGFX, lvgl@^9.2, ArduinoJson
- Add LV_CONF_INCLUDE_SIMPLE + project root include path so LVGL finds lv_conf.h
- lv_conf.h from lvgl 9.5 template, enabled (0 -> 1)
- include/board_pins.h: WT32-SC01 Plus reference pinout (ST7796 8-bit parallel
  + FT6336U I2C touch), to be verified against concrete board revision
2026-08-02 10:28:43 +02:00
stefankoelle e940e2dcbe SPEC.md 2026-08-02 09:52:32 +02:00
stefankoelle 26825394a2 Initial commit 2026-08-02 09:49:45 +02:00