Last active
October 3, 2023 13:57
-
-
Save quallenbezwinger/3e5c23acb05fb639bafdc5036b91aae6 to your computer and use it in GitHub Desktop.
Homeassistant blueprint for motion-activated light scene with surrounding light level check
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Motion-activated light scene with surrounding light level check and optional ambient scene | |
description: Turn on a light scene when motion is detected. Three different scenes can be defined depending on time of day. Furthermore a source for checking sourrounding light can be defined to enable light only if it is dark enough. | |
domain: automation | |
source_url: https://gist.github.com/dirkk1980/3e5c23acb05fb639bafdc5036b91aae6 | |
input: | |
motion_entity: | |
name: Motion Sensor | |
selector: | |
entity: | |
domain: binary_sensor | |
device_class: motion | |
lightsensor_entity: | |
name: Illuminance Sensor | |
selector: | |
entity: | |
domain: sensor | |
device_class: illuminance | |
illuminace_level: | |
name: Max Illuminance | |
description: Maximal immuminance level in lux. If illuminance is higher, light will not be enabled | |
default: 600 | |
selector: | |
number: | |
min: 0 | |
max: 5000 | |
unit_of_measurement: lux | |
light_target: | |
name: Light | |
selector: | |
target: | |
entity: | |
domain: light | |
scene_ambient: | |
name: Ambient Scene (Optional) | |
description: Scene for ambient state. Will be activated when no motion is detected and light level is under threshold. Default value = scene.none | |
default: scene.none | |
selector: | |
entity: | |
domain: scene | |
time_scene_ambient_start: | |
name: Ambient time frame start | |
description: Time from which on ambient scene will be activated | |
default: "00:00:00" | |
selector: | |
time: | |
time_scene_ambient_end: | |
name: Ambient time frame end | |
description: Time from which on ambient scene will be not activated | |
default: "00:00:00" | |
selector: | |
time: | |
scene_morning: | |
name: Scene for the morning | |
default: scene.none | |
selector: | |
entity: | |
domain: scene | |
time_scene_morning: | |
name: Time for the morning scene | |
description: A time input which defines the time from which on the scene will be activated if motion is detected. Default value = scene.none | |
default: "00:00:00" | |
selector: | |
time: | |
scene_day: | |
name: Scene for the bright day | |
default: scene.none | |
selector: | |
entity: | |
domain: scene | |
time_scene_day: | |
name: Time for the day scene | |
description: A time input which defines the time from which on the scene will be activated if motion is detected. Default value = scene.none | |
default: "00:00:00" | |
selector: | |
time: | |
scene_evening: | |
name: Scene for the evening | |
default: scene.none | |
selector: | |
entity: | |
domain: scene | |
time_scene_evening: | |
name: Time for the evening scene | |
description: A time input which defines the time from which on the scene will be activated if motion is detected. Default value = scene.none | |
default: "00:00:00" | |
selector: | |
time: | |
scene_night: | |
name: Scene for the dark night | |
default: scene.none | |
selector: | |
entity: | |
domain: scene | |
time_scene_night: | |
name: Time for the night scene | |
description: A time input which defines the time from which on the scene will be activated if motion is detectedd. Default value = scene.none | |
default: "00:00:00" | |
selector: | |
time: | |
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 | |
variables: | |
scene_ambient: !input scene_ambient | |
trigger: | |
platform: state | |
entity_id: !input motion_entity | |
from: "off" | |
to: "on" | |
## condition for illumination has to be checked for every scece and not global. reason: action should be also triggered if no lights should be enabled to switch off ambient scene if it is to bright | |
action: | |
- choose: | |
- conditions: | |
- condition: time | |
after: !input time_scene_morning | |
before: !input time_scene_day | |
- condition: numeric_state | |
entity_id: !input lightsensor_entity | |
below: !input illuminace_level | |
sequence: | |
- scene: !input scene_morning | |
- conditions: | |
- condition: time | |
after: !input time_scene_day | |
before: !input time_scene_evening | |
- condition: numeric_state | |
entity_id: !input lightsensor_entity | |
below: !input illuminace_level | |
sequence: | |
- scene: !input scene_day | |
- conditions: | |
- condition: time | |
after: !input time_scene_evening | |
before: !input time_scene_night | |
- condition: numeric_state | |
entity_id: !input lightsensor_entity | |
below: !input illuminace_level | |
sequence: | |
- scene: !input scene_evening | |
- conditions: | |
- condition: time | |
after: !input time_scene_night | |
before: !input time_scene_morning | |
- condition: numeric_state | |
entity_id: !input lightsensor_entity | |
below: !input illuminace_level | |
sequence: | |
- scene: !input scene_night | |
- wait_for_trigger: | |
platform: state | |
entity_id: !input motion_entity | |
from: "on" | |
to: "off" | |
- delay: !input no_motion_wait | |
- choose: | |
- conditions: | |
- "{{ scene_ambient != 'scene.none'}}" | |
- condition: time | |
after: !input time_scene_ambient_start | |
before: !input time_scene_ambient_end | |
- condition: numeric_state | |
entity_id: !input lightsensor_entity | |
below: !input illuminace_level | |
sequence: | |
- scene: !input scene_ambient | |
default: | |
- service: light.turn_off | |
target: !input light_target |
Hi I'm trying to use this code with Hue sensors, they rely on occupancy sensors not motion sensors and cannot be entered into your file. How do I input occupancy rather than motion into the blueprint.
Sorry if this is a stupid question
Thanks
M4SSO
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi there!
I'm a big fan of this blueprint, but i'm missing a feature that can solve an issue for me :)
Is it possible that you can add a condition that checkes if a phone "device_tracker" is in the zone "Home" before it does anything?
An example:
"motion_entity" triggered <From: off to :on>
condition: check if phone "device_tracker" is home:
If "home" execute what this blueprint normally would do (Turn on the light according to the scene selected)
if "not_home" or "away" execute nothing (Do not turn on the light)
I have tried to implement it myself, but after tons of failures i gave up.
Thanks in advance,
Rasmus