Presence Sensor Light automation

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

Turn on / off lights using presence sensor
with configuration like:

  • Brighter percentage
  • Wait time
  • Transition time
  • Light sensor

based on Motion light blueprint from home-assistant.

blueprint:
  name: Presence-activated Light
  description: Turn on a light when presence is detected.
  domain: automation
  source_url: https://github.com/antoniopacheco/presence_light/presence_light.yaml
  input:
    presence_entity:
      name: Presence Sensor
      description: Presence sensor device
      selector:
        entity:
          domain: binary_sensor
          device_class: occupancy
    light_target:
      name: Light
      description: Light device
      selector:
        target:
          entity:
            domain: light
    bright_percentage:
      name: Bright Percentage
      description: Brightness level that the light will turn into once is turned on
      default: 100
      selector:
        number:
          min: 0
          max: 100
          unit_of_measurement: percentage
    no_motion_wait:
      name: Wait time
      description: Time to leave the light on after last motion is detected.
      default: 0
      selector:
        number:
          min: 0
          max: 3600
          unit_of_measurement: seconds
    off_transition:
      name: Transition time
      description: Time in seconds of transition turning off
      default: 0
      selector:
        number:
          min: 0
          max: 60
          unit_of_measurement: seconds
    light_sensor:
      name: Light sensor
      description: Light sensor to read from
      default: []
      selector:
        entity:
          domain:
            - sensor
          device_class:
            - illuminance
          multiple: false
    light_threshold:
      name: Light threshold
      description: Light sensorā€˜s lower threshold
      default: 200
      selector:
        number:
          min: 0
          max: 255

# If presence is detected within the delay,
# we restart the script.
mode: restart
max_exceeded: silent

trigger:
  platform: state
  entity_id: !input presence_entity
  from: "off"
  to: "on"

condition:
  - condition: numeric_state
    entity_id: !input light_sensor
    below: !input light_threshold

action:
  - alias: "Turn on the light"
    service: light.turn_on
    target: !input light_target
    data:
      brightness_pct: !input bright_percentage

  - alias: "Wait until there is no motion from device"
    wait_for_trigger:
      platform: state
      entity_id: !input presence_entity
      from: "on"
      to: "off"
  - alias: "Wait the number of seconds that has been set"
    delay: !input no_motion_wait
  - alias: "Turn off the light"
    service: light.turn_off
    target: !input light_target
    data:
      transition: !input off_transition
2 Likes

Any chance to add an ā€œon_transitionā€ option?

Hereā€™s a version that fixes the deprecated entity selector syntax and adds a condition selector to allow users to impose conditions as desired.
Requires HA 2023.8.0 or newer to handle the condition selector.
You can use what you like here in your main BP, itā€™s all yours. This was done to help one of your users in another thread

blueprint:
  name: Presence-activated Light
  description: Turn on a light when presence is detected.
  homeassistant:
    min_version: 2023.8.0
  domain: automation
  source_url: https://community.home-assistant.io/t/presence-sensor-light-automation/564590
  input:
    presence_entity:
      name: Presence Sensor
      description: Presence sensor device
      selector:
        entity:
          filter:
            domain:
            - binary_sensor
            device_class:
            - occupancy
          multiple: false
    light_target:
      name: Light
      description: Light device
      selector:
        target:
          entity:
          - domain:
            - light
    bright_percentage:
      name: Bright Percentage
      description: Brightness level that the light will turn into once is turned on
      default: 100
      selector:
        number:
          min: 0.0
          max: 100.0
          unit_of_measurement: percentage
          mode: slider
          step: 1.0
    no_motion_wait:
      name: Wait time
      description: Time to leave the light on after last motion is detected.
      default: 0
      selector:
        number:
          min: 0.0
          max: 3600.0
          unit_of_measurement: seconds
          mode: slider
          step: 1.0
    off_transition:
      name: Transition time
      description: Time in seconds of transition turning off
      default: 0
      selector:
        number:
          min: 0.0
          max: 60.0
          unit_of_measurement: seconds
          mode: slider
          step: 1.0
    light_sensor:
      name: Light sensor
      description: Light sensor to read from
      default: []
      selector:
        entity:
          filter:
            domain:
            - sensor
            device_class:
            - illuminance
          multiple: false
    light_threshold:
      name: Light threshold
      description: Light sensorā€˜s lower threshold
      default: 200
      selector:
        number:
          min: 0.0
          max: 255.0
          mode: slider
          step: 1.0
    additional_conditions:
      name: Additional conditions
      description: |
        Extra conditions you may want to add to this automation 
        (Example: Home occupied, TV on, etc)
      default: []
      selector:
        condition:
trigger:
  platform: state
  entity_id: !input presence_entity
  from: 'off'
  to: 'on'
condition:
- condition: numeric_state
  entity_id: !input light_sensor
  below: !input light_threshold
- condition: !input additional_conditions

action:
- alias: Turn on the light
  service: light.turn_on
  target: !input light_target
  data:
    brightness_pct: !input bright_percentage
- alias: Wait until there is no motion from device
  wait_for_trigger:
    platform: state
    entity_id: !input presence_entity
    from: 'on'
    to: 'off'
- alias: Wait the number of seconds that has been set
  delay: !input no_motion_wait
- alias: Turn off the light
  service: light.turn_off
  target: !input light_target
  data:
    transition: !input off_transition

mode: restart
max_exceeded: silent

3 Likes

Hey!
thank you for the solution! but I think there is a minor issue and I couldnā€™t fix it.

That is a false positive. Save to ignore.

If you go to the issue and click thumbs up on my post, it will show others are seeing it as well.

You could also use the long form of the syntax and that wonā€™t kick up in vscode.

2 Likes