Files
TX-Ultimate-Easy/ESPHome/TX-Ultimate-Easy-ESPHome_core_hw_leds.yaml
Edward Firmo d0b8ba55ba Clean-up logs
The less the more
2024-12-20 22:32:59 +01:00

964 lines
30 KiB
YAML

####################################################################################################
##### TX Ultimate Easy for ESPHome #####
##### Repository: https://github.com/edwardtfn/TX-Ultimate-Easy #####
####################################################################################################
##### Purpose: ESPHome Core - Hardware - LEDs #####
####################################################################################################
##### Author: edwardtfn - https://github.com/edwardtfn - https://buymeacoffee.com/edwardfirmo #####
####################################################################################################
##### NOTE: #####
##### - Make changes ONLY if absolutely necessary and you have the required knowledge. #####
##### - For normal system use, modifications to this file are NOT required. #####
####################################################################################################
---
substitutions:
default_transition_length: 500ms
LIGHT_MODE_BOTH_TEXT: "Both"
LIGHT_MODE_DISABLED_TEXT: "Disabled"
LIGHT_MODE_LEFT_TEXT: "Left"
LIGHT_MODE_RIGHT_TEXT: "Right"
LIGHT_MODE_BOTTOM_TEXT: "Bottom"
LIGHT_MODE_TOP_TEXT: "Top"
LIGHT_TRANSITION_TURN_ON: '0' # Transition time in msec
LIGHT_TRANSITION_TURN_OFF: '0' # Transition time in msec
LIGHT_BRIGHTNESS_TURN_ON: '0' # Brightness (1 to 100%, 0 to not set it)
globals:
- id: gb_lights_1
type: std::vector<light::LightState*>
restore_value: false
- id: gb_lights_2
type: std::vector<light::LightState*>
restore_value: false
light:
- id: light_output_1
name: Light output 1
internal: true
platform: binary
output: output_relay_1
- id: light_output_2
name: Light output 2
internal: true
platform: binary
output: output_relay_2
- id: light_output_3
name: Light output 3
internal: true
platform: binary
output: output_relay_3
- id: light_output_4
name: Light output 4
internal: true
platform: binary
output: output_relay_4
- id: light_full
name: Light - All
internal: true
platform: neopixelbus
type: GRB
variant: WS2811
# method: esp32_rmt
num_leds: 32
pin: GPIO13
- id: light_eu
name: Light
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 0
to: 27
- id: light_us
name: Light
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 0
to: 31
# Those lights are available based on the model selections
- id: light_eu_bottom
name: Light - Bottom
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 6
to: 12
reversed: true
- id: light_eu_left
name: Light - Left
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 13
to: 19
reversed: true
- id: light_eu_right
name: Light - Right
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 27
to: 27
reversed: false
- id: light_full
from: 0
to: 5
reversed: false
- id: light_eu_top
name: Light - Top
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 20
to: 26
reversed: false
- id: light_us_bottom
name: Light - Bottom
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 9
to: 14
reversed: true
- id: light_us_left
name: Light - Left
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 15
to: 24
reversed: true
- id: light_us_right
name: Light - Right
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 31
to: 31
reversed: false
- id: light_full
from: 0
to: 8
reversed: false
- id: light_us_top
name: Light - Top
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_effects.yaml
segments:
- id: light_full
from: 25
to: 30
reversed: false
- id: light_00
name: Light - LED 00
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 0
to: 0
- id: light_01
name: Light - LED 01
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 1
to: 1
- id: light_02
name: Light - LED 02
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 2
to: 2
- id: light_03
name: Light - LED 03
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 3
to: 3
- id: light_04
name: Light - LED 04
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 4
to: 4
- id: light_05
name: Light - LED 05
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 5
to: 5
- id: light_06
name: Light - LED 06
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 6
to: 6
- id: light_07
name: Light - LED 07
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 7
to: 7
- id: light_08
name: Light - LED 08
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 8
to: 8
- id: light_09
name: Light - LED 09
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 9
to: 9
- id: light_10
name: Light - LED 10
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 10
to: 10
- id: light_11
name: Light - LED 11
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 11
to: 11
- id: light_12
name: Light - LED 12
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 12
to: 12
- id: light_13
name: Light - LED 13
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 13
to: 13
- id: light_14
name: Light - LED 14
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 14
to: 14
- id: light_15
name: Light - LED 15
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 15
to: 15
- id: light_16
name: Light - LED 16
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 16
to: 16
- id: light_17
name: Light - LED 17
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 17
to: 17
- id: light_18
name: Light - LED 18
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 18
to: 18
- id: light_19
name: Light - LED 19
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 19
to: 19
- id: light_20
name: Light - LED 20
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 20
to: 20
- id: light_21
name: Light - LED 21
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 21
to: 21
- id: light_22
name: Light - LED 22
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 22
to: 22
- id: light_23
name: Light - LED 23
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 23
to: 23
- id: light_24
name: Light - LED 24
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 24
to: 24
- id: light_25
name: Light - LED 25
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 25
to: 25
- id: light_26
name: Light - LED 26
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 26
to: 26
- id: light_27
name: Light - LED 27
disabled_by_default: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 27
to: 27
- id: light_28
name: Light - LED 28
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 28
to: 28
- id: light_29
name: Light - LED 29
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 29
to: 29
- id: light_30
name: Light - LED 30
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 30
to: 30
- id: light_31
name: Light - LED 31
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_internal.yaml
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 31
to: 31
- id: light_eu_rl_1_1_bottom
name: Light - Relay 1 of 1 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 9
to: 9
- id: light_eu_rl_1_1_top
name: Light - Relay 1 of 1 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 23
to: 23
- id: light_eu_rl_1_2_bottom
name: Light - Relay 1 of 2 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 11
to: 11
- id: light_eu_rl_1_2_top
name: Light - Relay 1 of 2 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 21
to: 21
- id: light_eu_rl_2_2_bottom
name: Light - Relay 2 of 2 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 7
to: 7
- id: light_eu_rl_2_2_top
name: Light - Relay 2 of 2 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 25
to: 25
- id: light_eu_rl_1_3_bottom
name: Light - Relay 1 of 3 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 12
to: 12
- id: light_eu_rl_1_3_top
name: Light - Relay 1 of 3 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 20
to: 20
- id: light_eu_rl_2_3_bottom
name: Light - Relay 2 of 3 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 9
to: 9
- id: light_eu_rl_2_3_top
name: Light - Relay 2 of 3 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 23
to: 23
- id: light_eu_rl_3_3_bottom
name: Light - Relay 3 of 3 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 6
to: 6
- id: light_eu_rl_3_3_top
name: Light - Relay 3 of 3 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 26
to: 26
- id: light_eu_rl_1_4_bottom
name: Light - Relay 1 of 4 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 12
to: 12
- id: light_eu_rl_1_4_top
name: Light - Relay 1 of 4 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 20
to: 20
- id: light_eu_rl_2_4_bottom
name: Light - Relay 2 of 4 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 10
to: 10
- id: light_eu_rl_2_4_top
name: Light - Relay 2 of 4 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 22
to: 22
- id: light_eu_rl_3_4_bottom
name: Light - Relay 3 of 4 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 8
to: 8
- id: light_eu_rl_3_4_top
name: Light - Relay 3 of 4 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 24
to: 24
- id: light_eu_rl_4_4_bottom
name: Light - Relay 4 of 4 (bottom)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 6
to: 6
- id: light_eu_rl_4_4_top
name: Light - Relay 4 of 4 (top)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 26
to: 26
- id: light_us_rl_1_1_left
name: Light - Relay 1 of 1 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 15
to: 24
- id: light_us_rl_1_1_right
name: Light - Relay 1 of 1 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 31
to: 31
- id: light_full
from: 0
to: 8
- id: light_us_rl_1_2_left
name: Light - Relay 1 of 2 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 20
to: 24
- id: light_us_rl_1_2_right
name: Light - Relay 1 of 2 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 31
to: 31
- id: light_full
from: 0
to: 3
- id: light_us_rl_2_2_left
name: Light - Relay 2 of 2 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 15
to: 19
- id: light_us_rl_2_2_right
name: Light - Relay 2 of 2 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 4
to: 8
- id: light_us_rl_1_3_left
name: Light - Relay 1 of 3 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 22
to: 23
- id: light_us_rl_1_3_right
name: Light - Relay 1 of 3 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 0
to: 1
- id: light_us_rl_2_3_left
name: Light - Relay 2 of 3 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 19
to: 20
- id: light_us_rl_2_3_right
name: Light - Relay 2 of 3 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 3
to: 4
- id: light_us_rl_3_3_left
name: Light - Relay 3 of 3 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 17
to: 18
- id: light_us_rl_3_3_right
name: Light - Relay 3 of 3 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 6
to: 7
- id: light_us_rl_1_4_left
name: Light - Relay 1 of 4 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 12
to: 12
- id: light_us_rl_1_4_right
name: Light - Relay 1 of 4 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 31
to: 31
- id: light_us_rl_2_4_left
name: Light - Relay 2 of 4 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 24
to: 24
- id: light_us_rl_2_4_right
name: Light - Relay 2 of 4 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 2
to: 2
- id: light_us_rl_3_4_left
name: Light - Relay 3 of 4 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 21
to: 21
- id: light_us_rl_3_4_right
name: Light - Relay 3 of 4 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 4
to: 4
- id: light_us_rl_4_4_left
name: Light - Relay 4 of 4 (left)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 19
to: 19
- id: light_us_rl_4_4_right
name: Light - Relay 4 of 4 (right)
internal: true
<<: !include TX-Ultimate-Easy-ESPHome_core_hw_leds_light_base.yaml
segments:
- id: light_full
from: 7
to: 7
script:
- id: !extend boot_initialize
then:
- wait_until:
condition:
- lambda: return sl_tx_model_format->active_index().has_value();
- lambda: return sl_tx_model_gang->active_index().has_value();
- lambda: |-
const bool is_model_us = sl_tx_model_format->active_index().has_value() and
sl_tx_model_format->active_index().value() == 1;
const uint8_t num_gangs = (sl_tx_model_gang->active_index().has_value()) ?
(sl_tx_model_gang->active_index().value() + 1) : 0;
if (num_gangs < 1 || num_gangs > 4) {
ESP_LOGE("core_hw_leds", "Invalid number of gangs: %" PRIu8, num_gangs);
return;
}
light_28->set_internal(!is_model_us);
light_29->set_internal(!is_model_us);
light_30->set_internal(!is_model_us);
light_31->set_internal(!is_model_us);
light_eu->set_internal(is_model_us);
light_eu_bottom->set_internal(is_model_us);
light_eu_left->set_internal(is_model_us);
light_eu_right->set_internal(is_model_us);
light_eu_top->set_internal(is_model_us);
light_us->set_internal(!is_model_us);
light_us_bottom->set_internal(!is_model_us);
light_us_left->set_internal(!is_model_us);
light_us_right->set_internal(!is_model_us);
light_us_top->set_internal(!is_model_us);
switch (num_gangs) {
case 1: // 1 Gang
if (is_model_us) {
id(gb_lights_1) = { light_us_rl_1_1_left };
id(gb_lights_2) = { light_us_rl_1_1_right };
} else {
id(gb_lights_1) = { light_eu_rl_1_1_bottom };
id(gb_lights_2) = { light_eu_rl_1_1_top };
}
break;
case 2: // 2 Gang
if (is_model_us) {
id(gb_lights_1) = { light_us_rl_1_2_left, light_us_rl_2_2_left };
id(gb_lights_2) = { light_us_rl_1_2_right, light_us_rl_2_2_right };
} else {
id(gb_lights_1) = { light_eu_rl_1_2_bottom, light_eu_rl_2_2_bottom };
id(gb_lights_2) = { light_eu_rl_1_2_top, light_eu_rl_2_2_top };
}
break;
case 3: // 3 Gang
if (is_model_us) {
id(gb_lights_1) = { light_us_rl_1_3_left, light_us_rl_2_3_left, light_us_rl_3_3_left };
id(gb_lights_2) = { light_us_rl_1_3_right, light_us_rl_2_3_right, light_us_rl_3_3_right };
} else {
id(gb_lights_1) = { light_eu_rl_1_3_bottom, light_eu_rl_2_3_bottom, light_eu_rl_3_3_bottom };
id(gb_lights_2) = { light_eu_rl_1_3_top, light_eu_rl_2_3_top, light_eu_rl_3_3_top };
}
break;
case 4: // 3 Gang
if (is_model_us) {
id(gb_lights_1) = { light_us_rl_1_4_left, light_us_rl_2_4_left,
light_us_rl_3_4_left, light_us_rl_4_4_left };
id(gb_lights_2) = { light_us_rl_1_4_right, light_us_rl_2_4_right,
light_us_rl_3_4_right, light_us_rl_4_4_right };
} else {
id(gb_lights_1) = { light_eu_rl_1_4_bottom, light_eu_rl_2_4_bottom,
light_eu_rl_3_4_bottom, light_eu_rl_4_4_bottom };
id(gb_lights_2) = { light_eu_rl_1_4_top, light_eu_rl_2_4_top,
light_eu_rl_3_4_top, light_eu_rl_4_4_top };
}
break;
}
- id: light_set_state
mode: parallel
parameters:
light_group: uint8_t
light_index: uint8_t
state: bool
then:
- lambda: |-
static const uint32_t LIGHT_TRANSITION_TURN_ON = ${LIGHT_TRANSITION_TURN_ON};
static const uint32_t LIGHT_TRANSITION_TURN_OFF = ${LIGHT_TRANSITION_TURN_OFF};
static const uint8_t LIGHT_BRIGHTNESS_TURN_ON = ${LIGHT_BRIGHTNESS_TURN_ON};
const bool is_model_us = sl_tx_model_format->active_index().has_value() and
sl_tx_model_format->active_index().value() == 1;
const std::string light_mode_group_1 = is_model_us ? "${LIGHT_MODE_LEFT_TEXT}" : "${LIGHT_MODE_BOTTOM_TEXT}";
const std::string light_mode_group_2 = is_model_us ? "${LIGHT_MODE_RIGHT_TEXT}" : "${LIGHT_MODE_TOP_TEXT}";
switch (light_group) {
case 1:
if (light_index >= id(gb_lights_1).size()) {
ESP_LOGE("core_hw_leds", "Invalid set with %s light for Relay %" PRIu8,
light_mode_group_1.c_str(), light_index);
return;
}
if (state and !id(gb_lights_1)[light_index]->current_values.is_on()) {
ESP_LOGI("core_hw_leds", "Turn-on %s light for Relay %" PRIu8,
light_mode_group_1.c_str(), light_index);
auto call = id(gb_lights_1)[light_index]->turn_on();
if (LIGHT_TRANSITION_TURN_ON > 0)
call.set_transition_length(LIGHT_TRANSITION_TURN_ON); // in ms
if (LIGHT_BRIGHTNESS_TURN_ON > 0 and LIGHT_BRIGHTNESS_TURN_ON <= 100)
call.set_brightness(LIGHT_TRANSITION_TURN_ON / 100.0f);
call.perform();
} else if (!state and id(gb_lights_1)[light_index]->current_values.is_on()) {
ESP_LOGI("core_hw_leds", "Turn-off %s light for Relay %" PRIu8,
light_mode_group_1.c_str(), light_index);
auto call = id(gb_lights_1)[light_index]->turn_off();
if (LIGHT_TRANSITION_TURN_OFF > 0)
call.set_transition_length(LIGHT_TRANSITION_TURN_OFF); // in ms
call.perform();
}
break;
case 2:
if (light_index >= id(gb_lights_2).size()) {
ESP_LOGE("core_hw_leds", "Invalid set with %s light for Relay %" PRIu8,
light_mode_group_2.c_str(), light_index);
return;
}
if (state and !id(gb_lights_2)[light_index]->current_values.is_on()) {
ESP_LOGI("core_hw_leds", "Turn-on %s light for Relay %" PRIu8,
light_mode_group_2.c_str(), light_index);
auto call = id(gb_lights_2)[light_index]->turn_on();
if (LIGHT_TRANSITION_TURN_ON > 0)
call.set_transition_length(LIGHT_TRANSITION_TURN_ON); // in ms
if (LIGHT_BRIGHTNESS_TURN_ON > 0 and LIGHT_BRIGHTNESS_TURN_ON <= 100)
call.set_brightness(LIGHT_TRANSITION_TURN_ON / 100.0f);
call.perform();
} else if (!state and id(gb_lights_2)[light_index]->current_values.is_on()) {
ESP_LOGI("core_hw_leds", "Turn-off %s light for Relay %" PRIu8,
light_mode_group_2.c_str(), light_index);
auto call = id(gb_lights_2)[light_index]->turn_off();
if (LIGHT_TRANSITION_TURN_OFF > 0)
call.set_transition_length(LIGHT_TRANSITION_TURN_OFF); // in ms
call.perform();
}
break;
}
select:
# EU relay light mode template
- &relay_light_mode_eu
id: sl_relay_1_light_mode_eu
name: Relay 1 light mode
platform: template
options:
- "${LIGHT_MODE_DISABLED_TEXT}"
- "${LIGHT_MODE_BOTTOM_TEXT}"
- "${LIGHT_MODE_TOP_TEXT}"
- "${LIGHT_MODE_BOTH_TEXT}"
initial_option: "${LIGHT_MODE_BOTTOM_TEXT}"
optimistic: true
restore_value: true
internal: true
entity_category: config
disabled_by_default: false
icon: mdi:dots-square
- id: sl_relay_2_light_mode_eu
name: Relay 2 light mode
<<: *relay_light_mode_eu
- id: sl_relay_3_light_mode_eu
name: Relay 3 light mode
<<: *relay_light_mode_eu
- id: sl_relay_4_light_mode_eu
name: Relay 4 light mode
<<: *relay_light_mode_eu
# US relay light mode template
- &relay_light_mode_us
id: sl_relay_1_light_mode_us
name: Relay 1 light mode
platform: template
options:
- "${LIGHT_MODE_DISABLED_TEXT}"
- "${LIGHT_MODE_LEFT_TEXT}"
- "${LIGHT_MODE_RIGHT_TEXT}"
- "${LIGHT_MODE_BOTH_TEXT}"
initial_option: "${LIGHT_MODE_RIGHT_TEXT}"
optimistic: true
restore_value: true
internal: true
entity_category: config
disabled_by_default: false
icon: mdi:dots-square
- id: sl_relay_2_light_mode_us
name: Relay 2 light mode
<<: *relay_light_mode_us
- id: sl_relay_3_light_mode_us
name: Relay 3 light mode
<<: *relay_light_mode_us
- id: sl_relay_4_light_mode_us
name: Relay 4 light mode
<<: *relay_light_mode_us
...