blueprint: name: Smart Motion Light with Optional Lux Trigger and Time-Based Dimming description: Turns on a light when motion is detected or when lux drops below a threshold (if sensor is defined), dims based on time, and turns off when no motion. domain: automation input: motion_entity: name: Motion Sensor selector: entity: filter: - domain: binary_sensor device_class: motion - domain: binary_sensor device_class: occupancy light_target: name: Light selector: target: entity: domain: light lux_entity: name: Lux Sensor (optional) default: null selector: entity: domain: sensor device_class: illuminance lux_threshold: name: Lux Threshold default: 50 selector: number: min: 0 max: 1000 unit_of_measurement: lx no_motion_wait: name: Wait Time After Motion Stops default: 120 selector: number: min: 0 max: 3600 unit_of_measurement: seconds mode: restart max_exceeded: silent trigger: # Motion trigger - platform: state entity_id: !input motion_entity from: "off" to: "on" # Optional lux trigger - platform: template value_template: > {% if lux_entity %} {{ states(lux_entity) | float(0) < lux_threshold and (states(motion_entity) == 'on' or (as_timestamp(now()) - as_timestamp(states(motion_entity))) < 300) }} {% else %} false {% endif %} condition: [] action: - alias: "Turn on the light with calculated brightness" 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" - alias: "Wait the configured delay" delay: !input.no_motion_wait - alias: "Turn off the light" service: light.turn_off target: !input.light_target