This commit is contained in:
Bastian Schnorbus
2025-05-04 15:46:15 +02:00
parent dc9575ff33
commit 188671fd7e
7 changed files with 637 additions and 2 deletions

View File

@@ -0,0 +1,193 @@
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