From 29f10e4982c079410779e2d4d4d076cb8e376b8d Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Mon, 9 Jun 2025 22:11:52 +0100 Subject: [PATCH] Add motion sensing lights blueprint --- motion-sensing-lights.yaml | 182 +++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 motion-sensing-lights.yaml diff --git a/motion-sensing-lights.yaml b/motion-sensing-lights.yaml new file mode 100644 index 0000000..7cadd48 --- /dev/null +++ b/motion-sensing-lights.yaml @@ -0,0 +1,182 @@ +# adapted from https://github.com/iainsmacleod/Home-Assistant-Blueprints +blueprint: + name: Motion- or sensor- activated light with brightness and temperature + description: Turn on lights when motion is detected, with brightness and temperature depending on sunrise/sunset (with offsets). + domain: automation + input: + motion_sensors: + name: Motion and Occupancy Sensors + description: Select one or more motion or occupancy sensors. + selector: + entity: + domain: binary_sensor + device_class: + - motion + - occupancy + - door + multiple: true + entity_target: + name: Lights and Switches + description: Select one or more lights or switches to control. + selector: + target: + entity: + domain: + - light + - switch + 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 + use_custom_settings: + name: Use Changing Brightness and Temperature + description: Enable to use brightness and temperature settings based on surrounding lights and light level. + default: true + selector: + boolean: + brightness_bright: + name: Brightness (bright setting) + description: Set the brightness level (0-255) used when high brightness is set. + default: 255 + selector: + number: + min: 0 + max: 255 + brightness_dim: + name: Brightness (dim setting) + description: Set the brightness level (0-255) used when low brightness is set. + default: 150 + selector: + number: + min: 0 + max: 255 + sun_offset_brightness: + name: Sun Offset for Brightness (Optional) + description: Offset from sunrise/sunset in format 'HH:MM' (e.g., '01:00' or '-01:00') at which light brightness reduces. + default: "00:00" + selector: + text: + temperature_cool: + name: Cool temperature + description: A cooler colour temperature, used during the day. + default: 250 + selector: + number: + min: 1.0 + max: 600.0 + step: 1.0 + mode: slider + temperature_warm: + name: Warm temperature + description: A warmer colour temperature, used at night. + default: 375 + selector: + number: + min: 1.0 + max: 600.0 + step: 1.0 + mode: slider + sun_offset_temperature: + name: Sun Offset for Temperature (Optional) + description: Offset from sunrise/sunset in format 'HH:MM' (e.g. '01:00' or '-01:00') at which light temperature turns warm. + default: "00:00" + selector: + text: + +mode: restart +max_exceeded: silent + +trigger: + - platform: state + entity_id: !input motion_sensors + to: "on" + +variables: + use_custom_settings: !input use_custom_settings + entity_target: !input entity_target + +action: + - choose: + - conditions: + - condition: template + value_template: "{{ use_custom_settings }}" + sequence: + - choose: + - conditions: + - condition: template + value_template: "{{ 'light.' in entity_target.entity_id|string }}" + sequence: + + - if: + - condition: sun + after: sunrise + after_offset: !input sun_offset_brightness + before: sunset + before_offset: !input sun_offset_brightness + then: + - variables: + brightness: !input brightness_bright + else: + - variables: + brightness: !input brightness_dim + - if: + - condition: sun + after: sunrise + after_offset: !input sun_offset_temperature + before: sunset + before_offset: !input sun_offset_temperature + then: + - variables: + temperature: !input temperature_cool + else: + - variables: + temperature: !input temperature_warm + + - service: light.turn_on + target: !input entity_target + data: + brightness: "{{ brightness }}" + color_temp: "{{ temperature }}" + - conditions: + - condition: template + value_template: "{{ 'switch.' in entity_target.entity_id|string }}" + sequence: + - service: switch.turn_on + target: !input entity_target + default: + - choose: + - conditions: + - condition: template + value_template: "{{ 'light.' in entity_target.entity_id|string }}" + sequence: + - service: light.turn_on + target: !input entity_target + - conditions: + - condition: template + value_template: "{{ 'switch.' in entity_target.entity_id|string }}" + sequence: + - service: switch.turn_on + target: !input entity_target + - wait_for_trigger: + platform: state + entity_id: !input motion_sensors + to: "off" + - delay: !input no_motion_wait + - choose: + - conditions: + - condition: template + value_template: "{{ 'light.' in entity_target.entity_id|string }}" + sequence: + - service: light.turn_off + target: !input entity_target + - conditions: + - condition: template + value_template: "{{ 'switch.' in entity_target.entity_id|string }}" + sequence: + - service: switch.turn_off + target: !input entity_target