Control lights based on motion and brightness

Tags: #<Tag:0x00007fc41739a390> #<Tag:0x00007fc41739a2a0> #<Tag:0x00007fc41739a1d8> #<Tag:0x00007fc41739a110>

This is an extension of the included motion sensor blueprint from Home Assistant. I added another sensor for brightness to only turn on lights if is actually dark. This level can be controlled via another input. If you are looking for more details I described it in my blog post.

blueprint:
  name: Motion and brightness activated Light
  description: Turn on a light when motion is detected and it is dark enough (or night).
  domain: automation
  source_url: https://github.com/OliverHi/blueprints/blob/42a969d6a793c818bfc5cd1ca932b4fa08767ae7/motion_brightness_light.yaml
  input:
    motion_entity:
      name: Motion Sensor
      selector:
        entity:
          domain: binary_sensor
          device_class: motion
    brightness_entity:
      name: Lux/Brightness Sensor
      selector:
        entity:
          device_class: illuminance
    light_target:
      name: Light(s) to control
      selector:
        target:
          entity:
            domain: light
    brightness_trigger:
      name: Maximum brightness
      description: Brightness trigger level. If it gets any brighter the lights will not be turned on.
      default: 20
      selector:
        number:
          min: 0
          max: 1000
          unit_of_measurement: lx
    no_motion_wait:
      name: Wait time
      description: Time to leave the light 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"

condition:
  - condition: or
    conditions:
      - condition: sun
        before: sunrise
        after: sunset
      - condition: numeric_state
        entity_id: !input brightness_entity
        below: !input brightness_trigger

action:
  - service: light.turn_on
    target: !input light_target
  - wait_for_trigger:
      platform: state
      entity_id: !input motion_entity
      from: "on"
      to: "off"
  - delay: !input no_motion_wait
  - service: light.turn_off
    target: !input light_target

I am using this with Aqara motion sensors which include a brightness (lux) sensor. This blueprint also includes a condition to turn the lights on during the night (after sunset, before sunrise) regardless of the brightness but you can simply remove that if you want to. The sensors used are connected via ZHA but it should work with any other sensor too.