ESPHome firmware for Waveshare ESP32-S3 7" touch thermostat with direct HVAC relay control
Find a file
pyr0ball 434ceda91a fix: enable adv_hittest on dial arcs so touch respects each ring's own radius
Root cause of 'only the cool/blue knob drags, regardless of where you
tap': LVGL's default arc hit-testing just uses each widget's full
bounding square (whichever topmost widget's box contains the touch
point wins), not the precise ring geometry. Since cool_arc's 360x360
box is entirely contained within heat_arc's 400x400 box, cool_arc (on
top in z-order) claimed every touch inside its own square, including
touches physically on heat_arc's outer ring, which sits outside
cool_arc's box but still within heat_arc's simple bounding-box test.

Confirmed via lv_arc.c: LVGL has a precise ring-based hit test
(LV_EVENT_HIT_TEST, respects each widget's own radius and angular
span) but it's opt-in via the ADV_HITTEST flag; without it, LVGL
falls back to the simple bounding-box test. Verified the adv_hittest:
true YAML property generates lv_obj_add_flag(..., LV_OBJ_FLAG_ADV_HITTEST)
via an isolated test compile before applying to both arcs.

The differing radii (400/360) from the previous fix are still useful
for visual separation but were never sufficient on their own — this
flag is what actually makes hit-testing respect the radius difference.
2026-07-12 10:45:52 -07:00
docs docs: disambiguate 'Phase 2' terminology now that LVGL work claimed that name 2026-07-11 23:00:04 -07:00
firmware fix: enable adv_hittest on dial arcs so touch respects each ring's own radius 2026-07-12 10:45:52 -07:00
.gitignore feat: scaffold ESPHome project for Waveshare ESP32-S3 7" thermostat 2026-07-11 19:53:54 -07:00
README.md feat: scaffold ESPHome project for Waveshare ESP32-S3 7" thermostat 2026-07-11 19:53:54 -07:00

Firecrest

ESPHome firmware for the Waveshare ESP32-S3-Touch-LCD-7B touch display board, configured as a smart thermostat panel with direct 24VAC HVAC control.

Requires Home Assistant with the ESPHome integration.

Hardware

See docs/build-guide-phase1-notes.md for full pin assignments and Phase 1 hardware decisions.

Flashing

  1. Copy firmware/secrets.example.yaml to firmware/secrets.yaml and fill in your values.
  2. esphome run firmware/waveshare-thermostat.yaml

License

MIT