blueprint: name: Smart Lux Dimmer author: AntonH description: 'Version 4.3 Switch or dim lights based on the value of a light sensor. Light colors or temperature can be set to a fixed value when inside or outside the measuring range (different values are possible). Settings for brightness, color or temperature outside min and max values of the sensor can be set. To smoothen out transitions, a time can be set where the light will move from the current to the new brightness. ' source_url: https://gist.github.com/Twanne/02dfb154084a8b9bf927c29160df4af3 domain: automation input: light_sensor_entity: name: Light Sensor description: Which light sensor do you want to use to measure the ambient light value? selector: entity: filter: - domain: - sensor device_class: - illuminance multiple: false target_light: name: Target lights description: Which lights do you want to control? selector: target: entity: - domain: - light run_conditions: name: Conditions description: 'Only run when these conditions are met. (Remove Time Condition if not needed) ' default: - condition: time selector: condition: {} max_brightness_value: name: Maximum ambient light value description: Dynamically change the light so long as the ambient light stays under this value. 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: Dynamically change the light so long as the ambient light stays above this value. default: 0 selector: number: min: 0.0 max: 1000.0 step: 10.0 unit_of_measurement: lx mode: slider light_value_1: name: Brightness at maximum light level description: Brightness of the light at maximum ambient light. default: 0 selector: number: min: 0.0 max: 100.0 step: 1.0 unit_of_measurement: '%' mode: slider light_value_2: name: Brightness at minimum light level description: Brightness of the light at minimum ambient light. default: 100 selector: number: min: 0.0 max: 100.0 step: 1.0 unit_of_measurement: '%' mode: slider transition_time: name: Transition time description: 'The time it takes for the light to transition from the set value to the next. WARNING: this can smoothen the transition, but your light needs to support it. ' default: 0 selector: number: min: 0.0 max: 300.0 step: 1.0 unit_of_measurement: s mode: slider include_color_or_temp: name: Include color or temperature description: Do you want to set a color or temperature value for the light? default: include_no_color_temp selector: select: options: - label: I don't want to set color or temperature value: include_no_color_temp - label: Set color value: include_color - label: Set temperature value: include_temp custom_value: false sort: false multiple: false light_color: name: Light color description: Color of the light when between minimum and maximum ambient light values. selector: color_rgb: {} default: - 255 - 255 - 255 light_temp: name: Light temperature description: Temperature of the light when between minimum and maximum ambient light values. default: 2000 selector: color_temp: {} include_brightness_over_under: name: Include brightness values when outside range description: I want the automation to set a brightness when the ambient light goes outside of the set range. (Over maximum and under minimum ambient) default: false selector: boolean: {} light_brightness_over_max: name: Brightness when ambient light value over max. description: Brightness of the light when the ambient light is higher than the set maximum value. default: 0 selector: number: min: 0.0 max: 100.0 step: 1.0 unit_of_measurement: '%' mode: slider light_brightness_under_min: name: Brightness when ambient light value under min. description: Brightness of the light when the ambient light is lower than the set minimum value. default: 100 selector: number: min: 0.0 max: 100.0 step: 1.0 unit_of_measurement: '%' mode: slider include_color_or_temp_over_under: name: Include color or temperature values when outside range description: 'Set a color or temperature value for the light when over maximum or under minimum ambient light value? **''Include values for under min and over max'' MUST BE TRUE** ' default: include_no_color_temp_outside_range selector: select: options: - label: I don't want to set color or temperature when outside range value: include_no_color_temp_outside_range - label: Set color when outside range value: include_color_outside_range - label: Set temperature when outside range value: include_temp_outside_range custom_value: false sort: false multiple: false light_color_over_max: name: Color when ambient light value over max. description: Color of the light when the ambient light is higher than the set maximum value. selector: color_rgb: {} default: - 255 - 255 - 255 light_color_under_min: name: Color when ambient light value under min. description: Color of the light when the ambient light is lower than the set minimum value. selector: color_rgb: {} default: - 255 - 255 - 255 light_temp_over_max: name: Temperature when ambient light value over max. description: Temperature of the light when the ambient light is higher than the set maximum value. default: 2000 selector: color_temp: {} light_temp_under_min: name: Temperature when ambient light value under min. description: Temperature of the light when the ambient light is lower than the set minimum value. default: 2000 selector: color_temp: {} mode: single variables: include_color_or_temp: !input include_color_or_temp include_brightness_over_under: !input include_brightness_over_under include_color_or_temp_over_under: !input include_color_or_temp_over_under light_sensor: !input light_sensor_entity max_brightness_value: !input max_brightness_value min_brightness_value: !input min_brightness_value maxB: '{{ max_brightness_value * 2.55 }}' minB: '{{ min_brightness_value * 2.55 }}' light_value_1: !input light_value_1 light_value_2: !input light_value_2 light1: '{{ light_value_1 * 2.55 }}' light2: '{{ light_value_2 * 2.55 }}' slope: '{{ ( light1 - light2 ) / ( maxB - minB ) }}' constant: '{{ light1 - ( slope * maxB ) }}' light_brightness_over_max: !input light_brightness_over_max light_brightness_under_min: !input light_brightness_under_min brightness_over_max_pct: '{{ light_brightness_over_max * 2.55 }}' brightness_under_min_pct: '{{ light_brightness_under_min * 2.55 }}' triggers: trigger: state entity_id: !input light_sensor_entity conditions: !input run_conditions actions: - choose: - conditions: - condition: template value_template: '{{ include_brightness_over_under is false }}' sequence: - choose: - conditions: - condition: template value_template: '{{ include_color_or_temp == "include_no_color_temp" }}' sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' target: !input target_light - conditions: - condition: template value_template: '{{ include_color_or_temp == "include_color" }}' sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' rgb_color: !input light_color target: !input target_light - conditions: - condition: template value_template: '{{ include_color_or_temp == "include_temp" }}' sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' color_temp: !input light_temp target: !input target_light - conditions: - condition: template value_template: '{{ include_brightness_over_under is true }}' sequence: - choose: - conditions: - condition: template value_template: '{{ include_color_or_temp_over_under == "include_no_color_temp_outside_range" }}' sequence: - choose: - conditions: - condition: numeric_state entity_id: !input light_sensor_entity above: !input max_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_over_max_pct }}' target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_under_min_pct }}' target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input max_brightness_value above: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' target: !input target_light - conditions: - condition: template value_template: '{{ include_color_or_temp_over_under == "include_color_outside_range" }}' sequence: - choose: - conditions: - condition: numeric_state entity_id: !input light_sensor_entity above: !input max_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_over_max_pct }}' rgb_color: !input light_color_over_max target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_under_min_pct }}' rgb_color: !input light_color_under_min target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input max_brightness_value above: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' rgb_color: !input light_color target: !input target_light - conditions: - condition: template value_template: '{{ include_color_or_temp_over_under == "include_temp_outside_range" }}' sequence: - choose: - conditions: - condition: numeric_state entity_id: !input light_sensor_entity above: !input max_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_over_max_pct }}' color_temp: !input light_temp_over_max target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ brightness_under_min_pct }}' color_temp: !input light_temp_under_min target: !input target_light - conditions: - condition: numeric_state entity_id: !input light_sensor_entity below: !input max_brightness_value above: !input min_brightness_value sequence: - action: light.turn_on data: transition: !input transition_time brightness: '{{ (( slope * states(light_sensor)|int ) + constant)|round }}' color_temp: !input light_temp target: !input target_light