Update lights when mode changes
This commit is contained in:
@@ -1353,9 +1353,44 @@ select:
|
|||||||
icon: mdi:dots-square
|
icon: mdi:dots-square
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value (existing code)
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 0)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 0)) |
|
||||||
((id(sl_relay_1_light_mode_eu).active_index().value_or(1) & 0x0F) << 0);
|
((id(sl_relay_1_light_mode_eu).active_index().value_or(1) & 0x0F) << 0);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = ""; // Static variable local to THIS lambda only
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 1 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 0, false); // Group 1, relay index 0
|
||||||
|
id(light_set_state)->execute(2, 0, false); // Group 2, relay index 0
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 1 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_1).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_BOTTOM_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 0, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_TOP_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 0, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
# US relay light mode template
|
# US relay light mode template
|
||||||
- &relay_light_mode_us
|
- &relay_light_mode_us
|
||||||
id: sl_relay_1_light_mode_us
|
id: sl_relay_1_light_mode_us
|
||||||
@@ -1375,9 +1410,44 @@ select:
|
|||||||
icon: mdi:dots-square
|
icon: mdi:dots-square
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 0)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 0)) |
|
||||||
((id(sl_relay_1_light_mode_us).active_index().value_or(1) & 0x0F) << 0);
|
((id(sl_relay_1_light_mode_us).active_index().value_or(1) & 0x0F) << 0);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 1 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 0, false); // Group 1, relay index 0
|
||||||
|
id(light_set_state)->execute(2, 0, false); // Group 2, relay index 0
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 1 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_1).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_LEFT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 0, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_RIGHT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 0, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_1_mode
|
- id: sl_relay_1_mode
|
||||||
name: Relay 1 display mode
|
name: Relay 1 display mode
|
||||||
platform: template
|
platform: template
|
||||||
@@ -1406,17 +1476,87 @@ select:
|
|||||||
<<: *relay_light_mode_eu
|
<<: *relay_light_mode_eu
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 4)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 4)) |
|
||||||
((id(sl_relay_2_light_mode_eu).active_index().value_or(1) & 0x0F) << 4);
|
((id(sl_relay_2_light_mode_eu).active_index().value_or(1) & 0x0F) << 4);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 2 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 1, false); // Group 1, relay index 1
|
||||||
|
id(light_set_state)->execute(2, 1, false); // Group 2, relay index 1
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 2 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_2).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_BOTTOM_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 1, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_TOP_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 1, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_2_light_mode_us
|
- id: sl_relay_2_light_mode_us
|
||||||
name: Relay 2 light mode US
|
name: Relay 2 light mode US
|
||||||
<<: *relay_light_mode_us
|
<<: *relay_light_mode_us
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 4)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 4)) |
|
||||||
((id(sl_relay_2_light_mode_us).active_index().value_or(1) & 0x0F) << 4);
|
((id(sl_relay_2_light_mode_us).active_index().value_or(1) & 0x0F) << 4);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 2 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 1, false); // Group 1, relay index 1
|
||||||
|
id(light_set_state)->execute(2, 1, false); // Group 2, relay index 1
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 2 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_2).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_LEFT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 1, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_RIGHT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 1, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_2_mode
|
- id: sl_relay_2_mode
|
||||||
name: Relay 2 display mode
|
name: Relay 2 display mode
|
||||||
platform: template
|
platform: template
|
||||||
@@ -1445,17 +1585,85 @@ select:
|
|||||||
<<: *relay_light_mode_eu
|
<<: *relay_light_mode_eu
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 8)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 8)) |
|
||||||
((id(sl_relay_3_light_mode_eu).active_index().value_or(1) & 0x0F) << 8);
|
((id(sl_relay_3_light_mode_eu).active_index().value_or(1) & 0x0F) << 8);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 3 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 2, false); // Group 1, relay index 2
|
||||||
|
id(light_set_state)->execute(2, 2, false); // Group 2, relay index 2
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}",
|
||||||
|
"Relay 3 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_3).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_BOTTOM_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 2, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_TOP_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 2, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_3_light_mode_us
|
- id: sl_relay_3_light_mode_us
|
||||||
name: Relay 3 light mode US
|
name: Relay 3 light mode US
|
||||||
<<: *relay_light_mode_us
|
<<: *relay_light_mode_us
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 8)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 8)) |
|
||||||
((id(sl_relay_3_light_mode_us).active_index().value_or(1) & 0x0F) << 8);
|
((id(sl_relay_3_light_mode_us).active_index().value_or(1) & 0x0F) << 8);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 3 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 2, false); // Group 1, relay index 2
|
||||||
|
id(light_set_state)->execute(2, 2, false); // Group 2, relay index 2
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 3 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_3).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_LEFT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 2, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_RIGHT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 2, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_3_mode
|
- id: sl_relay_3_mode
|
||||||
name: Relay 3 display mode
|
name: Relay 3 display mode
|
||||||
platform: template
|
platform: template
|
||||||
@@ -1484,17 +1692,83 @@ select:
|
|||||||
<<: *relay_light_mode_eu
|
<<: *relay_light_mode_eu
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 12)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 12)) |
|
||||||
((id(sl_relay_4_light_mode_eu).active_index().value_or(1) & 0x0F) << 12);
|
((id(sl_relay_4_light_mode_eu).active_index().value_or(1) & 0x0F) << 12);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 4 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 3, false); // Group 1, relay index 3
|
||||||
|
id(light_set_state)->execute(2, 3, false); // Group 2, relay index 3
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 4 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_4).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_BOTTOM_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 3, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_TOP_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 3, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_4_light_mode_us
|
- id: sl_relay_4_light_mode_us
|
||||||
name: Relay 4 light mode US
|
name: Relay 4 light mode US
|
||||||
<<: *relay_light_mode_us
|
<<: *relay_light_mode_us
|
||||||
on_value:
|
on_value:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
|
// Update packed value
|
||||||
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 12)) |
|
id(relay_light_modes_packed) = (id(relay_light_modes_packed) & ~(0x0F << 12)) |
|
||||||
((id(sl_relay_4_light_mode_us).active_index().value_or(1) & 0x0F) << 12);
|
((id(sl_relay_4_light_mode_us).active_index().value_or(1) & 0x0F) << 12);
|
||||||
|
|
||||||
|
// Handle mode transitions (only after boot is complete)
|
||||||
|
if (!id(bs_boot_completed)->state) return; // Skip during boot
|
||||||
|
|
||||||
|
static std::string previous_mode = "";
|
||||||
|
std::string current_mode = x;
|
||||||
|
|
||||||
|
if (previous_mode.empty()) {
|
||||||
|
previous_mode = current_mode; // Initialize on first run after boot
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previous_mode != "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode == "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning TO Disabled - turn off lights
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 4 light mode changed to ${LIGHT_MODE_DISABLED_TEXT} - turning off lights");
|
||||||
|
id(light_set_state)->execute(1, 3, false); // Group 1, relay index 3
|
||||||
|
id(light_set_state)->execute(2, 3, false); // Group 2, relay index 3
|
||||||
|
} else if (previous_mode == "${LIGHT_MODE_DISABLED_TEXT}" &&
|
||||||
|
current_mode != "${LIGHT_MODE_DISABLED_TEXT}") {
|
||||||
|
// Transitioning FROM Disabled - update lights based on relay state
|
||||||
|
ESP_LOGI("${TAG_STD_HW_RELAYS}", "Relay 4 light mode changed from ${LIGHT_MODE_DISABLED_TEXT} - updating lights");
|
||||||
|
bool relay_state = id(sw_relay_4).state;
|
||||||
|
if (current_mode == "${LIGHT_MODE_LEFT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(1, 3, relay_state);
|
||||||
|
}
|
||||||
|
if (current_mode == "${LIGHT_MODE_RIGHT_TEXT}" || current_mode == "${LIGHT_MODE_BOTH_TEXT}") {
|
||||||
|
id(light_set_state)->execute(2, 3, relay_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_mode = current_mode;
|
||||||
|
|
||||||
- id: sl_relay_4_mode
|
- id: sl_relay_4_mode
|
||||||
name: Relay 4 display mode
|
name: Relay 4 display mode
|
||||||
platform: template
|
platform: template
|
||||||
|
|||||||
Reference in New Issue
Block a user