Edit esp-bedside-panel.yaml

This commit is contained in:
ESPHome Device Builder
2026-07-17 23:03:40 +12:00
parent 38281df1dd
commit cafc856a3c
+232 -230
View File
@@ -6,6 +6,7 @@
# https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-bedside-panel.yaml # https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-bedside-panel.yaml
#:########################################################################################:# #:########################################################################################:#
# VERSIONS: # 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.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.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 # V1.9 2026-07-17 Corrected Atto lock/climate/setpoint controls and added vehicle icons
@@ -109,12 +110,12 @@ substitutions:
# Device Naming # Device Naming
device_name: "esp-bedside-panel" device_name: "esp-bedside-panel"
friendly_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" device_area: "Bedroom"
# Project Naming # Project Naming
project_name: "Guition.JC1060P470C_I_W_Y" project_name: "Guition.JC1060P470C_I_W_Y"
project_version: "v1.10a" project_version: "v1.11"
# Passwords & Secrets # Passwords & Secrets
api_key: !secret esp-api_key api_key: !secret esp-api_key
@@ -1148,17 +1149,17 @@ script:
id: atto_lock_button_label id: atto_lock_button_label
text: !lambda |- text: !lambda |-
if (id(atto_lock_optimistic) == 1) { if (id(atto_lock_optimistic) == 1) {
return std::string("Locked (Hold)"); return std::string("Locked\n(Hold)");
} }
if (id(atto_lock_optimistic) == 0) { 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; const auto state = id(ha_atto_lock_state).state;
if (state == "locked") { if (state == "locked") {
return std::string("Locked (Hold)"); return std::string("Locked\n(Hold)");
} }
if (state == "locking") { if (state == "locking") {
@@ -1169,7 +1170,7 @@ script:
return std::string("Unlocking..."); return std::string("Unlocking...");
} }
return std::string("Unlocked (Hold)"); return std::string("Unlocked\n(Hold)");
- lvgl.label.update: - lvgl.label.update:
id: atto_lock_icon_label id: atto_lock_icon_label
@@ -2791,17 +2792,18 @@ lvgl:
- label: - label:
id: atto_lock_icon_label id: atto_lock_icon_label
align: LEFT_MID align: LEFT_MID
x: 14 x: 18
y: 5 y: 0
text: "\U000F033E" text: "\U000F033E"
text_font: font_mdi_vehicle text_font: font_mdi_vehicle
text_color: 0xFFFFFF text_color: 0xFFFFFF
- label: - label:
id: atto_lock_button_label id: atto_lock_button_label
align: CENTER x: 60
x: 14 y: 19
text: "Locked (Hold)" width: 142
text: "Locked\n(Hold)"
text_font: font_small text_font: font_small
text_align: CENTER text_align: CENTER
text_color: 0xFFFFFF text_color: 0xFFFFFF
@@ -2854,16 +2856,16 @@ lvgl:
widgets: widgets:
- label: - label:
align: LEFT_MID align: LEFT_MID
x: 13 x: 18
y: 5 y: 0
text: "\U000F0084" text: "\U000F0084"
text_font: font_mdi_vehicle text_font: font_mdi_vehicle
text_color: 0xFFFFFF text_color: 0xFFFFFF
- label: - label:
x: 48 x: 60
y: 10 y: 11
width: 162 width: 142
text: "Atto Charging" text: "Atto Charging"
text_font: font_small text_font: font_small
text_align: CENTER text_align: CENTER
@@ -2871,9 +2873,9 @@ lvgl:
- label: - label:
id: atto_charging_state_label id: atto_charging_state_label
x: 48 x: 60
y: 42 y: 43
width: 162 width: 142
text: "NOT CHARGING" text: "NOT CHARGING"
text_font: font_vehicle_bold text_font: font_vehicle_bold
text_align: CENTER text_align: CENTER
@@ -2895,16 +2897,16 @@ lvgl:
widgets: widgets:
- label: - label:
align: LEFT_MID align: LEFT_MID
x: 13 x: 18
y: 5 y: 0
text: "\U000F00F0" text: "\U000F00F0"
text_font: font_mdi_vehicle text_font: font_mdi_vehicle
text_color: 0xFFFFFF text_color: 0xFFFFFF
- label: - label:
x: 48 x: 60
y: 10 y: 11
width: 162 width: 142
text: "Schedule" text: "Schedule"
text_font: font_small text_font: font_small
text_align: CENTER text_align: CENTER
@@ -2912,9 +2914,9 @@ lvgl:
- label: - label:
id: atto_schedule_state_label id: atto_schedule_state_label
x: 48 x: 60
y: 42 y: 43
width: 162 width: 142
text: "NOT ENABLED" text: "NOT ENABLED"
text_font: font_vehicle_bold text_font: font_vehicle_bold
text_align: CENTER text_align: CENTER
@@ -2926,131 +2928,11 @@ lvgl:
entity_id: "${atto_schedule_enabled_entity}" entity_id: "${atto_schedule_enabled_entity}"
- button: - button:
id: atto_range_status id: atto_driver_seat_button
x: 766 x: 766
y: 22 y: 22
width: 220 width: 220
height: 92 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_color: 0x28313D
bg_opa: COVER bg_opa: COVER
border_width: 2 border_width: 2
@@ -3061,94 +2943,17 @@ lvgl:
widgets: widgets:
- label: - label:
align: LEFT_MID align: LEFT_MID
x: 13 x: 18
y: 5 y: 0
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
text: "\U000F0FA6" text: "\U000F0FA6"
text_font: font_mdi_vehicle text_font: font_mdi_vehicle
text_color: 0xFFFFFF text_color: 0xFFFFFF
- label: - label:
id: atto_driver_seat_button_label id: atto_driver_seat_button_label
x: 48 x: 60
y: 20 y: 19
width: 162 width: 142
text: "Driver Seat\n(Hold)" text: "Driver Seat\n(Hold)"
text_font: font_small text_font: font_small
text_align: CENTER text_align: CENTER
@@ -3199,6 +3004,203 @@ lvgl:
entity_id: "${atto_driver_seat_heating_entity}" entity_id: "${atto_driver_seat_heating_entity}"
option: "off" 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 # ATTO CLIMATE / SETPOINT
#:################################################################################:# #:################################################################################:#