Skip to content

Instantly share code, notes, and snippets.

@gdarko
Forked from Ultra9k/motion_switch_light.yaml
Last active December 17, 2024 15:09
Show Gist options
  • 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: []
@BooWseR
Copy link

BooWseR commented Dec 17, 2024

Wouldn't it make sense to make the offset possible in both directions, e.g. also before sunset?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment