Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save imduffy15/88666ca0d0dab55283ad84b57eb136d8 to your computer and use it in GitHub Desktop.
Save imduffy15/88666ca0d0dab55283ad84b57eb136d8 to your computer and use it in GitHub Desktop.
Homeassistant blueprint for motion-activated light scene with surrounding light level check
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
lightsensor_entity:
name: Illuminance Sensor
selector:
entity:
domain: sensor
device_class: illuminance
illuminace_level:
name: Max Illuminance
description: Maximal immuminance level in lx. If illuminance is higher, light will not be enabled
default: 4
selector:
number:
min: 0
max: 9
unit_of_measurement: lx
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment