diff --git a/blueprints/automation/motion-light.yaml b/blueprints/automation/motion-light.yaml index a723145..ae1c55e 100644 --- a/blueprints/automation/motion-light.yaml +++ b/blueprints/automation/motion-light.yaml @@ -1,17 +1,18 @@ blueprint: - name: Smart Motion Light with Optional Lux and Global No-Motion Timer - description: Turns on a light when motion is detected, optionally based on lux sensor, dims based on time of day, and turns off using a global no-motion timer. + name: Motion-activated Light with Optional Lux + description: Turn on a light when motion is detected, optionally only if lux is below a threshold. domain: automation + author: Home Assistant input: motion_entity: name: Motion Sensor selector: entity: filter: - - domain: binary_sensor - device_class: motion - - domain: binary_sensor - device_class: occupancy + - device_class: occupancy + domain: binary_sensor + - device_class: motion + domain: binary_sensor light_target: name: Light selector: @@ -27,53 +28,57 @@ blueprint: device_class: illuminance lux_threshold: name: Lux Threshold + description: Only turn on the light if lux is below this value. default: 50 selector: number: min: 0 max: 1000 unit_of_measurement: lx - no_motion_timer: - name: Global No-Motion Timer - description: An input_number entity representing the delay in seconds after motion stops before turning off the light. + no_motion_wait: + name: Wait time + description: Time to leave the light on after last motion is detected. + default: 120 selector: - entity: - domain: input_number + number: + min: 0 + max: 3600 + unit_of_measurement: seconds mode: restart max_exceeded: silent trigger: - platform: state - entity_id: !input.motion_entity + entity_id: !input motion_entity from: "off" to: "on" -condition: [] +condition: + - alias: "Optional lux check" + condition: template + value_template: > + {% if lux_entity %} + {{ states(lux_entity) | float(0) < lux_threshold }} + {% else %} + true + {% endif %} action: - - alias: "Check lux (if defined) before turning on" - choose: - - conditions: - - condition: template - value_template: > - {% if lux_entity %} - {{ states(lux_entity) | float(0) < lux_threshold }} - {% else %} - true - {% endif %} - sequence: - - service: light.turn_on - target: !input.light_target - data: - brightness: "{{ brightness }}" - - alias: "Wait until motion stops" - wait_for_trigger: - - platform: state - entity_id: !input.motion_entity - from: "on" - to: "off" - - delay: - seconds: "{{ states('!input.no_motion_timer') | int }}" - - service: light.turn_off - target: !input.light_target + - alias: "Turn on the light" + service: light.turn_on + target: !input light_target + + - alias: "Wait until there is no motion from device" + wait_for_trigger: + - platform: state + entity_id: !input motion_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