Skip to content

Instantly share code, notes, and snippets.

@HarvsG
Created November 23, 2022 18:48
Show Gist options
  • Save HarvsG/e01d589e2eadd056521101ea98a44ac4 to your computer and use it in GitHub Desktop.
Save HarvsG/e01d589e2eadd056521101ea98a44ac4 to your computer and use it in GitHub Desktop.
HA Blueprint to match color temperature of lights to the sun - mireds
blueprint:
name: Match Outside Colour Temperature
description: When a light turns on or the sun elevation changes match the outside colour temperature. It will apply to any bulb that supports color temperature. It triggers whenever a bulb turns on, on sun elevation changes and every 5 minutes.
domain: automation
input:
target_lights:
name: Lights
description: The lights to be controlled
selector:
entity:
domain: light
multiple: true
min_color_temp:
name: Minimum Color Temperature
description: The coolest color your bulbs will be set to
default: 250
selector:
color_temp:
min_mireds: 153
max_mireds: 500
max_color_temp:
name: Maximum Color Temperature
description: The warmest color your bulbs will be set to
default: 454
selector:
color_temp:
min_mireds: 153
max_mireds: 500
brightness_action:
name: Brightness
description: When a device turns on its color temperature will be set, this may interfere with the brightness, this action will run half a second later to set the light's brightness.
selector:
action:
default:
- service: light.turn_on
data:
brightness: >-
{{max(trigger.to_state.attributes.brightness,2)}}
target:
entity_id: >-
{{trigger.entity_id}}
alias: Default - Set light to its original brightness, don't use brightness 1 as it causes issues with some bulbs
variables:
target_lights: !input target_lights
target_on_lights: >-
{{states.light | selectattr('state','eq','on') |
selectattr('attributes.supported_color_modes','match',".*color_temp.*")
| map(attribute='entity_id') | select("in",target_lights) | list }}
min_color_temp: !input min_color_temp
max_color_temp: !input max_color_temp
color_temp: >-
{{ [([((1000000/(4791.67 - 3290.66/(1 + 0.222 *
([([0,state_attr('sun.sun',
'elevation')]|max),90]|min**0.81))))|int),min_color_temp]|max),max_color_temp]|min}}
trigger:
- platform: state
entity_id: !input target_lights
to: "on"
id: single_light_on
- platform: state
entity_id:
- sun.sun
attribute: elevation
id: elevation_change
- platform: time_pattern
minutes: "5"
id: every_5_min
condition:
- condition: template
value_template: >-
{{ (states.light | selectattr('state','eq','on') |
map(attribute='entity_id') | list)!= [] }}
action:
- choose:
- conditions:
- condition: trigger
id: single_light_on
sequence:
- service: light.turn_on
data:
color_temp: "{{color_temp}}"
transition: 0
target:
entity_id: "{{trigger.entity_id}}"
- delay:
milliseconds: 500
- choose:
default: !input brightness_action
- conditions:
- condition: or
conditions:
- condition: trigger
id: every_5_min
- condition: trigger
id: elevation_change
sequence:
- service: light.turn_on
data:
color_temp: "{{color_temp}}"
transition: 5
target:
entity_id: "{{target_on_lights}}"
mode: parallel
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment