Commit Graph
8 Commits
Author SHA1 Message Date
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