Motion controlled lights and / or switches

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

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

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: []
1 Like

Thank you it’s very good but the condition “delay” i recommend you replace it with “for”

Hey @Ultra9k - Nice work here. Is it possible to include “Times of day” conditions?

1 Like