Support area-based motion sensor selection
Updates occupancy controlled lights to use target selector like lights, allowing selection of entire areas of motion sensors. Lights turn on when any sensor in the selected areas/entities detects motion and turn off when all are clear for the delay period. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
blueprint:
|
||||
name: Occupancy Controlled Lights with Adaptive Lighting
|
||||
description: Automatically turn lights on/off based on occupancy sensor with adaptive lighting support
|
||||
description: Automatically turn lights on/off based on multiple occupancy sensors with adaptive lighting support. Lights turn on when any sensor detects motion and turn off only when all sensors are clear for the configured delay.
|
||||
domain: automation
|
||||
input:
|
||||
occupancy_sensor:
|
||||
name: Occupancy Sensor
|
||||
description: Binary sensor that detects occupancy/presence
|
||||
occupancy_sensors:
|
||||
name: Occupancy Sensors
|
||||
description: Occupancy sensors to monitor (can select individual sensors or entire areas)
|
||||
selector:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
device_class: occupancy
|
||||
target:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
device_class: occupancy
|
||||
lights:
|
||||
name: Lights
|
||||
description: Light entities to control
|
||||
@@ -70,16 +71,19 @@ blueprint:
|
||||
|
||||
trigger:
|
||||
- trigger: state
|
||||
entity_id: !input occupancy_sensor
|
||||
target: !input occupancy_sensors
|
||||
|
||||
condition: []
|
||||
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: !input occupancy_sensor
|
||||
state: "on"
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% set sensors = occupancy_sensors.entity_id if occupancy_sensors.entity_id is defined
|
||||
else (area_entities(occupancy_sensors.area_id) | select('match', 'binary_sensor.*') | select('device_attr', 'device_class', 'occupancy') | list) if occupancy_sensors.area_id is defined
|
||||
else [] %}
|
||||
{{ expand(sensors) | selectattr('state', 'eq', 'on') | list | count > 0 }}
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
@@ -98,15 +102,21 @@ action:
|
||||
data:
|
||||
transition: !input turn_on_transition
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: !input occupancy_sensor
|
||||
state: "off"
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% set sensors = occupancy_sensors.entity_id if occupancy_sensors.entity_id is defined
|
||||
else (area_entities(occupancy_sensors.area_id) | select('match', 'binary_sensor.*') | select('device_attr', 'device_class', 'occupancy') | list) if occupancy_sensors.area_id is defined
|
||||
else [] %}
|
||||
{{ expand(sensors) | selectattr('state', 'eq', 'on') | list | count == 0 }}
|
||||
sequence:
|
||||
- delay:
|
||||
seconds: !input off_delay
|
||||
- condition: state
|
||||
entity_id: !input occupancy_sensor
|
||||
state: "off"
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% set sensors = occupancy_sensors.entity_id if occupancy_sensors.entity_id is defined
|
||||
else (area_entities(occupancy_sensors.area_id) | select('match', 'binary_sensor.*') | select('device_attr', 'device_class', 'occupancy') | list) if occupancy_sensors.area_id is defined
|
||||
else [] %}
|
||||
{{ expand(sensors) | selectattr('state', 'eq', 'on') | list | count == 0 }}
|
||||
- action: light.turn_off
|
||||
target: !input lights
|
||||
data:
|
||||
|
||||
Reference in New Issue
Block a user