From 9e1a9ebe9f2f818370b51178e9780475d1e24d9b Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Sun, 12 Jul 2026 16:35:05 -0700 Subject: [PATCH] feat: add mode selector modal (Heat/Cool/Off) to classic Home screen The thermostat had no way to actually set its operating mode: home_mode_label was read-only, and no widget anywhere called climate.control with a mode. Tapping the mode label now shows a modal (mirrors the existing nav_menu_overlay pattern) with explicit Heat/Cool/Off choices. --- firmware/components/display-classic.yaml | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/firmware/components/display-classic.yaml b/firmware/components/display-classic.yaml index 167ff69..d70b34d 100644 --- a/firmware/components/display-classic.yaml +++ b/firmware/components/display-classic.yaml @@ -222,6 +222,8 @@ lvgl: id: home_mode_label text: "Mode: --" text_font: montserrat_20 + on_click: + lvgl.widget.show: mode_select_overlay - label: id: home_temp_label text: "-- °F" @@ -528,3 +530,48 @@ lvgl: - label: text: "Schedule" text_font: montserrat_20 + - obj: + id: mode_select_overlay + hidden: true + align: center + width: 280px + height: size_content + pad_all: 8 + radius: 8 + layout: + type: flex + flex_flow: column + flex_align_cross: stretch + flex_align_track: start + flex_align_main: start + widgets: + - button: + on_click: + - climate.control: + id: main_thermostat + mode: HEAT + - lvgl.widget.hide: mode_select_overlay + widgets: + - label: + text: "Heat" + text_font: montserrat_20 + - button: + on_click: + - climate.control: + id: main_thermostat + mode: COOL + - lvgl.widget.hide: mode_select_overlay + widgets: + - label: + text: "Cool" + text_font: montserrat_20 + - button: + on_click: + - climate.control: + id: main_thermostat + mode: "OFF" + - lvgl.widget.hide: mode_select_overlay + widgets: + - label: + text: "Off" + text_font: montserrat_20