changes to esphome devices and packages to start removing node red dependencies
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
################################################################################
|
||||
# PACKAGE: Laundry Lights Backup Occupancy Automation
|
||||
################################################################################
|
||||
#
|
||||
# Operation:
|
||||
# - Turns Laundry lights on when either of these sensors becomes active:
|
||||
# - Laundry cupboard/wall PIR from ESPHome laundry environment device
|
||||
# - Backup ceiling PIR from Zigbee
|
||||
#
|
||||
# - Turns Laundry lights off only after BOTH PIRs are clear for the configured
|
||||
# delay period.
|
||||
#
|
||||
# Notes:
|
||||
# - This is treated as a BACKUP automation.
|
||||
# - The ESPHome devices should normally communicate directly via MQTT.
|
||||
# - The wall PIR should still operate the lights with MQTT only.
|
||||
# - This HA automation provides a fallback path using HA entity states.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
################################################################################
|
||||
# USER SETTINGS / PACKAGE VARIABLES
|
||||
################################################################################
|
||||
input_number:
|
||||
laundry_lights_backup_clear_delay_seconds:
|
||||
name: "Laundry Lights Backup Clear Delay Seconds"
|
||||
min: 0
|
||||
max: 3600
|
||||
step: 1
|
||||
mode: box
|
||||
unit_of_measurement: s
|
||||
icon: mdi:timer-outline
|
||||
initial: 240
|
||||
|
||||
################################################################################
|
||||
# AUTOMATIONS
|
||||
################################################################################
|
||||
automation:
|
||||
- id: laundry_lights_backup_occupancy_control
|
||||
alias: "Laundry Lights - Backup Occupancy Control"
|
||||
description: >
|
||||
Backup automation for Laundry lights. Turns lights on when either the
|
||||
ESPHome wall/cupboard PIR or Zigbee ceiling PIR detects movement/occupancy.
|
||||
Turns lights off after both PIRs are clear for the configured delay period.
|
||||
mode: restart
|
||||
triggers:
|
||||
# Either PIR becoming active turns the Laundry lights on.
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.esp_laundryenv_laundry_pir
|
||||
to: "on"
|
||||
id: laundry_wall_pir_detected
|
||||
|
||||
- trigger: state
|
||||
entity_id: binary_sensor.laundry_ceiling_pir_x03ir_occupancy
|
||||
to: "on"
|
||||
id: laundry_ceiling_pir_detected
|
||||
|
||||
# Either PIR becoming clear causes a check. The action only continues
|
||||
# to the off-delay when BOTH PIRs are clear.
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- binary_sensor.esp_laundryenv_laundry_pir
|
||||
- binary_sensor.laundry_ceiling_pir_x03ir_occupancy
|
||||
to: "off"
|
||||
id: laundry_pir_clear_check
|
||||
|
||||
# On HA startup, re-evaluate the current state. This prevents lights
|
||||
# staying on indefinitely if HA restarted while the room was already clear.
|
||||
- trigger: homeassistant
|
||||
event: start
|
||||
id: ha_startup_check
|
||||
|
||||
actions:
|
||||
- choose:
|
||||
######################################################################
|
||||
# ON LOGIC:
|
||||
# If either PIR is active, turn the Laundry lights on immediately.
|
||||
######################################################################
|
||||
- alias: "Turn lights on if either Laundry PIR is active"
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{
|
||||
is_state('binary_sensor.esp_laundryenv_laundry_pir', 'on')
|
||||
or is_state('binary_sensor.laundry_ceiling_pir_x03ir_occupancy', 'on')
|
||||
}}
|
||||
sequence:
|
||||
- action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.esp_laundrylights_relay_1_laundry_lights
|
||||
|
||||
######################################################################
|
||||
# OFF LOGIC:
|
||||
# Only start the off-delay if BOTH PIRs are clear.
|
||||
# After the delay, check both PIRs again before switching off.
|
||||
######################################################################
|
||||
- alias: "Wait, then turn lights off if both Laundry PIRs remain clear"
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{
|
||||
is_state('binary_sensor.esp_laundryenv_laundry_pir', 'off')
|
||||
and is_state('binary_sensor.laundry_ceiling_pir_x03ir_occupancy', 'off')
|
||||
}}
|
||||
sequence:
|
||||
- delay:
|
||||
seconds: >
|
||||
{{
|
||||
states('input_number.laundry_lights_backup_clear_delay_seconds') | int(240)
|
||||
}}
|
||||
|
||||
# Re-check after the delay in case either PIR became active again.
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{
|
||||
is_state('binary_sensor.esp_laundryenv_laundry_pir', 'off')
|
||||
and is_state('binary_sensor.laundry_ceiling_pir_x03ir_occupancy', 'off')
|
||||
}}
|
||||
|
||||
# Only send OFF if the Laundry lights are currently ON.
|
||||
- condition: state
|
||||
entity_id: switch.esp_laundrylights_relay_1_laundry_lights
|
||||
state: "on"
|
||||
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.esp_laundrylights_relay_1_laundry_lights
|
||||
Reference in New Issue
Block a user