Files
home-assistant-config/blueprints/automation/giannisigalotti/motion-activated-light.yaml
T
fkrebs 5f01411780 chore: initial baseline before refactoring
Initial snapshot of Home Assistant config (HAOS 2026.4.4)
prior to dashboard restructuring and helper YAML migration.

Pre-commit cleanup applied:
- Removed blueprints/switch_manager/ (9.4 MB stale, component already gone)
- Removed .storage/switch_manager
- Removed home-assistant.log.{1,old,fault}
- Removed zigbee2mqtt/configuration_backup_v{1..4}.yaml
- Removed zigbee2mqtt/database.db.tmp.2024-09-27 (1.5y old)
- Created empty themes/ to satisfy configuration.yaml include

.gitignore uses allowlist strategy for .storage/ to keep
all tokens, keys, and PINs out of version control.
2026-05-02 14:24:53 +02:00

201 lines
6.4 KiB
YAML

blueprint:
name: Motion-activated Light extended
description: Turn on a light when a movement occurs
domain: automation
source_url: https://github.com/giannisigalotti/HomeAssistant/blob/main/blueprints/motion-activated-light.yaml
input:
motion_entity:
name: Motion sensor
selector:
entity:
domain:
- binary_sensor
multiple: false
light_target:
name: Light
selector:
target:
entity:
- domain:
- light
no_motion_wait:
name: Wait time
description:
The time to wait before turning off the light after no movement
is detected.
default: 120
selector:
number:
min: 0.0
max: 3600.0
unit_of_measurement: seconds
mode: slider
step: 1.0
skip_if_light_is_on:
name:
Do not execute if the light is already on (prevent auto-turn-off if the
light was turned on manually).
selector:
boolean: {}
default: false
no_sunset_handling:
name: Disable day/night management?
description:
When you turn this option to off, you can define how many hour
before sunset and after sunshine the automation turn on the light
selector:
boolean: {}
default: false
wheater_handling:
name: Enable meteo managment?
description:
Does it also take weather into account to enable/disable motion
sensors (use the time range only when it's sunny and disable otherwise)?
selector:
boolean: {}
default: false
wheater_entity:
name: Weather status sensor
description:
This sensor is used only with the Meteo managment option to determine
if the weather is sunny or not (useful if you are in a room usually dark in
case of bad weather condition
selector:
entity:
domain:
- weather
multiple: false
default: weather.home
sunset_start_hh:
name: Pre-sunset hours activation
description:
How many hours before sunset does the management activate (negative
numbers indicate a delay)?
selector:
number:
min: 0.0
max: 12.0
unit_of_measurement: hours
mode: slider
step: 1.0
default: 0
sunset_start_mm:
name: Pre-sunset minutes activation
description:
How many minutes before sunset does the management activate (negative
numbers indicate a delay)?
selector:
number:
min: 0.0
max: 59.0
unit_of_measurement: minutes
mode: slider
step: 1.0
default: 0
sunrise_start_hh:
name: Post-sunrise hours activation
description:
How many hours after sunrise does the management deactivate (negative
numbers indicate an advance)?
selector:
number:
min: 0.0
max: 12.0
unit_of_measurement: hours
mode: slider
step: 1.0
default: 0
sunrise_start_mm:
name: Post-sunrise minutes activation
description:
How many minutes after sunrise does the management deactivate (negative
numbers indicate an advance)?
selector:
number:
min: 0.0
max: 59.0
unit_of_measurement: minutes
mode: slider
step: 1.0
default: 0
timeout:
name: Deactivation timeout?
description:
After how many minutes does the switch turn off automatically (-1
if no timeout)
selector:
number:
min: -1.0
max: 60.0
unit_of_measurement: minutes
mode: slider
step: 1.0
default: 5
mode: restart
max_exceeded: silent
trigger:
platform: state
entity_id: !input motion_entity
from: "off"
to: "on"
variables:
dusk_start_hour: !input sunset_start_hh
dusk_start_minute: !input sunset_start_mm
rising_start_hour: !input sunrise_start_hh
rising_start_minute: !input sunrise_start_mm
use_weather: !input wheater_handling
skip_light_on: !input skip_if_light_is_on
target_lights: !input light_target
force_skip:
"{{ skip_light_on and\n (expand(\n (([] if target_lights.device_id
is undefined\n else target_lights.device_id | device_entities\n if
target_lights.device_id is string\n else target_lights.device_id
| map('device_entities') | sum(start=[]) )\n +\n ([]
if target_lights.entity_id is undefined\n else [target_lights.entity_id]\n
\ if target_lights.entity_id is string\n else target_lights.entity_id
))\n | select('search', '^light\\.') | list\n ) | selectattr('state',
'eq', 'on') | list | length > 0)\n}}\n"
sun_rising:
"{% if (states.sun.sun.state == \"above_horizon\") %}\n {{ states.sun.sun.last_changed
}}\n{%- else -%}\n {{ states.sun.sun.attributes.next_rising }}\n{%- endif %}\n"
sun_dusk:
"{% if (states.sun.sun.state == \"above_horizon\") %}\n {{ states.sun.sun.attributes.next_dusk
}}\n{%- else -%}\n {{ states.sun.sun.last_changed }}\n{%- endif %}\n"
wheater_sensor: !input wheater_entity
no_sunny_wheater: "{{ states(wheater_sensor) != 'sunny' and use_weather }}
"
condition:
- condition: and
conditions:
- condition: template
value_template: "{{ not force_skip }}"
- condition: or
conditions:
- condition: template
value_template: !input no_sunset_handling
- condition: template
value_template: "{{ no_sunny_wheater }}"
- condition: and
conditions:
- "{{ as_timestamp(now()) >= ((as_timestamp(sun_dusk) - dusk_start_hour*3600
- dusk_start_minute*60) )}}"
- "{{ as_timestamp(now()) < ((as_timestamp(sun_rising) + rising_start_hour*3600
+ rising_start_minute*60) )}}"
action:
- service: light.turn_on
target: !input light_target
- wait_for_trigger:
platform: state
entity_id: !input motion_entity
from: "on"
to: "off"
timeout:
hours: 0
minutes: !input timeout
seconds: 0
milliseconds: 0
- delay: !input no_motion_wait
- service: light.turn_off
target: !input light_target