1501 lines
44 KiB
YAML
1501 lines
44 KiB
YAML
# neo-nesp UI
|
||
|
||
packages:
|
||
colors: !include colors/HOMEASSISTANT
|
||
|
||
font:
|
||
- file: 'gfonts://Roboto@400'
|
||
glyphs: ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ°.:/+-%–'
|
||
id: roboto_reg
|
||
size: 24
|
||
bpp: 4
|
||
extras:
|
||
# https://pictogrammers.github.io
|
||
- file: "fonts/materialdesignicons-webfont.ttf"
|
||
glyphs: [
|
||
"\U000F050F", # mdi:thermometer
|
||
"\U000F058E", # mdi:water-percent
|
||
"\U000F0425", # mdi:power
|
||
"\U000F0238", # mdi:fire
|
||
"\U000F1A45", # mdi:heat-wave
|
||
"\U000F0717", # mdi:snowflake
|
||
"\U000F1A79", # mdi:sun-snowflake-variant
|
||
"\U000F0210", # mdi:fan
|
||
"\U000F171D", # mdi:fan-auto
|
||
"\U000F1472", # mdi:fan-speed-1
|
||
"\U000F1473", # mdi:fan-speed-2
|
||
"\U000F1474", # mdi:fan-speed-3
|
||
"\U000F032A", # mdi:leaf
|
||
"\U000F04B9", # mdi:sofa
|
||
"\U000F14DE", # mdi:rocket-launch
|
||
"\U000F0D80", # mdi:home-floor-1
|
||
"\U000F0D81", # mdi:home-floor-2
|
||
"\U000F004D", # mdi:arrow-left
|
||
"\U000F09DF", # mdi:circle-small
|
||
"\U000F0E03", # mdi:thermometer-chevron-up
|
||
"\U000F0E02", # mdi:thermometer-chevron-down
|
||
"\U000F0594", # mdi:weather-night (clear)
|
||
"\U000F0590", # mdi:weather-cloudy (cloudy)
|
||
"\U000F0898", # mdi:weather-hurricane (cyclone, tropical_cyclone)
|
||
"\U000F0F30", # mdi:weather-hazy (dust, dusty, haze, hazy)
|
||
"\U000F0591", # mdi:weather-fog (fog)
|
||
"\U000F12CB", # mdi:snowflake-melt (frost)
|
||
"\U000F0596", # mdi:weather-pouring (heavy_shower, heavy_showers, rain)
|
||
"\U000F0F33", # mdi:weather-partly-rainy (light_rain)
|
||
# mdi:weather-light-showers (light_shower, light_showers)
|
||
"\U000F0599", # mdi:weather-sunny (mostly_sunny, sunny)
|
||
"\U000F0595", # mdi:weather-partly-cloudy (partly_cloudy)
|
||
"\U000F0597", # mdi:weather-rainy (shower, showers)
|
||
"\U000F0598", # mdi:weather-snowy (snow)
|
||
"\U000F0593", # mdi:weather-lightning
|
||
"\U000F067E", # mdi:weather-lightning-rainy (storm, storms)
|
||
"\U000F059D", # mdi:weather-windy (wind, windy)
|
||
"\U000F0592", # mdi:weather-hail
|
||
]
|
||
|
||
- file: 'gfonts://Roboto@400'
|
||
glyphs: ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ°.:/+-%–'
|
||
id: roboto_med
|
||
size: 48
|
||
bpp: 4
|
||
extras:
|
||
# https://pictogrammers.github.io
|
||
- file: "fonts/materialdesignicons-webfont.ttf"
|
||
glyphs: [
|
||
"\U000F050F", # mdi:thermometer
|
||
"\U000F058E", # mdi:water-percent
|
||
"\U000F0425", # mdi:power
|
||
"\U000F0238", # mdi:fire
|
||
"\U000F1A45", # mdi:heat-wave
|
||
"\U000F0717", # mdi:snowflake
|
||
"\U000F1A79", # mdi:sun-snowflake-variant
|
||
"\U000F0210", # mdi:fan
|
||
"\U000F171D", # mdi:fan-auto
|
||
"\U000F1472", # mdi:fan-speed-1
|
||
"\U000F1473", # mdi:fan-speed-2
|
||
"\U000F1474", # mdi:fan-speed-3
|
||
"\U000F032A", # mdi:leaf
|
||
"\U000F04B9", # mdi:sofa
|
||
"\U000F14DE", # mdi:rocket-launch
|
||
"\U000F0D80", # mdi:home-floor-1
|
||
"\U000F0D81", # mdi:home-floor-2
|
||
"\U000F004D", # mdi:arrow-left
|
||
"\U000F09DF", # mdi:circle-small
|
||
"\U000F0E03", # mdi:thermometer-chevron-up
|
||
"\U000F0E02", # mdi:thermometer-chevron-down
|
||
"\U000F0594", # mdi:weather-night (clear)
|
||
"\U000F0590", # mdi:weather-cloudy (cloudy)
|
||
"\U000F0898", # mdi:weather-hurricane (cyclone, tropical_cyclone)
|
||
"\U000F0F30", # mdi:weather-hazy (dust, dusty, haze, hazy)
|
||
"\U000F0591", # mdi:weather-fog (fog)
|
||
"\U000F12CB", # mdi:snowflake-melt (frost)
|
||
"\U000F0596", # mdi:weather-pouring (heavy_shower, heavy_showers, rain)
|
||
"\U000F0F33", # mdi:weather-partly-rainy (light_rain)
|
||
# mdi:weather-light-showers (light_shower, light_showers)
|
||
"\U000F0599", # mdi:weather-sunny (mostly_sunny, sunny)
|
||
"\U000F0595", # mdi:weather-partly-cloudy (partly_cloudy)
|
||
"\U000F0597", # mdi:weather-rainy (shower, showers)
|
||
"\U000F0598", # mdi:weather-snowy (snow)
|
||
"\U000F0593", # mdi:weather-lightning
|
||
"\U000F067E", # mdi:weather-lightning-rainy (storm, storms)
|
||
"\U000F059D", # mdi:weather-windy (wind, windy)
|
||
"\U000F0592", # mdi:weather-hail
|
||
]
|
||
|
||
- file: 'gfonts://Roboto@400'
|
||
glyphs: ' -0123456789.°C'
|
||
id: roboto_huge
|
||
size: 90
|
||
bpp: 4
|
||
extras:
|
||
# https://pictogrammers.github.io
|
||
- file: "fonts/materialdesignicons-webfont.ttf"
|
||
glyphs: [
|
||
"\U000F171D", # mdi:fan-auto
|
||
"\U000F1472", # mdi:fan-speed-1
|
||
"\U000F1473", # mdi:fan-speed-2
|
||
"\U000F1474", # mdi:fan-speed-3
|
||
"\U000F0594", # mdi:weather-night (clear)
|
||
"\U000F0590", # mdi:weather-cloudy (cloudy)
|
||
"\U000F0898", # mdi:weather-hurricane (cyclone, tropical_cyclone)
|
||
"\U000F0F30", # mdi:weather-hazy (dust, dusty, haze, hazy)
|
||
"\U000F0591", # mdi:weather-fog (fog)
|
||
"\U000F12CB", # mdi:snowflake-melt (frost)
|
||
"\U000F0596", # mdi:weather-pouring (heavy_shower, heavy_showers, rain)
|
||
"\U000F0F33", # mdi:weather-partly-rainy (light_rain)
|
||
# mdi:weather-light-showers (light_shower, light_showers)
|
||
"\U000F0599", # mdi:weather-sunny (mostly_sunny, sunny)
|
||
"\U000F0595", # mdi:weather-partly-cloudy (partly_cloudy)
|
||
"\U000F0597", # mdi:weather-rainy (shower, showers)
|
||
"\U000F0598", # mdi:weather-snowy (snow)
|
||
"\U000F0593", # mdi:weather-lightning
|
||
"\U000F067E", # mdi:weather-lightning-rainy (storm, storms)
|
||
"\U000F059D", # mdi:weather-windy (wind, windy)
|
||
"\U000F0592", # mdi:weather-hail
|
||
]
|
||
|
||
globals:
|
||
- id: active_lvgl_page
|
||
type: std::string
|
||
|
||
lvgl:
|
||
encoders:
|
||
enter_button: push_button
|
||
sensor: rotary
|
||
bg_color: black
|
||
scrollbar_mode: "OFF"
|
||
default_font: roboto_reg
|
||
text_color: white
|
||
style_definitions:
|
||
- id: style_menu_button
|
||
align: CENTER
|
||
bg_opa: TRANSP
|
||
shadow_opa: TRANSP
|
||
height: 50
|
||
width: 50
|
||
radius: 50%
|
||
- id: style_menu_button_label
|
||
align: CENTER
|
||
y: 3
|
||
text_font: roboto_med
|
||
|
||
pages:
|
||
### GUI - THERMOSTAT
|
||
- id: main_page
|
||
on_load:
|
||
- globals.set:
|
||
id: active_lvgl_page
|
||
value: '"main_page"'
|
||
widgets:
|
||
- arc:
|
||
id: arc_bg
|
||
height: 468
|
||
width: 468
|
||
align: CENTER
|
||
arc_color: graylight
|
||
arc_opa: COVER
|
||
arc_width: 2
|
||
arc_rounded: false
|
||
- arc:
|
||
id: current_temp_arc
|
||
adjustable: true
|
||
state:
|
||
disabled: true
|
||
min_value: 120 # 12°C (* 10 because decimals not supported)
|
||
max_value: 340 # 34°C
|
||
height: 468
|
||
width: 468
|
||
align: CENTER
|
||
arc_color: graylight
|
||
arc_opa: COVER
|
||
arc_width: 2
|
||
arc_rounded: false
|
||
indicator:
|
||
arc_color: graylight
|
||
arc_opa: COVER
|
||
arc_width: 2
|
||
arc_rounded: false
|
||
knob:
|
||
bg_color: white
|
||
value: 230
|
||
- meter:
|
||
id: meter_ticks
|
||
height: 480
|
||
width: 480
|
||
align: CENTER
|
||
bg_opa: TRANSP
|
||
border_width: 0
|
||
scales:
|
||
range_from: 120 # 12°C (* 10 because decimals not supported)
|
||
range_to: 340 # 34°C
|
||
ticks:
|
||
count: 89
|
||
length: 37
|
||
width: 3
|
||
color: graylight
|
||
indicators:
|
||
- line:
|
||
id: set_temp_needle
|
||
color: white
|
||
width: 8
|
||
r_mod: 10
|
||
value: 230
|
||
- arc:
|
||
id: diff_temp_arc
|
||
start_value: 120
|
||
end_value: 230
|
||
color: white
|
||
width: 2
|
||
r_mod: 10
|
||
- obj:
|
||
id: mode_bg
|
||
height: 350
|
||
width: 350
|
||
radius: 175
|
||
align: CENTER
|
||
border_width: 0
|
||
bg_color: black
|
||
- roller:
|
||
id: set_temp_roller
|
||
state:
|
||
disabled: true
|
||
align: CENTER
|
||
anim_time: 500ms
|
||
text_font: roboto_med
|
||
text_opa: TRANSP
|
||
bg_opa: TRANSP
|
||
border_width: 0
|
||
text_line_space: 30
|
||
visible_row_count: 2
|
||
selected:
|
||
text_font: roboto_huge
|
||
text_opa: COVER
|
||
bg_opa: TRANSP
|
||
border_width: 0
|
||
options:
|
||
- 16.0
|
||
- 16.5
|
||
- 17.0
|
||
- 17.5
|
||
- 18.0
|
||
- 18.5
|
||
- 19.0
|
||
- 19.5
|
||
- 20.0
|
||
- 20.5
|
||
- 21.0
|
||
- 21.5
|
||
- 22.0
|
||
- 22.5
|
||
- 23.0
|
||
- 23.5
|
||
- 24.0
|
||
- 24.5
|
||
- 25.0
|
||
- 25.5
|
||
- 26.0
|
||
- 26.5
|
||
- 27.0
|
||
- 27.5
|
||
- 28.0
|
||
- 28.5
|
||
- 29.0
|
||
- 29.5
|
||
- 30.0
|
||
selected_index: 14
|
||
- label:
|
||
id: celsius_label
|
||
align: CENTER
|
||
x: 100
|
||
y: -43
|
||
text: "°C"
|
||
- label:
|
||
id: mode_label
|
||
align: CENTER
|
||
y: -100
|
||
text: "NESP"
|
||
- label:
|
||
id: weather_icon_label
|
||
hidden: true
|
||
align: CENTER
|
||
y: -100
|
||
text_font: roboto_huge
|
||
text: " "
|
||
- label:
|
||
id: weather_temp_label
|
||
hidden: true
|
||
align: CENTER
|
||
text_font: roboto_huge
|
||
text: " "
|
||
- label:
|
||
id: weather_forecast_label
|
||
hidden: true
|
||
align: CENTER
|
||
y: 70
|
||
text: " "
|
||
- label:
|
||
id: weather_feels_like_label
|
||
hidden: true
|
||
align: CENTER
|
||
y: 130
|
||
text: " "
|
||
- label:
|
||
id: big_fan_icon_label
|
||
hidden: true
|
||
align: CENTER
|
||
text_font: roboto_huge
|
||
text: " "
|
||
- label:
|
||
id: zone_1_label
|
||
align: CENTER
|
||
x: -15
|
||
y: 90
|
||
text_color: graydarker
|
||
text: "\U000F0D80"
|
||
- label:
|
||
id: zone_2_label
|
||
align: CENTER
|
||
x: 15
|
||
y: 90
|
||
text_color: graydarker
|
||
text: "\U000F0D81"
|
||
- label:
|
||
id: current_temp_label
|
||
align: CENTER
|
||
y: 120
|
||
text: " "
|
||
- label:
|
||
id: fan_icon_label
|
||
align: CENTER
|
||
y: 210
|
||
text_font: roboto_med
|
||
text: " "
|
||
|
||
### GUI - MENU
|
||
- id: menu_page
|
||
on_load:
|
||
- globals.set:
|
||
id: active_lvgl_page
|
||
value: '"menu_page"'
|
||
- script.execute: update_menu_date_label
|
||
- lvgl.widget.enable:
|
||
- menu_zone_2_button
|
||
- menu_zone_1_button
|
||
- menu_back_button
|
||
- menu_power_button
|
||
- menu_mode_button
|
||
- menu_preset_button
|
||
- menu_fan_button
|
||
- lvgl.widget.focus: menu_power_button
|
||
on_unload:
|
||
- lvgl.widget.disable:
|
||
- menu_zone_2_button
|
||
- menu_zone_1_button
|
||
- menu_back_button
|
||
- menu_power_button
|
||
- menu_mode_button
|
||
- menu_preset_button
|
||
- menu_fan_button
|
||
widgets:
|
||
- label:
|
||
id: menu_date_label
|
||
align: LEFT_MID
|
||
x: 30
|
||
y: -60
|
||
text_align: LEFT
|
||
text_color: graydark
|
||
text: "SUN 00:00"
|
||
- label:
|
||
id: menu_weather_icon_label
|
||
align: LEFT_MID
|
||
x: 30
|
||
y: -27
|
||
text_align: LEFT
|
||
text: "\U000F0599"
|
||
- label:
|
||
id: menu_weather_label
|
||
align: LEFT_MID
|
||
x: 60
|
||
y: -30
|
||
text_align: LEFT
|
||
text: "00°C"
|
||
- label:
|
||
id: menu_indoor_label
|
||
align: LEFT_MID
|
||
x: 30
|
||
y: 10
|
||
text_align: LEFT
|
||
text_color: graydark
|
||
text: "INDOOR"
|
||
- label:
|
||
id: menu_zone_icon_label
|
||
align: LEFT_MID
|
||
x: 30
|
||
y: 58
|
||
text_align: LEFT
|
||
text: "\U000F0D81\n\U000F0D80"
|
||
- label:
|
||
id: menu_zone_temp_label
|
||
align: LEFT_MID
|
||
x: 60
|
||
y: 55
|
||
text_align: LEFT
|
||
text: "00°C 00%H\n00°C 00%H"
|
||
- label:
|
||
id: selected_menu_label
|
||
align: CENTER
|
||
x: 55
|
||
text_font: roboto_med
|
||
text_align: RIGHT
|
||
- button:
|
||
id: menu_zone_2_button
|
||
state:
|
||
disabled: true
|
||
x: 0
|
||
y: -210
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F0D81"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Upstairs\nZone"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: cover.toggle
|
||
data:
|
||
entity_id: ${zone_2_entity}
|
||
- button:
|
||
id: menu_zone_1_button
|
||
state:
|
||
disabled: true
|
||
x: 105 # 210sin(30) clock coords
|
||
y: -182 # 210cos(30)
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
align: CENTER
|
||
y: 3
|
||
text_font: roboto_med
|
||
text: "\U000F0D80"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Downstairs\nZone"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: cover.toggle
|
||
data:
|
||
entity_id: ${zone_1_entity}
|
||
- button:
|
||
id: menu_back_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: -105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F004D"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Back"
|
||
on_press:
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: menu_power_button
|
||
state:
|
||
disabled: true
|
||
x: 210
|
||
y: 0
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F0425"
|
||
on_focus:
|
||
- if:
|
||
condition:
|
||
lambda: 'return strcmp(id(hvac_mode).state.c_str(), "off") == 0;'
|
||
then:
|
||
lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Turn On"
|
||
else:
|
||
lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Turn Off"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.toggle
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: menu_mode_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: 105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
id: menu_mode_button_label
|
||
styles: style_menu_button_label
|
||
text: "\U000F0238"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Mode"
|
||
on_press:
|
||
- script.execute: goto_mode_page
|
||
- button:
|
||
id: menu_preset_button
|
||
state:
|
||
disabled: true
|
||
x: 105
|
||
y: 182
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
id: menu_preset_button_label
|
||
styles: style_menu_button_label
|
||
text: "\U000F032A"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Presets"
|
||
on_press:
|
||
- script.execute: goto_preset_page
|
||
- button:
|
||
id: menu_fan_button
|
||
state:
|
||
disabled: true
|
||
styles: style_menu_button
|
||
x: 0
|
||
y: 210
|
||
widgets:
|
||
- label:
|
||
id: menu_fan_button_label
|
||
styles: style_menu_button_label
|
||
text: "\U000F0210"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_menu_label
|
||
text: "Fan\nSpeed"
|
||
on_press:
|
||
- script.execute: goto_fan_page
|
||
|
||
### GUI - MODE SELECT
|
||
- id: mode_page
|
||
on_load:
|
||
- globals.set:
|
||
id: active_lvgl_page
|
||
value: '"mode_page"'
|
||
- lvgl.widget.enable:
|
||
- mode_back_button
|
||
- mode_heat_cool_button
|
||
- mode_cool_button
|
||
- mode_heat_button
|
||
- mode_fan_button
|
||
- mode_dry_button
|
||
- lvgl.widget.focus: mode_cool_button
|
||
on_unload:
|
||
- lvgl.widget.disable:
|
||
- mode_back_button
|
||
- mode_heat_cool_button
|
||
- mode_cool_button
|
||
- mode_heat_button
|
||
- mode_fan_button
|
||
- mode_dry_button
|
||
widgets:
|
||
- label:
|
||
id: selected_mode_label
|
||
align: CENTER
|
||
x: 55
|
||
text_font: roboto_med
|
||
text_align: RIGHT
|
||
- button:
|
||
id: mode_back_button
|
||
state:
|
||
disabled: true
|
||
x: 105 # 210sin(30) clock coords
|
||
y: -182 # 210cos(30)
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F004D"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Back"
|
||
on_press:
|
||
- script.execute: goto_menu_page
|
||
- button:
|
||
id: mode_heat_cool_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: -105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F1A79"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Auto"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_hvac_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
hvac_mode: "heat_cool"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: mode_cool_button
|
||
state:
|
||
disabled: true
|
||
x: 210
|
||
y: 0
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F0717"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Cool"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_hvac_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
hvac_mode: "cool"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: mode_heat_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: 105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F0238"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Heat"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_hvac_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
hvac_mode: "heat"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: mode_fan_button
|
||
state:
|
||
disabled: true
|
||
x: 105
|
||
y: 182
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F0210"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Fan"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_hvac_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
hvac_mode: "fan_only"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: mode_dry_button
|
||
state:
|
||
disabled: true
|
||
x: 0
|
||
y: 210
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F058E"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_mode_label
|
||
text: "Dehumidify"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_hvac_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
hvac_mode: "dry"
|
||
- script.execute: goto_main_page
|
||
|
||
### GUI - PRESET SELECT
|
||
- id: preset_page
|
||
on_load:
|
||
- globals.set:
|
||
id: active_lvgl_page
|
||
value: '"preset_page"'
|
||
- lvgl.widget.enable:
|
||
- preset_back_button
|
||
- preset_eco_button
|
||
- preset_comfort_button
|
||
- preset_boost_button
|
||
- lvgl.widget.focus: preset_eco_button
|
||
on_unload:
|
||
- lvgl.widget.disable:
|
||
- preset_back_button
|
||
- preset_eco_button
|
||
- preset_comfort_button
|
||
- preset_boost_button
|
||
widgets:
|
||
- label:
|
||
id: selected_preset_label
|
||
align: CENTER
|
||
x: 55
|
||
text_font: roboto_med
|
||
text_align: RIGHT
|
||
- button:
|
||
id: preset_back_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: -105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F004D"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_preset_label
|
||
text: "Back"
|
||
on_press:
|
||
- script.execute: goto_menu_page
|
||
- button:
|
||
id: preset_eco_button
|
||
state:
|
||
disabled: true
|
||
x: 210
|
||
y: 0
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F032A"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_preset_label
|
||
text: "Eco"
|
||
on_press:
|
||
- if:
|
||
condition:
|
||
lambda: 'return strcmp(id(preset_mode).state.c_str(), "eco") == 0;'
|
||
then:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "none"
|
||
else:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "eco"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: preset_comfort_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: 105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F04B9"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_preset_label
|
||
text: "Comfort"
|
||
on_press:
|
||
- if:
|
||
condition:
|
||
lambda: 'return strcmp(id(preset_mode).state.c_str(), "comfort") == 0;'
|
||
then:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "none"
|
||
else:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "comfort"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: preset_boost_button
|
||
state:
|
||
disabled: true
|
||
x: 105
|
||
y: 182
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F14DE"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_preset_label
|
||
text: "Boost"
|
||
on_press:
|
||
- if:
|
||
condition:
|
||
lambda: 'return strcmp(id(preset_mode).state.c_str(), "boost") == 0;'
|
||
then:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "none"
|
||
else:
|
||
- homeassistant.action:
|
||
action: climate.set_preset_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
preset_mode: "boost"
|
||
- script.execute: goto_main_page
|
||
|
||
### GUI - FAN SPEED SELECT
|
||
- id: fan_page
|
||
on_load:
|
||
- globals.set:
|
||
id: active_lvgl_page
|
||
value: '"fan_page"'
|
||
- lvgl.widget.enable:
|
||
- fan_back_button
|
||
- fan_auto_button
|
||
- fan_high_button
|
||
- fan_medium_button
|
||
- fan_low_button
|
||
- lvgl.widget.focus: fan_auto_button
|
||
on_unload:
|
||
- lvgl.widget.disable:
|
||
- fan_back_button
|
||
- fan_auto_button
|
||
- fan_high_button
|
||
- fan_medium_button
|
||
- fan_low_button
|
||
widgets:
|
||
- label:
|
||
id: selected_fan_label
|
||
align: CENTER
|
||
x: 55
|
||
text_font: roboto_med
|
||
text_align: RIGHT
|
||
- button:
|
||
id: fan_back_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: -105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F004D"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_fan_label
|
||
text: "Back"
|
||
on_press:
|
||
- script.execute: goto_menu_page
|
||
- button:
|
||
id: fan_auto_button
|
||
state:
|
||
disabled: true
|
||
x: 210
|
||
y: 0
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F171D"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_fan_label
|
||
text: "Auto"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_fan_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
fan_mode: "auto"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: fan_high_button
|
||
state:
|
||
disabled: true
|
||
x: 182
|
||
y: 105
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F1474"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_fan_label
|
||
text: "High"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_fan_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
fan_mode: "high"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: fan_medium_button
|
||
state:
|
||
disabled: true
|
||
x: 105
|
||
y: 182
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F1473"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_fan_label
|
||
text: "Medium"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_fan_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
fan_mode: "medium"
|
||
- script.execute: goto_main_page
|
||
- button:
|
||
id: fan_low_button
|
||
state:
|
||
disabled: true
|
||
x: 0
|
||
y: 210
|
||
styles: style_menu_button
|
||
widgets:
|
||
- label:
|
||
styles: style_menu_button_label
|
||
text: "\U000F1472"
|
||
on_focus:
|
||
- lvgl.label.update:
|
||
id: selected_fan_label
|
||
text: "Low"
|
||
on_press:
|
||
- homeassistant.action:
|
||
action: climate.set_fan_mode
|
||
data:
|
||
entity_id: ${climate_entity}
|
||
fan_mode: "low"
|
||
- script.execute: goto_main_page
|
||
|
||
script:
|
||
- id: vibrate
|
||
parameters:
|
||
length_ms: int
|
||
then:
|
||
# XXX doesn't delay properly for short lengths (10-100ms)
|
||
- switch.turn_on: vibration
|
||
- delay: !lambda return length_ms;
|
||
- switch.turn_off: vibration
|
||
|
||
# navigate to pages with animation
|
||
- id: goto_main_page
|
||
then:
|
||
- lvgl.page.show:
|
||
id: main_page
|
||
animation: FADE_OUT
|
||
time: 500ms
|
||
- id: goto_menu_page
|
||
then:
|
||
- lvgl.page.show:
|
||
id: menu_page
|
||
animation: FADE_IN
|
||
time: 500ms
|
||
- id: goto_mode_page
|
||
then:
|
||
- lvgl.page.show:
|
||
id: mode_page
|
||
animation: FADE_IN
|
||
time: 500ms
|
||
- id: goto_preset_page
|
||
then:
|
||
- lvgl.page.show:
|
||
id: preset_page
|
||
animation: FADE_IN
|
||
time: 500ms
|
||
- id: goto_fan_page
|
||
then:
|
||
- lvgl.page.show:
|
||
id: fan_page
|
||
animation: FADE_IN
|
||
time: 500ms
|
||
|
||
# hvac mode UI scripts
|
||
- id: update_menu_date_label
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_date_label
|
||
text: !lambda |-
|
||
auto now = id(hass_time).now();
|
||
static const char * const day_names[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
|
||
static char buf[10];
|
||
snprintf(buf, sizeof(buf), "%s %02d:%02d", day_names[now.day_of_week-1], now.hour, now.minute);
|
||
return buf;
|
||
- id: update_menu_zone_temp_label
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_zone_temp_label
|
||
text:
|
||
format: "%.0f°C \U000F058E %.0f%%\n%.0f°C \U000F058E %.0f%%"
|
||
args: [ 'round(id(zone_2_temp).state)', 'round(id(zone_2_humidity).state)', 'round(id(zone_1_temp).state)', 'round(id(zone_1_humidity).state)' ]
|
||
|
||
- id: set_mode_off
|
||
then:
|
||
- script.execute: hide_widgets
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "OFF"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: black
|
||
- light.turn_off: rgb_ring
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: white
|
||
text: "\U000F0717"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: graydark
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: white
|
||
- id: set_mode_heat
|
||
then:
|
||
- script.execute: show_widgets
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "HEAT TO"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: mode_heat
|
||
- light.turn_on:
|
||
id: rgb_ring
|
||
brightness: 100%
|
||
red: 1.000
|
||
green: 0.533
|
||
blue: 0.118
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: mode_heat
|
||
text: "\U000F0238"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: mode_heat
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: white
|
||
- id: set_mode_cool
|
||
then:
|
||
- script.execute: show_widgets
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "COOL TO"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: mode_cool
|
||
- light.turn_on:
|
||
id: rgb_ring
|
||
brightness: 100%
|
||
red: 0.498
|
||
green: 0.675
|
||
blue: 1.000
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: mode_cool
|
||
text: "\U000F0717"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: mode_cool
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: white
|
||
- id: set_mode_fan
|
||
then:
|
||
- script.execute: show_widgets
|
||
- lvgl.widget.hide:
|
||
- current_temp_arc
|
||
- set_temp_roller
|
||
- celsius_label
|
||
- current_temp_label
|
||
- fan_icon_label
|
||
- lvgl.indicator.update:
|
||
id: set_temp_needle
|
||
opa: TRANSP
|
||
- lvgl.indicator.update:
|
||
id: diff_temp_arc
|
||
opa: TRANSP
|
||
- lvgl.widget.show:
|
||
- big_fan_icon_label
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "FAN ONLY"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: mode_fan
|
||
- light.turn_on:
|
||
id: rgb_ring
|
||
brightness: 100%
|
||
red: 0.749
|
||
green: 0.980
|
||
blue: 1.000
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: mode_fan
|
||
text: "\U000F0210"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: mode_fan
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: white
|
||
- id: set_mode_dry
|
||
then:
|
||
- script.execute: show_widgets
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "DEHUMIDIFY"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: mode_dry
|
||
- light.turn_on:
|
||
id: rgb_ring
|
||
brightness: 100%
|
||
red: 1.000
|
||
green: 0.753
|
||
blue: 0.549
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: mode_dry
|
||
text: "\U000F058E"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: mode_dry
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: white
|
||
- id: set_mode_heat_cool
|
||
then:
|
||
- script.execute: show_widgets
|
||
- lvgl.label.update:
|
||
id: mode_label
|
||
text: "AUTO TO"
|
||
- lvgl.widget.update:
|
||
id: mode_bg
|
||
bg_color: graylight
|
||
- light.turn_on:
|
||
id: rgb_ring
|
||
brightness: 100%
|
||
red: 1.000
|
||
green: 0.894
|
||
blue: 0.804
|
||
- lvgl.label.update:
|
||
id: menu_mode_button_label
|
||
text_color: mode_heat_cool
|
||
text: "\U000F1A79"
|
||
- lvgl.widget.update:
|
||
id: menu_power_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_cool_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_fan_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_dry_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: mode_heat_cool_button
|
||
text_color: mode_heat_cool
|
||
|
||
# preset mode UI scripts
|
||
- id: set_preset_none
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_preset_button_label
|
||
text_color: white
|
||
text: "\U000F032A"
|
||
- lvgl.widget.update:
|
||
id: preset_eco_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_comfort_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_boost_button
|
||
text_color: white
|
||
- id: set_preset_eco
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_preset_button_label
|
||
text_color: green
|
||
text: "\U000F032A"
|
||
- lvgl.widget.update:
|
||
id: preset_eco_button
|
||
text_color: green
|
||
- lvgl.widget.update:
|
||
id: preset_comfort_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_boost_button
|
||
text_color: white
|
||
- id: set_preset_comfort
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_preset_button_label
|
||
text_color: amber
|
||
text: "\U000F04B9"
|
||
- lvgl.widget.update:
|
||
id: preset_eco_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_comfort_button
|
||
text_color: amber
|
||
- lvgl.widget.update:
|
||
id: preset_boost_button
|
||
text_color: white
|
||
- id: set_preset_boost
|
||
then:
|
||
- lvgl.label.update:
|
||
id: menu_preset_button_label
|
||
text_color: red
|
||
text: "\U000F14DE"
|
||
- lvgl.widget.update:
|
||
id: preset_eco_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_comfort_button
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: preset_boost_button
|
||
text_color: red
|
||
|
||
# fan UI scripts
|
||
- id: set_fan_auto
|
||
then:
|
||
- lvgl.label.update:
|
||
id: big_fan_icon_label
|
||
text: "\U000F171D"
|
||
- lvgl.label.update:
|
||
id: fan_icon_label
|
||
text: "\U000F171D"
|
||
- lvgl.label.update:
|
||
id: menu_fan_button_label
|
||
text: "\U000F171D"
|
||
- id: set_fan_low
|
||
then:
|
||
- lvgl.label.update:
|
||
id: big_fan_icon_label
|
||
text: "\U000F1472"
|
||
- lvgl.label.update:
|
||
id: fan_icon_label
|
||
text: "\U000F1472"
|
||
- lvgl.label.update:
|
||
id: menu_fan_button_label
|
||
text: "\U000F1472"
|
||
- id: set_fan_medium
|
||
then:
|
||
- lvgl.label.update:
|
||
id: big_fan_icon_label
|
||
text: "\U000F1473"
|
||
- lvgl.label.update:
|
||
id: fan_icon_label
|
||
text: "\U000F1473"
|
||
- lvgl.label.update:
|
||
id: menu_fan_button_label
|
||
text: "\U000F1473"
|
||
- id: set_fan_high
|
||
then:
|
||
- lvgl.label.update:
|
||
id: big_fan_icon_label
|
||
text: "\U000F1474"
|
||
- lvgl.label.update:
|
||
id: fan_icon_label
|
||
text: "\U000F1474"
|
||
- lvgl.label.update:
|
||
id: menu_fan_button_label
|
||
text: "\U000F1474"
|
||
|
||
# zone UI scripts
|
||
- id: set_zone_1
|
||
then:
|
||
- lvgl.label.update:
|
||
id: zone_1_label
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: menu_zone_1_button
|
||
text_color: white
|
||
- id: unset_zone_1
|
||
then:
|
||
- lvgl.label.update:
|
||
id: zone_1_label
|
||
text_color: graydark
|
||
- lvgl.widget.update:
|
||
id: menu_zone_1_button
|
||
text_color: graydark
|
||
- id: set_zone_2
|
||
then:
|
||
- lvgl.label.update:
|
||
id: zone_2_label
|
||
text_color: white
|
||
- lvgl.widget.update:
|
||
id: menu_zone_2_button
|
||
text_color: white
|
||
- id: unset_zone_2
|
||
then:
|
||
- lvgl.label.update:
|
||
id: zone_2_label
|
||
text_color: graydark
|
||
- lvgl.widget.update:
|
||
id: menu_zone_2_button
|
||
text_color: graydark
|
||
|
||
# OFF mode weather UI scripts
|
||
- id: update_weather_forecast_label
|
||
then:
|
||
lvgl.label.update:
|
||
id: weather_forecast_label
|
||
text: !lambda |-
|
||
auto low = round(id(bom_low_temp).state);
|
||
auto high = round(id(bom_high_temp).state);
|
||
auto rain = round(id(bom_rain_chance).state);
|
||
static char buf[32];
|
||
if (!isnan(low)) {
|
||
snprintf(buf, sizeof(buf), "\U000F0E03 %.0f–%.0f°C \U000F0597 %.0f%%", low, high, rain);
|
||
} else {
|
||
snprintf(buf, sizeof(buf), "\U000F0E03 %.0f°C \U000F0597 %.0f%%", high, rain);
|
||
}
|
||
return buf;
|
||
|
||
- id: show_widgets
|
||
then:
|
||
- lvgl.widget.show:
|
||
- current_temp_arc
|
||
- set_temp_roller
|
||
- celsius_label
|
||
- fan_icon_label
|
||
- current_temp_label
|
||
- zone_1_label
|
||
- zone_2_label
|
||
- meter_ticks
|
||
- mode_label
|
||
- lvgl.widget.hide:
|
||
- big_fan_icon_label
|
||
- weather_icon_label
|
||
- weather_temp_label
|
||
- weather_forecast_label
|
||
- weather_feels_like_label
|
||
- lvgl.indicator.update:
|
||
id: set_temp_needle
|
||
opa: COVER
|
||
- lvgl.indicator.update:
|
||
id: diff_temp_arc
|
||
opa: COVER
|
||
- id: hide_widgets
|
||
then:
|
||
- lvgl.widget.hide:
|
||
- big_fan_icon_label
|
||
- current_temp_arc
|
||
- set_temp_roller
|
||
- celsius_label
|
||
- fan_icon_label
|
||
- current_temp_label
|
||
- zone_1_label
|
||
- zone_2_label
|
||
- meter_ticks
|
||
- mode_label
|
||
- lvgl.widget.show:
|
||
- weather_icon_label
|
||
- weather_temp_label
|
||
- weather_forecast_label
|
||
- weather_feels_like_label
|
||
- lvgl.indicator.update:
|
||
id: set_temp_needle
|
||
opa: TRANSP
|
||
- lvgl.indicator.update:
|
||
id: diff_temp_arc
|
||
opa: TRANSP
|