firecrest/firmware/components/display.yaml
pyr0ball a0734891ad fix: display BME280 ambient temperature in Fahrenheit, not Celsius
sensors.yaml formatted the raw BME280 reading directly with no unit
conversion, inconsistent with the dial setpoints and weather widget, which
are already Fahrenheit. Converts at the only point this sensor's value
reaches the UI (shared by every display variant); climate.yaml's internal
Celsius values are untouched since ESPHome's climate component always
operates in Celsius regardless of display unit.
2026-07-12 14:26:27 -07:00

272 lines
9.1 KiB
YAML

lvgl:
id: lvgl_comp
displays:
- lcd_display
touchscreens:
- touch_gt911
pages:
- id: page_home
widgets:
- obj:
width: 100%
height: 510px
pad_all: 16
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: column
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- label:
id: home_temp_label
text: "-- °F"
text_font: montserrat_48
- label:
id: home_mode_label
text: "Mode: --"
text_font: montserrat_28
- obj:
width: 100%
height: size_content
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: row
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- button:
width: 140px
height: 100px
on_click:
climate.control:
id: main_thermostat
target_temperature_low: !lambda "return id(main_thermostat).target_temperature_low - 0.5f;"
target_temperature_high: !lambda "return id(main_thermostat).target_temperature_high - 0.5f;"
widgets:
- label:
text: "-"
text_font: montserrat_40
- button:
width: 140px
height: 100px
on_click:
climate.control:
id: main_thermostat
target_temperature_low: !lambda "return id(main_thermostat).target_temperature_low + 0.5f;"
target_temperature_high: !lambda "return id(main_thermostat).target_temperature_high + 0.5f;"
widgets:
- label:
text: "+"
text_font: montserrat_40
- id: page_sensors
widgets:
- obj:
width: 100%
height: 510px
pad_all: 16
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: column
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- label:
id: sensors_temp_label
text: "Temperature: -- °F"
text_font: montserrat_28
- label:
id: sensors_humidity_label
text: "Humidity: -- %"
text_font: montserrat_28
- label:
id: sensors_pressure_label
text: "Pressure: -- hPa"
text_font: montserrat_28
- id: page_settings
widgets:
- obj:
width: 100%
height: 510px
pad_all: 16
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: column
flex_align_cross: center
flex_align_track: start
flex_align_main: start
widgets:
- label:
id: settings_ip_label
text: "IP: --"
text_font: montserrat_20
- label:
id: settings_uptime_label
text: "Uptime: -- min"
text_font: montserrat_20
- label:
text: "Manual relay override (bypasses thermostat):"
text_font: montserrat_16
- obj:
width: 100%
height: size_content
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: row_wrap
flex_align_cross: start
flex_align_track: start
flex_align_main: start
widgets:
- checkbox:
text: "Fan"
on_click:
switch.toggle: relay_fan
- checkbox:
text: "Cool 1"
on_click:
switch.toggle: relay_cool1
- checkbox:
text: "Cool 2"
on_click:
switch.toggle: relay_cool2
- checkbox:
text: "Heat 1"
on_click:
switch.toggle: relay_heat1
- checkbox:
text: "Heat 2"
on_click:
switch.toggle: relay_heat2
- id: page_schedule
widgets:
- obj:
width: 100%
height: 510px
pad_all: 16
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: column
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- label:
text: "Preset"
text_font: montserrat_28
- obj:
width: 100%
height: size_content
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: row
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- button:
width: 300px
height: 100px
on_click:
climate.control:
id: main_thermostat
preset: home
widgets:
- label:
text: "Home"
text_font: montserrat_28
- button:
width: 300px
height: 100px
on_click:
climate.control:
id: main_thermostat
preset: away
widgets:
- label:
text: "Away"
text_font: montserrat_28
- label:
text: "Time-based scheduling runs in Home Assistant, not on this device."
text_font: montserrat_16
top_layer:
widgets:
- obj:
id: nav_bar
align: bottom_mid
width: 100%
height: 90px
pad_all: 4
radius: 0
border_width: 0
outline_width: 0
scrollable: false
layout:
type: flex
flex_flow: row
flex_align_cross: center
flex_align_track: center
flex_align_main: space_evenly
widgets:
- button:
id: nav_btn_home
width: 220px
height: 78px
on_click:
lvgl.page.show: page_home
widgets:
- label:
text: "Home"
text_font: montserrat_20
- button:
id: nav_btn_sensors
width: 220px
height: 78px
on_click:
lvgl.page.show: page_sensors
widgets:
- label:
text: "Sensors"
text_font: montserrat_20
- button:
id: nav_btn_settings
width: 220px
height: 78px
on_click:
lvgl.page.show: page_settings
widgets:
- label:
text: "Settings"
text_font: montserrat_20
- button:
id: nav_btn_schedule
width: 220px
height: 78px
on_click:
lvgl.page.show: page_schedule
widgets:
- label:
text: "Schedule"
text_font: montserrat_20