Skip to content

Instantly share code, notes, and snippets.

@gdarko
Forked from Ultra9k/motion_switch_light.yaml
Last active September 24, 2023 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdarko/f1719e92dea8abb651709eddd703b238 to your computer and use it in GitHub Desktop.
Save gdarko/f1719e92dea8abb651709eddd703b238 to your computer and use it in GitHub Desktop.
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.
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