Skip to content

Instantly share code, notes, and snippets.

@Ultra9k
Last active April 9, 2024 19:03
Show Gist options
  • Save Ultra9k/6ea1205463a3266ef36e35e1b9d61dec to your computer and use it in GitHub Desktop.
Save Ultra9k/6ea1205463a3266ef36e35e1b9d61dec 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
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.0
max: 3600.0
unit_of_measurement: seconds
mode: slider
step: 1.0
mode: restart
max_exceeded: silent
trigger:
platform: state
entity_id: !input 'motion_entity'
variables:
light_target: !input 'light_target'
switch_target: !input 'switch_target'
command: '{{ trigger.to_state.state }}'
action:
- choose:
- conditions: '{{ light_target|length > 0 and switch_target|length > 0 and command=="on"}}'
sequence:
- service: switch.turn_on
target: !input 'switch_target'
- service: light.turn_on
target: !input 'light_target'
- conditions: '{{ switch_target|length > 0 and command=="on"}}'
sequence:
- service: switch.turn_on
target: !input 'switch_target'
- conditions: '{{ light_target|length > 0 and command=="on"}}'
sequence:
- service: light.turn_on
target: !input 'light_target'
- conditions: '{{ light_target|length > 0 and switch_target|length > 0 and command=="off"}}'
sequence:
- 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 and command=="off"}}'
sequence:
- delay: !input 'no_motion_wait'
- service: switch.turn_off
target: !input 'switch_target'
- conditions: '{{ light_target|length > 0 and command=="off"}}'
sequence:
- 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