diff --git a/blueprints/automation/motion-light.yaml b/blueprints/automation/motion-light.yaml deleted file mode 100644 index 3ddfed2..0000000 --- a/blueprints/automation/motion-light.yaml +++ /dev/null @@ -1,124 +0,0 @@ -blueprint: - 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: ChatGPT - input: - motion_entity: - name: Motion Sensor - selector: - entity: - filter: - - device_class: occupancy - domain: binary_sensor - - device_class: motion - domain: binary_sensor - light_target: - name: Light - selector: - target: - entity: - domain: light - lux_entity: - name: Lux Sensor (optional) - default: "" - selector: - entity: - domain: sensor - 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_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 - -mode: restart -max_exceeded: silent - -trigger: - - platform: state - entity_id: !input motion_entity - from: "off" - to: "on" - -variables: - lux_entity_var: !input lux_entity - lux_threshold_var: !input lux_threshold - target_entity: "{{ expand(!input light_target) | map(attribute='entity_id') | list | first }}" - supports_brightness: > - {{ 'brightness' in state_attr(target_entity, 'supported_color_modes') | default([]) }} - -condition: - - alias: "Optional lux check" - condition: template - value_template: > - {% if lux_entity_var | length > 0 and states(lux_entity_var) not in ['unknown','unavailable','none',''] %} - {{ states(lux_entity_var) | float(0) < lux_threshold_var | float(0) }} - {% else %} - true - {% endif %} - -action: - - alias: "Set dynamic brightness" - variables: - max_brightness: 255 - sun_elevation: "{{ state_attr('sun.sun','elevation') | float(0) }}" - current_lux: > - {% if lux_entity_var | length > 0 %} - {{ states(lux_entity_var) | float(0) }} - {% else %} - 0 - {% endif %} - brightness: >- - {% set base = 50 %} - {% if sun_elevation > 10 %} - {% set base = 100 %} - {% elif sun_elevation > 0 %} - {% set base = 150 %} - {% else %} - {% set base = 200 %} - {% endif %} - {% if current_lux > 50 %} - {% set base = base - ((current_lux / 500) * base) | int %} - {% endif %} - {{ [base, max_brightness] | min }} - - - alias: "Turn on the light safely" - choose: - - conditions: - - condition: template - value_template: "{{ supports_brightness }}" - sequence: - - service: light.turn_on - target: !input light_target - data: - brightness: "{{ brightness }}" - default: - - service: light.turn_on - target: !input light_target - - - alias: "Wait until there is no motion" - wait_for_trigger: - - platform: state - entity_id: !input motion_entity - from: "on" - to: "off" - - - delay: !input no_motion_wait - - - alias: "Turn off the light" - service: light.turn_off - target: !input light_target \ No newline at end of file