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. You can select any number of lights and / or switches.
gist here
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
max: 3600
unit_of_measurement: seconds
# 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"
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: []