Commit Graph
43 Commits
Author SHA1 Message Date
stefankoelle 55a588b580 calender UI change 2026-08-02 20:49:05 +02:00
stefankoelle 3629c44ee8 loading remove 2026-08-02 20:39:02 +02:00
stefankoelle 9d504739be final fix for color and dark mode 2026-08-02 20:33:32 +02:00
stefankoelle 3e16e3dd34 loader info 2026-08-02 20:22:50 +02:00
stefankoelle a88e50bf8b fix colors 2026-08-02 20:15:53 +02:00
stefankoelle f1d9322392 fix build 2026-08-02 20:02:35 +02:00
stefankoelle 1a1c5470c1 explicit set dark 2026-08-02 19:57:12 +02:00
stefankoelle aa7b5ee4f5 wieder darkmode versuchen 2026-08-02 19:48:35 +02:00
stefankoelle 1005b4434c more UI fixes 2026-08-02 15:01:55 +02:00
stefankoelle b04d5f6ee8 calender UI update 2026-08-02 14:54:18 +02:00
stefankoelle c09a5b6e36 weather UI update 2026-08-02 14:51:31 +02:00
stefankoelle eeb580b1d0 mvg UI update again 2026-08-02 14:50:06 +02:00
stefankoelle c2947fa748 fix build 2026-08-02 14:42:11 +02:00
stefankoelle 8b2de7a54a fix weather UI 2026-08-02 14:38:18 +02:00
stefankoelle 74abe23482 adjust calender and mvg UI 2026-08-02 14:35:48 +02:00
stefankoelle 4f596a8f85 adjust mvg UI 2026-08-02 14:34:09 +02:00
stefankoelle 7a99a84155 calender and weather UI updates 2026-08-02 14:29:00 +02:00
stefankoelle c450a186bb darkmode fix 2026-08-02 14:19:27 +02:00
stefankoelle 34ede1f09a fix auto return to home 2026-08-02 13:48:29 +02:00
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