From 0ca6fefd088ba9896e65d97b91aabf1ce31341e5 Mon Sep 17 00:00:00 2001 From: ESPHome Device Builder Date: Wed, 15 Jul 2026 20:28:10 +1200 Subject: [PATCH] Edit esp-bedside-panel.yaml --- esphome/esp-bedside-panel.yaml | 652 +++++++++++++-------------------- 1 file changed, 258 insertions(+), 394 deletions(-) diff --git a/esphome/esp-bedside-panel.yaml b/esphome/esp-bedside-panel.yaml index 3866655..45311f9 100644 --- a/esphome/esp-bedside-panel.yaml +++ b/esphome/esp-bedside-panel.yaml @@ -6,9 +6,9 @@ # https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-bedside-panel.yaml #:########################################################################################:# # VERSIONS: -# V0.9a 2026-07-15 Reduced clock font to 190px and delayed LVGL sensor updates until startup -# V0.9 2026-07-15 Added four status readings and enlarged 24-hour clock +# V0.8b 2026-07-15 Changed proven V0.8a clock to 24-hour format and removed AM/PM # V0.8a 2026-07-14 Reduced LVGL memory load after V0.8 OTA rollback +# Added lean large-clock idle page and Bedroom controls # V0.8 2026-07-14 Added large bedside clock, idle dimming and first bedroom control page # V0.7 2026-07-14 Added first landscape LVGL page and Home Assistant test button # V0.6 2026-07-14 Added GT911 touchscreen and touch-coordinate logging @@ -41,17 +41,23 @@ # - Touch I2C address: 0x5D #:########################################################################################:# # OPERATION NOTES: -# - Native 1024x600 landscape orientation. -# - Bedroom page contains nine nearby controls. -# - Bedroom and Clock pages show Moon, Outdoor, Indoor and Humidity readings. -# - Clock uses a 24-hour HH:MM format. -# - Clock font reduced to 190px after V0.9 startup rollback. -# - Imported Home Assistant readings are refreshed only after LVGL startup is complete. -# - After the idle timeout, the Clock page is shown and the backlight is dimmed. -# - Touching the Clock page returns to Bedroom controls and restores normal brightness. +# - This build returns to the proven V0.8a structure. +# - The only functional clock changes are: +# - 24-hour HH:MM display +# - AM/PM label and update removed +# - The clock font remains at the proven 170px size. +# - The display remains in its native 1024x600 landscape orientation. +# - The default page contains nine Bedroom / nearby controls. +# - After the configured idle period: +# - The large clock page is displayed. +# - Backlight brightness is reduced. +# - Touching the clock: +# - Returns to the Bedroom controls. +# - Restores normal brightness. +# - Climate and Downstairs pages remain intentionally omitted. #:########################################################################################:# # OFFLINE NOTES: -# - LVGL, clock, touch and backlight operate locally. +# - LVGL, the clock, touch and backlight operate locally. # - Home Assistant control buttons require an API connection. # - The clock continues using the most recently synchronised time. #:########################################################################################:# @@ -65,12 +71,12 @@ substitutions: # Device Naming device_name: "esp-bedside-panel" friendly_name: "ESP Bedside Panel" - description_comment: "Guition JC1060P470C_I_W_Y ESP32-P4 bedside clock and Home Assistant control panel. Delayed LVGL sensor updates. (Layout V1.1)" + description_comment: "Guition JC1060P470C_I_W_Y ESP32-P4 bedside clock and Home Assistant control panel. Proven V0.8a layout with 24-hour clock. (Layout V1.1)" device_area: "Bedroom" # Project Naming project_name: "Guition.JC1060P470C_I_W_Y" - project_version: "v0.9a" + project_version: "v0.8b" # Passwords & Secrets api_key: !secret esp-api_key @@ -95,11 +101,9 @@ substitutions: control_brightness: "80%" clock_brightness: "4%" - # Home Assistant Entities - Status / Environment - moon_phase_entity: "sensor.astroweather_moon_phase" - outdoor_temperature_entity: "sensor.lounge_outside_temperature" - indoor_temperature_entity: "sensor.master_bedroom_master_bedroom_environment_z01th_temperature" - indoor_humidity_entity: "sensor.master_bedroom_master_bedroom_environment_z01th_humidity" + # Home Assistant Entities - Environment + bedroom_temperature_entity: "sensor.master_bedroom_environment_zth01_temperature_2" + bedroom_humidity_entity: "sensor.master_bedroom_environment_zth01_humidity_2" # Home Assistant Entities - Bedroom / Nearby Controls north_lights_entity: "light.tasmo_ifan02_3793_bedrm1_1" @@ -135,9 +139,28 @@ packages: #### HOME ASSISTANT API #### common_api: !include file: common/api_common.yaml + #file: common/api_common_noencryption.yaml vars: local_api_key: "${api_key}" + #### MQTT #### + #common_mqtt: !include + # file: common/mqtt_common.yaml + # vars: + # local_device_name: "${device_name}" + + #### WEB PORTAL #### + #common_webportal: !include common/webportal_common_nopass.yaml + + #### SNTP #### + #common_sntp: !include common/sntp_common.yaml + + #### DIAGNOSTICS Sensors #### + #diag_basic: !include common/include_basic_diag_sensors.yaml + #diag_more: !include common/include_more_diag_sensors.yaml + #diag_debug: !include common/include_debug_diag_sensors.yaml + #diag_resetcount: !include common/include_resetcount_diag_sensors.yaml + #:########################################################################################:# # ESPHOME: # https://esphome.io/components/esphome.html @@ -151,16 +174,6 @@ esphome: name: "${project_name}" version: "${project_version}" - on_boot: - priority: -100 - then: - - delay: 12s - - lambda: |- - id(lvgl_ready) = true; - - logger.log: - level: INFO - format: "LVGL startup delay complete; sensor label updates enabled" - #:########################################################################################:# # ESP PLATFORM AND FRAMEWORK: # https://esphome.io/components/esp32.html @@ -214,15 +227,6 @@ esp_ldo: voltage: 2.5V adjustable: true -#:########################################################################################:# -# GLOBALS: -#:########################################################################################:# -globals: - - id: lvgl_ready - type: bool - restore_value: false - initial_value: "false" - #:########################################################################################:# # LOGGER: # https://esphome.io/components/logger.html @@ -241,28 +245,22 @@ api: - logger.log: level: INFO format: "API connected: ESP Bedside Panel is online" - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.label.update: - id: bedroom_connection_label - text: "HA connected" - text_color: 0x65D483 + + - lvgl.label.update: + id: bedroom_connection_label + text: "HA connected" + text_color: 0x65D483 on_client_disconnected: then: - logger.log: level: WARN format: "API disconnected: ESP Bedside Panel is offline from Home Assistant" - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.label.update: - id: bedroom_connection_label - text: "HA offline" - text_color: 0xF06A6A + + - lvgl.label.update: + id: bedroom_connection_label + text: "HA offline" + text_color: 0xF06A6A #:########################################################################################:# # OTA: @@ -340,10 +338,12 @@ touchscreen: display: main_display i2c_id: touch_i2c address: 0x5D + interrupt_pin: number: "${touch_interrupt_pin}" mode: input: true + reset_pin: number: "${touch_reset_pin}" mode: @@ -357,7 +357,7 @@ touchscreen: font: - file: "gfonts://Roboto" id: font_clock - size: 190 + size: 170 glyphs: - "0123456789:" @@ -401,24 +401,40 @@ sensor: update_interval: "${update_interval}" - platform: homeassistant - id: moon_phase - entity_id: "${moon_phase_entity}" + id: bedroom_temperature + entity_id: "${bedroom_temperature_entity}" internal: true + on_value: + then: + - lvgl.label.update: + id: clock_temperature_label + text: + format: "%.1f°C" + args: [x] + + - lvgl.label.update: + id: bedroom_temperature_label + text: + format: "%.1f°C" + args: [x] - platform: homeassistant - id: outdoor_temperature - entity_id: "${outdoor_temperature_entity}" + id: bedroom_humidity + entity_id: "${bedroom_humidity_entity}" internal: true + on_value: + then: + - lvgl.label.update: + id: clock_humidity_label + text: + format: "%.0f%%" + args: [x] - - platform: homeassistant - id: indoor_temperature - entity_id: "${indoor_temperature_entity}" - internal: true - - - platform: homeassistant - id: indoor_humidity - entity_id: "${indoor_humidity_entity}" - internal: true + - lvgl.label.update: + id: bedroom_humidity_label + text: + format: "%.0f%%" + args: [x] #:########################################################################################:# # HOME ASSISTANT BINARY SENSORS: @@ -431,14 +447,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: north_lights_button - bg_color: !lambda |- - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: north_lights_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_south_lights @@ -446,14 +460,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: south_lights_button - bg_color: !lambda |- - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: south_lights_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_bedside_lamp @@ -461,14 +473,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: bedside_lamp_button - bg_color: !lambda |- - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: bedside_lamp_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_hall_floor @@ -476,14 +486,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: hall_floor_button - bg_color: !lambda |- - return x ? lv_color_hex(0x92702D) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: hall_floor_button + bg_color: !lambda |- + return x + ? lv_color_hex(0x92702D) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_hall_lights @@ -491,14 +499,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: hall_lights_button - bg_color: !lambda |- - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: hall_lights_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_bathroom_lights @@ -506,14 +512,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: bathroom_lights_button - bg_color: !lambda |- - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: bathroom_lights_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_patio_lights @@ -521,14 +525,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: patio_lights_button - bg_color: !lambda |- - return x ? lv_color_hex(0xA87500) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: patio_lights_button + bg_color: !lambda |- + return x + ? lv_color_hex(0xA87500) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_garage_lights @@ -536,17 +538,16 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: garage_lights_button - bg_color: !lambda |- - if (id(ha_garage_door).state) { - return lv_color_hex(0xC25B13); - } - return x ? lv_color_hex(0xB88918) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: garage_lights_button + bg_color: !lambda |- + if (id(ha_garage_door).state) { + return lv_color_hex(0xC25B13); + } + + return x + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_garage_door @@ -554,19 +555,16 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: garage_lights_button - bg_color: !lambda |- - if (x) { - return lv_color_hex(0xC25B13); - } - return id(ha_garage_lights).state - ? lv_color_hex(0xB88918) - : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: garage_lights_button + bg_color: !lambda |- + if (x) { + return lv_color_hex(0xC25B13); + } + + return id(ha_garage_lights).state + ? lv_color_hex(0xB88918) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_bathroom_fan @@ -574,14 +572,12 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: bathroom_fan_button - bg_color: !lambda |- - return x ? lv_color_hex(0x1668A8) : lv_color_hex(0x28313D); + - lvgl.widget.update: + id: bathroom_fan_button + bg_color: !lambda |- + return x + ? lv_color_hex(0x1668A8) + : lv_color_hex(0x28313D); - platform: homeassistant id: ha_quiet_time @@ -589,101 +585,65 @@ binary_sensor: internal: true on_state: then: - - if: - condition: - lambda: return id(lvgl_ready); - then: - - lvgl.widget.update: - id: bedtime_button - bg_color: !lambda |- - return x ? lv_color_hex(0x705295) : lv_color_hex(0x3B3048); - - lvgl.label.update: - id: clock_status_label - text: !lambda |- - return x ? std::string("Quiet Time active") : std::string(""); + - lvgl.widget.update: + id: bedtime_button + bg_color: !lambda |- + return x + ? lv_color_hex(0x705295) + : lv_color_hex(0x3B3048); + + - lvgl.label.update: + id: clock_status_label + text: !lambda |- + return x + ? std::string("Quiet Time active") + : std::string(""); #:########################################################################################:# # INTERVAL: -# Update clock and imported sensor labels only after LVGL startup is complete +# Update minute-resolution clock values locally #:########################################################################################:# interval: - interval: 10s then: - if: condition: - lambda: return id(lvgl_ready); + lambda: |- + return id(ha_time).now().is_valid(); + then: - - if: - condition: - lambda: return id(ha_time).now().is_valid(); - then: - - lvgl.label.update: - id: clock_time_label - text: !lambda |- - auto now = id(ha_time).now(); - char buffer[8]; - now.strftime(buffer, sizeof(buffer), "%H:%M"); - return std::string(buffer); + - lvgl.label.update: + id: clock_time_label + text: !lambda |- + auto now = id(ha_time).now(); - - lvgl.label.update: - id: clock_date_label - text: !lambda |- - auto now = id(ha_time).now(); - char weekday[16]; - char month[16]; - now.strftime(weekday, sizeof(weekday), "%A"); - now.strftime(month, sizeof(month), "%B"); - char buffer[48]; - snprintf(buffer, sizeof(buffer), "%s, %d %s", weekday, now.day_of_month, month); - return std::string(buffer); + char buffer[8]; + now.strftime(buffer, sizeof(buffer), "%H:%M"); + + return std::string(buffer); - lvgl.label.update: - id: bedroom_moon_value_label - text: - format: "%.1f%%" - args: [id(moon_phase).state] + id: clock_date_label + text: !lambda |- + auto now = id(ha_time).now(); - - lvgl.label.update: - id: clock_moon_value_label - text: - format: "%.1f%%" - args: [id(moon_phase).state] + char weekday[16]; + char month[16]; - - lvgl.label.update: - id: bedroom_outdoor_value_label - text: - format: "%.1f°C" - args: [id(outdoor_temperature).state] + now.strftime(weekday, sizeof(weekday), "%A"); + now.strftime(month, sizeof(month), "%B"); - - lvgl.label.update: - id: clock_outdoor_value_label - text: - format: "%.1f°C" - args: [id(outdoor_temperature).state] + char buffer[48]; + snprintf( + buffer, + sizeof(buffer), + "%s, %d %s", + weekday, + now.day_of_month, + month + ); - - lvgl.label.update: - id: bedroom_indoor_value_label - text: - format: "%.1f°C" - args: [id(indoor_temperature).state] - - - lvgl.label.update: - id: clock_indoor_value_label - text: - format: "%.1f°C" - args: [id(indoor_temperature).state] - - - lvgl.label.update: - id: bedroom_humidity_value_label - text: - format: "%.0f%%" - args: [id(indoor_humidity).state] - - - lvgl.label.update: - id: clock_humidity_value_label - text: - format: "%.0f%%" - args: [id(indoor_humidity).state] + return std::string(buffer); #:########################################################################################:# # TEXT SENSOR COMPONENT: @@ -697,10 +657,13 @@ text_sensor: - platform: wifi_info ip_address: name: "${friendly_name} IP Address" + ssid: name: "${friendly_name} Connected SSID" + bssid: name: "${friendly_name} Connected BSSID" + mac_address: name: "${friendly_name} MAC Address" @@ -710,8 +673,10 @@ text_sensor: #:########################################################################################:# lvgl: id: panel_lvgl + displays: - main_display + touchscreens: - touchscreen_id: main_touchscreen long_press_time: 1200ms @@ -733,107 +698,57 @@ lvgl: id: clock_page animation: FADE_IN time: 250ms + - light.turn_on: id: display_backlight brightness: "${clock_brightness}" transition_length: 1500ms pages: + + #:####################################################################################:# + # BEDROOM PAGE + #:####################################################################################:# - id: bedroom_page bg_color: 0x10151D bg_opa: COVER + widgets: - label: x: 35 - y: 14 + y: 18 text: "Bedroom" text_font: font_title text_color: 0xFFFFFF + - label: + id: bedroom_temperature_label + x: 700 + y: 25 + text: "--.-°C" + text_font: font_title + text_color: 0x8FC6EE + + - label: + id: bedroom_humidity_label + x: 865 + y: 25 + text: "--%" + text_font: font_title + text_color: 0x83C7AA + - label: id: bedroom_connection_label x: 38 - y: 57 + y: 67 text: "Waiting for HA" text_font: font_small text_color: 0xF0A45D - - label: - x: 355 - y: 12 - width: 150 - text: "Moon" - text_font: font_small - text_align: CENTER - text_color: 0xA9A0D4 - - label: - id: bedroom_moon_value_label - x: 355 - y: 39 - width: 150 - text: "--.-%" - text_font: font_button - text_align: CENTER - text_color: 0xC6BDEC - - - label: - x: 510 - y: 12 - width: 150 - text: "Outdoor" - text_font: font_small - text_align: CENTER - text_color: 0x84B5D8 - - label: - id: bedroom_outdoor_value_label - x: 510 - y: 39 - width: 150 - text: "--.-°C" - text_font: font_button - text_align: CENTER - text_color: 0x9CCBEA - - - label: - x: 665 - y: 12 - width: 150 - text: "Indoor" - text_font: font_small - text_align: CENTER - text_color: 0xD6B78F - - label: - id: bedroom_indoor_value_label - x: 665 - y: 39 - width: 150 - text: "--.-°C" - text_font: font_button - text_align: CENTER - text_color: 0xE8C79D - - - label: - x: 820 - y: 12 - width: 165 - text: "Humidity" - text_font: font_small - text_align: CENTER - text_color: 0x80BDA4 - - label: - id: bedroom_humidity_value_label - x: 820 - y: 39 - width: 165 - text: "--%" - text_font: font_button - text_align: CENTER - text_color: 0x97D2B7 - - button: id: north_lights_button x: 35 - y: 95 + y: 105 width: 300 height: 105 text: "North Lights" @@ -854,7 +769,7 @@ lvgl: - button: id: south_lights_button x: 362 - y: 95 + y: 105 width: 300 height: 105 text: "South Lights" @@ -875,7 +790,7 @@ lvgl: - button: id: bedside_lamp_button x: 689 - y: 95 + y: 105 width: 300 height: 105 text: "Bedside Lamp" @@ -896,7 +811,7 @@ lvgl: - button: id: hall_floor_button x: 35 - y: 218 + y: 228 width: 300 height: 105 text: "Hall Floor" @@ -917,7 +832,7 @@ lvgl: - button: id: hall_lights_button x: 362 - y: 218 + y: 228 width: 300 height: 105 text: "Hall Lights" @@ -938,7 +853,7 @@ lvgl: - button: id: bathroom_lights_button x: 689 - y: 218 + y: 228 width: 300 height: 105 text: "Bathroom Lights" @@ -959,7 +874,7 @@ lvgl: - button: id: patio_lights_button x: 35 - y: 341 + y: 351 width: 300 height: 105 text: "Patio Lights" @@ -980,7 +895,7 @@ lvgl: - button: id: garage_lights_button x: 362 - y: 341 + y: 351 width: 300 height: 105 text: "Garage Lights" @@ -1001,7 +916,7 @@ lvgl: - button: id: bathroom_fan_button x: 689 - y: 341 + y: 351 width: 300 height: 105 text: "Bathroom Fan" @@ -1022,9 +937,9 @@ lvgl: - button: id: clock_now_button x: 35 - y: 475 + y: 485 width: 280 - height: 92 + height: 82 text: "Show Clock" text_font: font_button bg_color: 0x214F72 @@ -1037,6 +952,7 @@ lvgl: id: clock_page animation: FADE_IN time: 250ms + - light.turn_on: id: display_backlight brightness: "${clock_brightness}" @@ -1045,9 +961,9 @@ lvgl: - button: id: spare_navigation_button x: 340 - y: 475 + y: 485 width: 280 - height: 92 + height: 82 text: "More Soon" text_font: font_button bg_color: 0x315843 @@ -1059,9 +975,9 @@ lvgl: - button: id: bedtime_button x: 645 - y: 475 + y: 485 width: 344 - height: 92 + height: 82 text: "Hold for Bedtime" text_font: font_button bg_color: 0x3B3048 @@ -1069,24 +985,32 @@ lvgl: border_width: 2 border_color: 0x735E88 radius: 16 + on_long_press: then: - homeassistant.action: action: input_button.press data: entity_id: "${bedtime_button_entity}" + - lvgl.button.update: id: bedtime_button text: "Bedtime Activated" + - delay: 2s + - lvgl.button.update: id: bedtime_button text: "Hold for Bedtime" + #:####################################################################################:# + # CLOCK PAGE + #:####################################################################################:# - id: clock_page skip: true bg_color: 0x020304 bg_opa: COVER + widgets: - button: id: clock_wake_button @@ -1099,12 +1023,14 @@ lvgl: shadow_width: 0 radius: 0 text: "" + on_click: then: - lvgl.page.show: id: bedroom_page animation: FADE_OUT time: 250ms + - light.turn_on: id: display_backlight brightness: "${control_brightness}" @@ -1113,7 +1039,7 @@ lvgl: - label: id: clock_time_label align: TOP_MID - y: 40 + y: 70 text: "--:--" text_font: font_clock text_color: 0xE4DDD2 @@ -1122,90 +1048,28 @@ lvgl: - label: id: clock_date_label align: TOP_MID - y: 250 + y: 325 text: "Waiting for time" text_font: font_title text_color: 0xA8A198 clickable: false - label: - x: 80 - y: 350 - width: 205 - text: "Moon" - text_font: font_small - text_align: CENTER - text_color: 0xA9A0D4 - clickable: false - - label: - id: clock_moon_value_label - x: 80 - y: 382 - width: 205 - text: "--.-%" - text_font: font_title - text_align: CENTER - text_color: 0xC6BDEC - clickable: false - - - label: - x: 285 - y: 350 - width: 205 - text: "Outdoor" - text_font: font_small - text_align: CENTER - text_color: 0x84B5D8 - clickable: false - - label: - id: clock_outdoor_value_label - x: 285 - y: 382 - width: 205 + id: clock_temperature_label + x: 335 + y: 420 text: "--.-°C" text_font: font_title - text_align: CENTER - text_color: 0x9CCBEA + text_color: 0x8FAFC8 clickable: false - label: - x: 490 - y: 350 - width: 205 - text: "Indoor" - text_font: font_small - text_align: CENTER - text_color: 0xD6B78F - clickable: false - - label: - id: clock_indoor_value_label - x: 490 - y: 382 - width: 205 - text: "--.-°C" - text_font: font_title - text_align: CENTER - text_color: 0xE8C79D - clickable: false - - - label: - x: 695 - y: 350 - width: 245 - text: "Humidity" - text_font: font_small - text_align: CENTER - text_color: 0x80BDA4 - clickable: false - - label: - id: clock_humidity_value_label - x: 695 - y: 382 - width: 245 + id: clock_humidity_label + x: 600 + y: 420 text: "--%" text_font: font_title - text_align: CENTER - text_color: 0x97D2B7 + text_color: 0x7FAE9B clickable: false - label: