Files
homeassistant_config/config/blueprints/automation/Twanne/smart_dimmer_version_3.yaml
2024-08-09 06:45:02 +02:00

214 lines
6.2 KiB
YAML

blueprint:
name: Smart Light Dimmer V3.0
description: 'Version 3.0 ! BETA !
Switch or dim lights based on the value of a light sensor.
Light color and temperature can be specified (fixed value).
Settings for brightness, temperature and color above and below min and max values
of the sensor can be set.
'
source_url: https://gist.github.com/Twanne/56791e1917c751de7a72b16ee5e067cd
domain: automation
input:
schedule_start:
name: Schedule start time
description: Automation only runs after this time.
selector:
time: {}
schedule_stop:
name: Schedule stop time
description: Automation does not run after this time.
selector:
time: {}
schedule_days:
name: Run on these days
description: 'Days on which the automation will run.
Write days in short form, seperated by punctuation marks and/or spaces.
(i.e.: mon, tue, wed,...)
'
selector:
text: {}
light_sensor_entity:
name: Light Sensor
selector:
entity:
domain: sensor
device_class: illuminance
multiple: false
max_brightness_value:
name: Maximum ambient light value
description: Maximum ambient light value measured.
default: 500
selector:
number:
min: 0.0
max: 1000.0
step: 10.0
unit_of_measurement: lx
mode: slider
min_brightness_value:
name: Minimum ambient light value
description: Minimum ambient light value measured.
default: 0
selector:
number:
min: 0.0
max: 1000.0
step: 10.0
unit_of_measurement: lx
mode: slider
light_value_1:
name: Dimming value 1
description: Brightness of the light at maximum ambient light.
default: 0
selector:
number:
min: 0.0
max: 100.0
step: 1.0
mode: slider
unit_of_measurement: '%'
light_value_2:
name: Dimming value 2
description: Brightness of the light at minimum ambient light.
default: 100
selector:
number:
min: 0.0
max: 100.0
step: 1.0
mode: slider
unit_of_measurement: '%'
light_brightness_over_max:
name: Brightness when over max ambient.
description: Brightness of the light when the sensor measures over the maximum
ambient light value.
default: 0
selector:
number:
min: 0.0
max: 100.0
step: 1.0
mode: slider
unit_of_measurement: '%'
light_temp_over_max:
name: Light temperature when over max ambient.
description: Temperature of the light when over maximum ambient light value.
default: 2000
selector:
color_temp: {}
light_color_over_max:
name: Light color when over max ambient.
description: Color of the light when over maximum ambient light value.
selector:
color_rgb: {}
light_brightness_under_min:
name: Brightness when under min ambient.
description: Brightness of the light when the sensor measures under the minimum
ambient light value.
default: 100
selector:
number:
min: 0.0
max: 100.0
step: 1.0
mode: slider
unit_of_measurement: '%'
light_temp_under_min:
name: Light temperature when under min ambient.
description: Temperature of the light when under minimum ambient light value.
default: 2000
selector:
color_temp: {}
light_color_under_min:
name: Light color when under min ambient.
description: Color of the light when over under minimum light value.
selector:
color_rgb: {}
light_temp:
name: Light temperature
description: Temperature of the light when between minimum and maximum measured
light values.
default: 2000
selector:
color_temp: {}
light_color:
name: Light color
description: Color of the light when between minimum and maximum measured light
values.
selector:
color_rgb: {}
target_light:
name: Target lights
description: which lights do you want to control?
selector:
target:
entity:
domain: light
mode: single
variables:
light_sensor: !input light_sensor_entity
maxB: !input max_brightness_value
minB: !input min_brightness_value
light1: !input light_value_1
light2: !input light_value_2
slope: '{{ ( light1 - light2 ) / ( maxB - minB ) }}'
constant: '{{ light1 - ( slope * maxB ) }}'
days: !input schedule_days
trigger:
platform: state
entity_id: !input light_sensor_entity
condition:
- condition: numeric_state
entity_id: !input light_sensor_entity
above: !input min_brightness_value
- condition: time
after: !input schedule_start
before: !input schedule_stop
- condition: template
value_template: '{{ now().strftime(''%a'') | lower in days }}'
action:
- choose:
- conditions:
- condition: numeric_state
entity_id: !input light_sensor_entity
above: maxB
sequence:
- service: light.turn_on
data:
brightness_pct: !input light_brightness_over_max
color_temp: !input light_temp_over_max
color_rgb: !input light_color_over_max
target: !input target_light
- conditions:
- condition: numeric_state
entity_id: !input light_sensor_entity
below: minB
sequence:
- service: light.turn_on
data:
brightness_pct: !input light_brightness_under_min
color_temp: !input light_temp_under_min
color_rgb: !input light_color_under_min
target: !input target_light
- conditions:
- condition: numeric_state
entity_id: !input light_sensor_entity
below: maxB
above: minB
sequence:
- service: light.turn_on
data:
brightness_pct: '{{ (( slope_brightness * states(light_sensor)|int ) + constant_brightness)|round
}}'
color_temp: '{{ (( slope_temperature * states(light_sensor)|int ) + constant_temperature)|round
}}'
color_rgb: !input light_color
target: !input target_light