Forked from Ultra9k/motion_switch_light.yaml
Last active
September 24, 2023 20:53
Star
You must be signed in to star a gist
This is a blueprint based on the original motion_light from Home Assistant. This one, however, allows you to control not only lights but also switches when motion is detected.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Motion-activated Switch and/or Light | |
description: Turn on a switch and/or light when motion is detected. | |
domain: automation | |
source_url: https://darkog.com/blog/home-assistant-motion-lights-with-switches/ | |
input: | |
motion_entity: | |
name: Motion Sensor | |
selector: | |
entity: | |
domain: binary_sensor | |
device_class: motion | |
switch_target: | |
name: Switch | |
default: {} | |
selector: | |
target: | |
entity: | |
domain: switch | |
light_target: | |
name: Light | |
default: {} | |
selector: | |
target: | |
entity: | |
domain: light | |
no_motion_wait: | |
name: Wait time | |
description: Time to leave the relay on after last motion is detected. | |
default: 120 | |
selector: | |
number: | |
min: 0 | |
max: 3600 | |
unit_of_measurement: seconds | |
sunset_offset: | |
name: Offset to turn on lights | |
description: Define offset to sunset | |
default: 60 | |
selector: | |
number: | |
min: 0 | |
max: 240 | |
unit_of_measurement: minutes | |
sunrise_offset: | |
name: Offset to turn off lights | |
description: Define offset to sunrise | |
default: 45 | |
selector: | |
number: | |
min: 0 | |
max: 240 | |
unit_of_measurement: minutes | |
# If motion is detected within the delay, | |
# we restart the script. | |
mode: restart | |
max_exceeded: silent | |
trigger: | |
platform: state | |
entity_id: !input motion_entity | |
from: "off" | |
to: "on" | |
condition: | |
- condition: or | |
conditions: | |
- condition: sun | |
after: sunset | |
after_offset: !input sunset_offset | |
- condition: sun | |
before: sunrise | |
before_offset: !input sunrise_offset | |
variables: | |
light_target: !input light_target | |
switch_target: !input switch_target | |
action: | |
- choose: | |
- conditions: "{{ light_target|length > 0 and switch_target|length > 0 }}" | |
sequence: | |
- service: switch.turn_on | |
target: !input switch_target | |
- service: light.turn_on | |
target: !input light_target | |
- wait_for_trigger: | |
- platform: state | |
entity_id: !input motion_entity | |
to: 'off' | |
- delay: !input no_motion_wait | |
- service: switch.turn_off | |
target: !input switch_target | |
- service: light.turn_off | |
target: !input light_target | |
- conditions: "{{ switch_target|length > 0 }}" | |
sequence: | |
- service: switch.turn_on | |
target: !input switch_target | |
- wait_for_trigger: | |
- platform: state | |
entity_id: !input motion_entity | |
to: 'off' | |
- delay: !input no_motion_wait | |
- service: switch.turn_off | |
target: !input switch_target | |
- conditions: "{{ light_target|length > 0 }}" | |
sequence: | |
- service: light.turn_on | |
target: !input light_target | |
- wait_for_trigger: | |
- platform: state | |
entity_id: !input motion_entity | |
to: 'off' | |
- delay: !input no_motion_wait | |
- service: light.turn_off | |
target: !input light_target | |
default: [] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment