Skip to content

Instantly share code, notes, and snippets.

@sheharyarn
Last active November 13, 2024 11:20
Show Gist options
  • Save sheharyarn/ee440fdf7258db79c39e1ebb020d473b to your computer and use it in GitHub Desktop.
Save sheharyarn/ee440fdf7258db79c39e1ebb020d473b to your computer and use it in GitHub Desktop.
Home Assistant Blueprint - Motion-activated light or switch
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://gist.githubusercontent.com/sheharyarn/ee440fdf7258db79c39e1ebb020d473b/raw/motion_light_or_switch.yaml
author: Sheharyar Naseer + Home Assistant
input:
motion_entity:
name: Motion Sensor
selector:
entity:
filter:
- device_class: occupancy
domain: binary_sensor
- device_class: motion
domain: binary_sensor
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