blueprint: name: Motion-activated Light with Conditions, Exceptions, Optional Settings, and Sun Offset description: Turn on lights when motion is detected, with optional brightness and color settings, conditional entity state check, and sun position check with offset. domain: automation input: motion_sensors: name: Motion Sensors description: Select one or more motion sensors. selector: entity: domain: - binary_sensor device_class: - motion multiple: true light_targets: name: Lights description: Select one or more lights to control. selector: target: entity: - domain: - light no_motion_wait: name: Wait Time description: Time to leave the light on after last motion is detected. default: 120 selector: number: min: 0.0 max: 3600.0 unit_of_measurement: seconds mode: slider step: 1.0 use_custom_settings: name: Use Custom Brightness and Color description: Enable to use custom brightness and color settings. default: false selector: boolean: {} brightness: name: Brightness description: Set the brightness level (0-255). default: 255 selector: number: min: 0.0 max: 255.0 mode: slider step: 1.0 color: name: Color description: Set the color (in RGB format). default: - 255 - 255 - 255 selector: color_rgb: {} condition_entity: name: Condition Entity (Optional) description: Select an entity to check its state (optional). If no entity is defined, this condition is not evaluated. default: selector: entity: {} condition_states: name: Allowed States for Condition Entity description: Enter the states that the condition entity should be in (comma-separated). If a Condition Entity is not defined these values are ignored. default: selector: text: {} sun_condition: name: Sun Condition (Optional) description: Select the sun condition to check. default: none selector: select: options: - none - day - night multiple: false custom_value: false sort: false sun_offset: name: Sun Offset (Optional) description: Offset from sunrise/sunset in format 'HH:MM' (e.g., '01:00' or '-01:00') default: 00:00 selector: text: {} blocking_entity: name: Blocking Entity (Optional) description: Select an entity that will prevent the automation from running when in specified states. default: selector: entity: {} blocking_states: name: Blocking States description: Enter the states that will prevent the automation from running (comma-separated). default: selector: text: {} source_url: https://github.com/iainsmacleod/Home-Assistant-Blueprints/blob/main/advanced_motion_automation.yaml mode: restart max_exceeded: silent trigger: - platform: state entity_id: !input motion_sensors to: 'on' variables: use_custom_settings: !input use_custom_settings condition_entity: !input condition_entity condition_states: !input condition_states sun_condition: !input sun_condition sun_offset: !input sun_offset blocking_entity: !input blocking_entity blocking_states: !input blocking_states condition: - condition: and conditions: - condition: or conditions: - condition: template value_template: '{{ blocking_entity == None or blocking_entity == '''' }}' - condition: template value_template: '{% set blocking_states_list = blocking_states.split('','') | map(''trim'') | list %} {{ states(blocking_entity) not in blocking_states_list }} ' - condition: or conditions: - condition: template value_template: '{{ condition_entity == None or condition_entity == '''' }}' - condition: template value_template: '{% set states_list = condition_states.split('','') | map(''trim'') | list %} {{ condition_entity != None and condition_entity != '''' and states_list | length > 0 and states(condition_entity) in states_list }} ' - condition: or conditions: - condition: template value_template: '{{ sun_condition == ''none'' }}' - condition: and conditions: - condition: template value_template: '{{ sun_condition == ''day'' }}' - condition: sun after: sunrise after_offset: !input sun_offset before: sunset before_offset: !input sun_offset - condition: and conditions: - condition: template value_template: '{{ sun_condition == ''night'' }}' - condition: or conditions: - condition: sun after: sunset after_offset: !input sun_offset - condition: sun before: sunrise before_offset: !input sun_offset action: - choose: - conditions: - condition: template value_template: '{{ use_custom_settings }}' sequence: - service: light.turn_on target: !input light_targets data: brightness: !input brightness rgb_color: !input color default: - service: light.turn_on target: !input light_targets - wait_for_trigger: platform: state entity_id: !input motion_sensors to: 'off' - delay: !input no_motion_wait - service: light.turn_off target: !input light_targets