Edit esp-bedside-panel.yaml

This commit is contained in:
ESPHome Device Builder
2026-09-04 17:09:47 +12:00
parent d81deae3be
commit e205b0db67
+68 -40
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.56 2026-09-04 Added latched blackout after 10 seconds below 1 lx with immediate exit
# V1.55 2026-08-16 Show only Clock time and date in Blackout ambient-light mode # V1.55 2026-08-16 Show only Clock time and date in Blackout ambient-light mode
# V1.54 2026-08-16 Dimmed Clock time and date palette in Blackout ambient-light mode # V1.54 2026-08-16 Dimmed Clock time and date palette in Blackout ambient-light mode
# V1.53 2026-07-31 Expanded Jobs Summary to nine active jobs in a 3x4 grid with three spare slots # V1.53 2026-07-31 Expanded Jobs Summary to nine active jobs in a 3x4 grid with three spare slots
@@ -248,7 +249,6 @@ substitutions:
# Bright light: approximately 642-643 lx # Bright light: approximately 642-643 lx
ambient_lux_multiplier_default: "200" ambient_lux_multiplier_default: "200"
display_blackout_lux_threshold_default: "2"
display_dark_lux_threshold_default: "20" display_dark_lux_threshold_default: "20"
display_bright_lux_threshold_default: "250" display_bright_lux_threshold_default: "250"
@@ -921,20 +921,6 @@ number:
step: 5 step: 5
mode: box mode: box
- platform: template
id: display_blackout_lux_threshold
name: "${friendly_name} Blackout Lux Threshold"
icon: mdi:brightness-1
entity_category: config
optimistic: true
restore_value: true
initial_value: "${display_blackout_lux_threshold_default}"
unit_of_measurement: "lx"
min_value: 0
max_value: 20
step: 0.5
mode: box
- platform: template - platform: template
id: display_dark_lux_threshold id: display_dark_lux_threshold
name: "${friendly_name} Dark Lux Threshold" name: "${friendly_name} Dark Lux Threshold"
@@ -1241,6 +1227,36 @@ sensor:
} }
return voltage * multiplier; return voltage * multiplier;
on_value:
then:
- if:
condition:
lambda: |-
return !isnan(x) && x >= 1.0f;
then:
- script.stop: latch_display_blackout
- lambda: |-
id(display_blackout_active) = false;
- if:
condition:
lambda: |-
return id(lvgl_ready) && id(display_is_dimmed);
then:
- script.execute: apply_dim_backlight
else:
- if:
condition:
lambda: |-
return id(lvgl_ready);
then:
- script.execute: apply_active_backlight
else:
- if:
condition:
lambda: |-
return !isnan(x) && x < 1.0f && !id(display_blackout_active);
then:
- script.execute: latch_display_blackout
- platform: homeassistant - platform: homeassistant
id: moon_phase id: moon_phase
@@ -1918,6 +1934,12 @@ globals:
restore_value: false restore_value: false
initial_value: "false" initial_value: "false"
# True after ambient light remains below 1 lx for 10 continuous seconds.
- id: display_blackout_active
type: bool
restore_value: false
initial_value: "false"
# True only while the Security page is visible. # True only while the Security page is visible.
- id: security_page_active - id: security_page_active
type: bool type: bool
@@ -3142,6 +3164,32 @@ script:
# The active and clock/idle brightness levels are independently adjustable # The active and clock/idle brightness levels are independently adjustable
# and restored after reboot. # and restored after reboot.
- id: latch_display_blackout
mode: single
then:
- delay: 10s
- if:
condition:
lambda: |-
const float lux = id(ambient_light_illuminance).state;
return !isnan(lux) && lux < 1.0f;
then:
- lambda: |-
id(display_blackout_active) = true;
- if:
condition:
lambda: |-
return id(lvgl_ready) && id(display_is_dimmed);
then:
- script.execute: apply_dim_backlight
else:
- if:
condition:
lambda: |-
return id(lvgl_ready);
then:
- script.execute: apply_active_backlight
# Keep the idle Clock unobtrusive at the minimum usable backlight level. # Keep the idle Clock unobtrusive at the minimum usable backlight level.
- id: apply_clock_blackout_palette - id: apply_clock_blackout_palette
mode: restart mode: restart
@@ -3149,15 +3197,7 @@ script:
- if: - if:
condition: condition:
lambda: |- lambda: |-
const float lux = id(ambient_light_illuminance).state; return id(display_blackout_active);
float blackout_threshold =
id(display_blackout_lux_threshold).state;
if (isnan(blackout_threshold)) {
blackout_threshold = 2.0f;
}
return !isnan(lux) && lux < blackout_threshold;
then: then:
- lvgl.label.update: - lvgl.label.update:
@@ -3212,20 +3252,14 @@ script:
brightness: !lambda |- brightness: !lambda |-
const float lux = id(ambient_light_illuminance).state; const float lux = id(ambient_light_illuminance).state;
float blackout_threshold =
id(display_blackout_lux_threshold).state;
float dark_threshold = float dark_threshold =
id(display_dark_lux_threshold).state; id(display_dark_lux_threshold).state;
float bright_threshold = float bright_threshold =
id(display_bright_lux_threshold).state; id(display_bright_lux_threshold).state;
if (isnan(blackout_threshold)) {
blackout_threshold = 2.0f;
}
if ( if (
isnan(dark_threshold) || isnan(dark_threshold) ||
dark_threshold <= blackout_threshold dark_threshold <= 0.0f
) { ) {
dark_threshold = 20.0f; dark_threshold = 20.0f;
} }
@@ -3239,7 +3273,7 @@ script:
float brightness_percent; float brightness_percent;
if (!isnan(lux) && lux < blackout_threshold) { if (id(display_blackout_active)) {
brightness_percent = brightness_percent =
id(display_blackout_brightness).state; id(display_blackout_brightness).state;
id(ambient_light_band_text).publish_state("Blackout"); id(ambient_light_band_text).publish_state("Blackout");
@@ -3280,20 +3314,14 @@ script:
brightness: !lambda |- brightness: !lambda |-
const float lux = id(ambient_light_illuminance).state; const float lux = id(ambient_light_illuminance).state;
float blackout_threshold =
id(display_blackout_lux_threshold).state;
float dark_threshold = float dark_threshold =
id(display_dark_lux_threshold).state; id(display_dark_lux_threshold).state;
float bright_threshold = float bright_threshold =
id(display_bright_lux_threshold).state; id(display_bright_lux_threshold).state;
if (isnan(blackout_threshold)) {
blackout_threshold = 2.0f;
}
if ( if (
isnan(dark_threshold) || isnan(dark_threshold) ||
dark_threshold <= blackout_threshold dark_threshold <= 0.0f
) { ) {
dark_threshold = 20.0f; dark_threshold = 20.0f;
} }
@@ -3307,7 +3335,7 @@ script:
float brightness_percent; float brightness_percent;
if (!isnan(lux) && lux < blackout_threshold) { if (id(display_blackout_active)) {
brightness_percent = brightness_percent =
id(display_blackout_brightness).state; id(display_blackout_brightness).state;
id(ambient_light_band_text).publish_state("Blackout"); id(ambient_light_band_text).publish_state("Blackout");