Files
home-assistant/blueprints/automation/homeassistant/motion_light_pro_triple.yaml

189 lines
6.0 KiB
YAML

blueprint:
name: Motion-activated-Light PRO (triple motion sensors)
description: Turn on a light when motion is detected PRO (triple motion sensor)
domain: automation
author: Tiziano Trabattoni
input:
motion_entity1:
name: Motion-sensor1
description: First Sensor motion entity
selector:
entity:
filter:
device_class: motion
domain: binary_sensor
motion_entity2:
name: Motion-sensor2
description: Second Sensor motion entity
selector:
entity:
filter:
device_class: motion
domain: binary_sensor
motion_entity3:
name: Motion-sensor3
description: Third Sensor motion entity
selector:
entity:
filter:
device_class: motion
domain: binary_sensor
light_target:
name: Light
description: Entity of the Lamp to be controlled
selector:
target:
entity:
domain: light
use_sun:
name: Sun_driven
description: Controlled by sunrise and sunset flag
default: on
selector:
boolean:
dont_disturb:
name: dont_disturb_light_control
description: Controls if lamp brightness has to be reduced to not disturb
default: on
selector:
boolean:
no_motion_wait:
name: Wait time
description: Time to leave the light on after last motion is detected.
default: 20
selector:
number:
min: 0
max: 300
unit_of_measurement: seconds
# Every motion state change is captured and managed by the script therefore we need to restart by queueing triggers
# in this automation the poweroff of light is started only if all managed motion sensor are in clear state (= "off")
mode: restart
max_exceeded: silent
triggers:
- trigger: state
entity_id: !input motion_entity1
from: "off"
to: "on"
id: motion_entity1_on
- trigger: state
entity_id: !input motion_entity2
from: "off"
to: "on"
id: motion_entity2_on
- trigger: state
entity_id: !input motion_entity3
from: "off"
to: "on"
id: motion_entity3_on
- trigger: state
entity_id: !input motion_entity1
from: "on"
to: "off"
id: motion_entity1_off
- trigger: state
entity_id: !input motion_entity2
from: "on"
to: "off"
id: motion_entity2_off
- trigger: state
entity_id: !input motion_entity3
from: "on"
to: "off"
id: motion_entity3_off
variables:
use_sun_flag: !input use_sun
dont_disturb_flag: !input dont_disturb
light_target_var: !input light_target
motion_entity1_var: !input motion_entity1
motion_entity2_var: !input motion_entity2
motion_entity3_var: !input motion_entity3
actions:
- if:
- condition: trigger
id:
- motion_entity1_on
- motion_entity2_on
- motion_entity3_on
then:
sequence:
- if:
- condition: template
value_template: "{{ use_sun_flag }}"
then: # Sun and luminescence controlled
- if:
- or:
# external light is LOW (below Helper daylight_luminescence set value)
- condition: template
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
# after sunrise and before sunset
- condition: sun
after: sunset
after_offset: "-01:00:00"
before: sunrise
before_offset: "+01:00:00"
then:
- if:
- and:
- condition: template
value_template: "{{ dont_disturb_flag }}"
- condition: template
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
then:
- action: light.turn_on
target: !input light_target
data:
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
color_temp_kelvin: 2500
else:
- action: light.turn_on
target: !input light_target
data:
brightness_pct: 100
color_temp_kelvin: 2500
else: # Always active
- if:
- and:
- condition: template
value_template: "{{ dont_disturb_flag }}"
- condition: template
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
then:
- action: light.turn_on
target: !input light_target
data:
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
color_temp_kelvin: 2500
else:
- action: light.turn_on
target: !input light_target
data:
brightness_pct: 100
color_temp_kelvin: 2500
- if:
- condition: trigger
id:
- motion_entity1_off
- motion_entity2_off
- motion_entity3_off
then:
- if:
- condition: and
conditions:
- condition: template
value_template: "{{ is_state(motion_entity1_var,'off') }}"
- condition: template
value_template: "{{ is_state(motion_entity2_var,'off') }}"
- condition: template
value_template: "{{ is_state(motion_entity3_var,'off') }}"
then:
- alias: "Wait for delay set before turn off"
delay: !input no_motion_wait
- alias: "Turn off the light"
action: light.turn_off
target: !input light_target