ESPHome firmware for Waveshare ESP32-S3 7" touch thermostat with direct HVAC relay control
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. |
||
|---|---|---|
| docs | ||
| firmware | ||
| .gitignore | ||
| README.md | ||
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
- Copy
firmware/secrets.example.yamltofirmware/secrets.yamland fill in your values. esphome run firmware/waveshare-thermostat.yaml
License
MIT