From cafc856a3c4a6844c93f1498287cad770b7ef5cc Mon Sep 17 00:00:00 2001 From: ESPHome Device Builder Date: Fri, 17 Jul 2026 23:03:40 +1200 Subject: [PATCH] Edit esp-bedside-panel.yaml --- esphome/esp-bedside-panel.yaml | 462 +++++++++++++++++---------------- 1 file changed, 232 insertions(+), 230 deletions(-) diff --git a/esphome/esp-bedside-panel.yaml b/esphome/esp-bedside-panel.yaml index 60b938d..cbf5a9b 100644 --- a/esphome/esp-bedside-panel.yaml +++ b/esphome/esp-bedside-panel.yaml @@ -6,6 +6,7 @@ # https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-bedside-panel.yaml #:########################################################################################:# # VERSIONS: +# V1.11 2026-07-17 Refined Atto button centring and rearranged vehicle status tiles # V1.10a 2026-07-17 Compile fix: use C++ comments inside lambda blocks # V1.10 2026-07-17 Refined Atto status layout and updated Garage Lights entity # V1.9 2026-07-17 Corrected Atto lock/climate/setpoint controls and added vehicle icons @@ -109,12 +110,12 @@ substitutions: # Device Naming device_name: "esp-bedside-panel" friendly_name: "ESP Bedside Panel" - description_comment: "Guition JC1060P470C_I_W_Y ESP32-P4 bedside control panel. Refined Atto status layout, optimistic controls and corrected Garage Lights entity. (Layout V1.1)" + description_comment: "Guition JC1060P470C_I_W_Y ESP32-P4 bedside control panel. Refined Atto centring and rearranged vehicle controls. (Layout V1.1)" device_area: "Bedroom" # Project Naming project_name: "Guition.JC1060P470C_I_W_Y" - project_version: "v1.10a" + project_version: "v1.11" # Passwords & Secrets api_key: !secret esp-api_key @@ -1148,17 +1149,17 @@ script: id: atto_lock_button_label text: !lambda |- if (id(atto_lock_optimistic) == 1) { - return std::string("Locked (Hold)"); + return std::string("Locked\n(Hold)"); } if (id(atto_lock_optimistic) == 0) { - return std::string("Unlocked (Hold)"); + return std::string("Unlocked\n(Hold)"); } const auto state = id(ha_atto_lock_state).state; if (state == "locked") { - return std::string("Locked (Hold)"); + return std::string("Locked\n(Hold)"); } if (state == "locking") { @@ -1169,7 +1170,7 @@ script: return std::string("Unlocking..."); } - return std::string("Unlocked (Hold)"); + return std::string("Unlocked\n(Hold)"); - lvgl.label.update: id: atto_lock_icon_label @@ -2791,17 +2792,18 @@ lvgl: - label: id: atto_lock_icon_label align: LEFT_MID - x: 14 - y: 5 + x: 18 + y: 0 text: "\U000F033E" text_font: font_mdi_vehicle text_color: 0xFFFFFF - label: id: atto_lock_button_label - align: CENTER - x: 14 - text: "Locked (Hold)" + x: 60 + y: 19 + width: 142 + text: "Locked\n(Hold)" text_font: font_small text_align: CENTER text_color: 0xFFFFFF @@ -2854,16 +2856,16 @@ lvgl: widgets: - label: align: LEFT_MID - x: 13 - y: 5 + x: 18 + y: 0 text: "\U000F0084" text_font: font_mdi_vehicle text_color: 0xFFFFFF - label: - x: 48 - y: 10 - width: 162 + x: 60 + y: 11 + width: 142 text: "Atto Charging" text_font: font_small text_align: CENTER @@ -2871,9 +2873,9 @@ lvgl: - label: id: atto_charging_state_label - x: 48 - y: 42 - width: 162 + x: 60 + y: 43 + width: 142 text: "NOT CHARGING" text_font: font_vehicle_bold text_align: CENTER @@ -2895,16 +2897,16 @@ lvgl: widgets: - label: align: LEFT_MID - x: 13 - y: 5 + x: 18 + y: 0 text: "\U000F00F0" text_font: font_mdi_vehicle text_color: 0xFFFFFF - label: - x: 48 - y: 10 - width: 162 + x: 60 + y: 11 + width: 142 text: "Schedule" text_font: font_small text_align: CENTER @@ -2912,9 +2914,9 @@ lvgl: - label: id: atto_schedule_state_label - x: 48 - y: 42 - width: 162 + x: 60 + y: 43 + width: 142 text: "NOT ENABLED" text_font: font_vehicle_bold text_align: CENTER @@ -2926,131 +2928,11 @@ lvgl: entity_id: "${atto_schedule_enabled_entity}" - button: - id: atto_range_status + id: atto_driver_seat_button x: 766 y: 22 width: 220 height: 92 - bg_color: 0x1C2632 - bg_opa: COVER - border_width: 2 - border_color: 0x526276 - radius: 17 - widgets: - - label: - align: LEFT_MID - x: 13 - y: 5 - text: "\U000F08F0" - text_font: font_mdi_vehicle - text_color: 0xFFFFFF - - - label: - x: 48 - y: 10 - width: 162 - text: "Range" - text_font: font_small - text_align: CENTER - text_color: 0xAEB8C4 - - - label: - id: atto_range_value_label - x: 48 - y: 41 - width: 162 - text: "-- km" - text_font: font_vehicle_bold - text_align: CENTER - text_color: 0xFFFFFF - - #:################################################################################:# - # VEHICLE VALUES / SEAT HEATING - #:################################################################################:# - - button: - id: atto_battery_status - x: 25 - y: 130 - width: 220 - height: 92 - bg_color: 0x1C2632 - bg_opa: COVER - border_width: 2 - border_color: 0x526276 - radius: 17 - widgets: - - label: - align: LEFT_MID - x: 13 - y: 5 - text: "\U000F0079" - text_font: font_mdi_vehicle - text_color: 0xFFFFFF - - - label: - x: 48 - y: 10 - width: 162 - text: "Level" - text_font: font_small - text_align: CENTER - text_color: 0xAEB8C4 - - - label: - id: atto_battery_value_label - x: 48 - y: 41 - width: 162 - text: "--%" - text_font: font_vehicle_bold - text_align: CENTER - text_color: 0xFFFFFF - - - button: - id: atto_cabin_temperature_status - x: 272 - y: 130 - width: 220 - height: 92 - bg_color: 0x1C2632 - bg_opa: COVER - border_width: 2 - border_color: 0x526276 - radius: 17 - widgets: - - label: - align: LEFT_MID - x: 13 - y: 5 - text: "\U000F050F" - text_font: font_mdi_vehicle - text_color: 0xFFFFFF - - - label: - x: 48 - y: 10 - width: 162 - text: "Cabin" - text_font: font_small - text_align: CENTER - text_color: 0xAEB8C4 - - - label: - id: atto_cabin_temperature_value_label - x: 48 - y: 41 - width: 162 - text: "--.-°C" - text_font: font_vehicle_bold - text_align: CENTER - text_color: 0xFFFFFF - - - button: - id: atto_passenger_seat_button - x: 519 - y: 130 - width: 220 - height: 92 bg_color: 0x28313D bg_opa: COVER border_width: 2 @@ -3061,94 +2943,17 @@ lvgl: widgets: - label: align: LEFT_MID - x: 13 - y: 5 - text: "\U000F0FA6" - text_font: font_mdi_vehicle - text_color: 0xFFFFFF - - - label: - id: atto_passenger_seat_button_label - x: 48 - y: 20 - width: 162 - text: "Passenger Seat\n(Hold)" - text_font: font_small - text_align: CENTER - text_color: 0xFFFFFF - on_long_press: - then: - - if: - condition: - lambda: |- - const auto value = - id(ha_atto_passenger_seat_heating).state; - - return ( - value == "off" || - value == "Off" || - value == "unknown" || - value == "unavailable" || - value.empty() - ); - - then: - - homeassistant.action: - action: select.select_option - data: - entity_id: "${atto_passenger_seat_heating_entity}" - option: "low" - - else: - - if: - condition: - lambda: |- - const auto value = - id(ha_atto_passenger_seat_heating).state; - - return value == "low" || value == "Low"; - - then: - - homeassistant.action: - action: select.select_option - data: - entity_id: "${atto_passenger_seat_heating_entity}" - option: "high" - - else: - - homeassistant.action: - action: select.select_option - data: - entity_id: "${atto_passenger_seat_heating_entity}" - option: "off" - - - button: - id: atto_driver_seat_button - x: 766 - y: 130 - width: 220 - height: 92 - bg_color: 0x28313D - bg_opa: COVER - border_width: 2 - border_color: 0xA6672B - radius: 17 - pressed: - bg_color: 0x7A4A22 - widgets: - - label: - align: LEFT_MID - x: 13 - y: 5 + x: 18 + y: 0 text: "\U000F0FA6" text_font: font_mdi_vehicle text_color: 0xFFFFFF - label: id: atto_driver_seat_button_label - x: 48 - y: 20 - width: 162 + x: 60 + y: 19 + width: 142 text: "Driver Seat\n(Hold)" text_font: font_small text_align: CENTER @@ -3199,6 +3004,203 @@ lvgl: entity_id: "${atto_driver_seat_heating_entity}" option: "off" + #:################################################################################:# + # VEHICLE VALUES / SEAT HEATING + #:################################################################################:# + - button: + id: atto_cabin_temperature_status + x: 25 + y: 130 + width: 220 + height: 92 + bg_color: 0x1C2632 + bg_opa: COVER + border_width: 2 + border_color: 0x526276 + radius: 17 + widgets: + - label: + align: LEFT_MID + x: 18 + y: 0 + text: "\U000F050F" + text_font: font_mdi_vehicle + text_color: 0xFFFFFF + + - label: + x: 60 + y: 11 + width: 142 + text: "Cabin" + text_font: font_small + text_align: CENTER + text_color: 0xAEB8C4 + + - label: + id: atto_cabin_temperature_value_label + x: 60 + y: 43 + width: 142 + text: "--.-°C" + text_font: font_vehicle_bold + text_align: CENTER + text_color: 0xFFFFFF + + - button: + id: atto_battery_status + x: 272 + y: 130 + width: 220 + height: 92 + bg_color: 0x1C2632 + bg_opa: COVER + border_width: 2 + border_color: 0x526276 + radius: 17 + widgets: + - label: + align: LEFT_MID + x: 18 + y: 0 + text: "\U000F0079" + text_font: font_mdi_vehicle + text_color: 0xFFFFFF + + - label: + x: 60 + y: 11 + width: 142 + text: "Level" + text_font: font_small + text_align: CENTER + text_color: 0xAEB8C4 + + - label: + id: atto_battery_value_label + x: 60 + y: 43 + width: 142 + text: "--%" + text_font: font_vehicle_bold + text_align: CENTER + text_color: 0xFFFFFF + + - button: + id: atto_range_status + x: 519 + y: 130 + width: 220 + height: 92 + bg_color: 0x1C2632 + bg_opa: COVER + border_width: 2 + border_color: 0x526276 + radius: 17 + widgets: + - label: + align: LEFT_MID + x: 18 + y: 0 + text: "\U000F08F0" + text_font: font_mdi_vehicle + text_color: 0xFFFFFF + + - label: + x: 60 + y: 11 + width: 142 + text: "Range" + text_font: font_small + text_align: CENTER + text_color: 0xAEB8C4 + + - label: + id: atto_range_value_label + x: 60 + y: 43 + width: 142 + text: "-- km" + text_font: font_vehicle_bold + text_align: CENTER + text_color: 0xFFFFFF + + - button: + id: atto_passenger_seat_button + x: 766 + y: 130 + width: 220 + height: 92 + bg_color: 0x28313D + bg_opa: COVER + border_width: 2 + border_color: 0xA6672B + radius: 17 + pressed: + bg_color: 0x7A4A22 + widgets: + - label: + align: LEFT_MID + x: 18 + y: 0 + text: "\U000F0FA6" + text_font: font_mdi_vehicle + text_color: 0xFFFFFF + + - label: + id: atto_passenger_seat_button_label + x: 60 + y: 19 + width: 142 + text: "Passenger Seat\n(Hold)" + text_font: font_small + text_align: CENTER + text_color: 0xFFFFFF + on_long_press: + then: + - if: + condition: + lambda: |- + const auto value = + id(ha_atto_passenger_seat_heating).state; + + return ( + value == "off" || + value == "Off" || + value == "unknown" || + value == "unavailable" || + value.empty() + ); + + then: + - homeassistant.action: + action: select.select_option + data: + entity_id: "${atto_passenger_seat_heating_entity}" + option: "low" + + else: + - if: + condition: + lambda: |- + const auto value = + id(ha_atto_passenger_seat_heating).state; + + return value == "low" || value == "Low"; + + then: + - homeassistant.action: + action: select.select_option + data: + entity_id: "${atto_passenger_seat_heating_entity}" + option: "high" + + else: + - homeassistant.action: + action: select.select_option + data: + entity_id: "${atto_passenger_seat_heating_entity}" + option: "off" + #:################################################################################:# # ATTO CLIMATE / SETPOINT #:################################################################################:#