194 lines
5.6 KiB
YAML
194 lines
5.6 KiB
YAML
blueprint:
|
|
name: Motion-activated Light with Conditions, Exceptions, Optional Settings, and
|
|
Sun Offset
|
|
description: Turn on lights when motion is detected, with optional brightness and
|
|
color settings, conditional entity state check, and sun position check with offset.
|
|
domain: automation
|
|
input:
|
|
motion_sensors:
|
|
name: Motion Sensors
|
|
description: Select one or more motion sensors.
|
|
selector:
|
|
entity:
|
|
domain:
|
|
- binary_sensor
|
|
device_class:
|
|
- motion
|
|
multiple: true
|
|
light_targets:
|
|
name: Lights
|
|
description: Select one or more lights to control.
|
|
selector:
|
|
target:
|
|
entity:
|
|
- domain:
|
|
- light
|
|
no_motion_wait:
|
|
name: Wait Time
|
|
description: Time to leave the light on after last motion is detected.
|
|
default: 120
|
|
selector:
|
|
number:
|
|
min: 0.0
|
|
max: 3600.0
|
|
unit_of_measurement: seconds
|
|
mode: slider
|
|
step: 1.0
|
|
use_custom_settings:
|
|
name: Use Custom Brightness and Color
|
|
description: Enable to use custom brightness and color settings.
|
|
default: false
|
|
selector:
|
|
boolean: {}
|
|
brightness:
|
|
name: Brightness
|
|
description: Set the brightness level (0-255).
|
|
default: 255
|
|
selector:
|
|
number:
|
|
min: 0.0
|
|
max: 255.0
|
|
mode: slider
|
|
step: 1.0
|
|
color:
|
|
name: Color
|
|
description: Set the color (in RGB format).
|
|
default:
|
|
- 255
|
|
- 255
|
|
- 255
|
|
selector:
|
|
color_rgb: {}
|
|
condition_entity:
|
|
name: Condition Entity (Optional)
|
|
description: Select an entity to check its state (optional). If no entity is
|
|
defined, this condition is not evaluated.
|
|
default:
|
|
selector:
|
|
entity: {}
|
|
condition_states:
|
|
name: Allowed States for Condition Entity
|
|
description: Enter the states that the condition entity should be in (comma-separated).
|
|
If a Condition Entity is not defined these values are ignored.
|
|
default:
|
|
selector:
|
|
text: {}
|
|
sun_condition:
|
|
name: Sun Condition (Optional)
|
|
description: Select the sun condition to check.
|
|
default: none
|
|
selector:
|
|
select:
|
|
options:
|
|
- none
|
|
- day
|
|
- night
|
|
multiple: false
|
|
custom_value: false
|
|
sort: false
|
|
sun_offset:
|
|
name: Sun Offset (Optional)
|
|
description: Offset from sunrise/sunset in format 'HH:MM' (e.g., '01:00' or
|
|
'-01:00')
|
|
default: 00:00
|
|
selector:
|
|
text: {}
|
|
blocking_entity:
|
|
name: Blocking Entity (Optional)
|
|
description: Select an entity that will prevent the automation from running
|
|
when in specified states.
|
|
default:
|
|
selector:
|
|
entity: {}
|
|
blocking_states:
|
|
name: Blocking States
|
|
description: Enter the states that will prevent the automation from running
|
|
(comma-separated).
|
|
default:
|
|
selector:
|
|
text: {}
|
|
source_url: https://github.com/iainsmacleod/Home-Assistant-Blueprints/blob/main/advanced_motion_automation.yaml
|
|
mode: restart
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: !input motion_sensors
|
|
to: 'on'
|
|
variables:
|
|
use_custom_settings: !input use_custom_settings
|
|
condition_entity: !input condition_entity
|
|
condition_states: !input condition_states
|
|
sun_condition: !input sun_condition
|
|
sun_offset: !input sun_offset
|
|
blocking_entity: !input blocking_entity
|
|
blocking_states: !input blocking_states
|
|
condition:
|
|
- condition: and
|
|
conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ blocking_entity == None or blocking_entity == '''' }}'
|
|
- condition: template
|
|
value_template: '{% set blocking_states_list = blocking_states.split('','')
|
|
| map(''trim'') | list %} {{ states(blocking_entity) not in blocking_states_list
|
|
}}
|
|
|
|
'
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ condition_entity == None or condition_entity == '''' }}'
|
|
- condition: template
|
|
value_template: '{% set states_list = condition_states.split('','') | map(''trim'')
|
|
| list %} {{ condition_entity != None and condition_entity != '''' and states_list
|
|
| length > 0 and states(condition_entity) in states_list }}
|
|
|
|
'
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ sun_condition == ''none'' }}'
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ sun_condition == ''day'' }}'
|
|
- condition: sun
|
|
after: sunrise
|
|
after_offset: !input sun_offset
|
|
before: sunset
|
|
before_offset: !input sun_offset
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ sun_condition == ''night'' }}'
|
|
- condition: or
|
|
conditions:
|
|
- condition: sun
|
|
after: sunset
|
|
after_offset: !input sun_offset
|
|
- condition: sun
|
|
before: sunrise
|
|
before_offset: !input sun_offset
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ use_custom_settings }}'
|
|
sequence:
|
|
- service: light.turn_on
|
|
target: !input light_targets
|
|
data:
|
|
brightness: !input brightness
|
|
rgb_color: !input color
|
|
default:
|
|
- service: light.turn_on
|
|
target: !input light_targets
|
|
- wait_for_trigger:
|
|
platform: state
|
|
entity_id: !input motion_sensors
|
|
to: 'off'
|
|
- delay: !input no_motion_wait
|
|
- service: light.turn_off
|
|
target: !input light_targets
|