-
Star
(77)
You must be signed in to star a gist -
Fork
(104)
You must be signed in to fork a gist
-
-
Save sbyx/96c43b13b90ae1c35b872313ba1d2d2d to your computer and use it in GitHub Desktop.
| blueprint: | |
| name: Wake-up light alarm with sunrise effect | |
| description: 'A wake-up light alarm with a brightness and color temperature sunrise | |
| effect. Note: Requires date_time_iso sensor in configuration, not manually executable!' | |
| domain: automation | |
| input: | |
| light_entity: | |
| name: Wake-up light entity | |
| description: The light to control. Turning it off during the sunrise will keep | |
| it off. Color temperature range is auto-detected. | |
| selector: | |
| entity: | |
| domain: light | |
| timestamp_sensor: | |
| name: Alarm timestamp sensor | |
| description: 'Sensor with timestamp of next alarm with device_class: timestamp | |
| (set to ''none'' for manual alarm time)' | |
| default: none | |
| selector: | |
| entity: | |
| device_class: timestamp | |
| manual_time: | |
| name: Manual alarm time | |
| description: Time to trigger alarm every day if timestamp sensor is not set. | |
| Settings at or shortly after midnight will not work as expected! | |
| default: '7:00:00' | |
| selector: | |
| time: {} | |
| check_entity: | |
| name: Additional entity to check before sunrise is triggered | |
| description: If set, checks if entity is 'on' or 'home' before triggering. Use | |
| e.g. a (workday) sensor, device_tracker or person entity. | |
| default: none | |
| selector: | |
| entity: {} | |
| sunrise_duration: | |
| name: Sunrise duration | |
| description: The sunrise will start the configured number of minutes before | |
| the timestamp. | |
| default: 25 | |
| selector: | |
| number: | |
| min: 5.0 | |
| max: 60.0 | |
| step: 5.0 | |
| unit_of_measurement: min | |
| mode: slider | |
| start_brightness: | |
| name: Minimum brightness | |
| description: The brightness to start with. Some lights ignore very low values | |
| and may turn on with full brightness instead! | |
| default: 1 | |
| selector: | |
| number: | |
| min: 1.0 | |
| max: 255.0 | |
| step: 1.0 | |
| mode: slider | |
| end_brightness: | |
| name: Maximum brightness | |
| description: The brightness will be transitioned from the minimum to the configured | |
| value. | |
| default: 254 | |
| selector: | |
| number: | |
| min: 5.0 | |
| max: 255.0 | |
| step: 1.0 | |
| mode: slider | |
| min_mired: | |
| name: Minimum color temperature | |
| description: 'The minimum color temperature to use. (0: lowest supported)' | |
| default: 0 | |
| selector: | |
| number: | |
| min: 0.0 | |
| max: 500.0 | |
| step: 5.0 | |
| mode: slider | |
| unit_of_measurement: mired | |
| pre_sunrise_actions: | |
| name: Pre-sunrise actions | |
| description: Optional actions to run before sunrise starts. | |
| default: [] | |
| selector: | |
| action: {} | |
| post_sunrise_actions: | |
| name: Post-sunrise actions | |
| description: Optional actions to run after sunrise ends (around the alarm time). | |
| default: [] | |
| selector: | |
| action: {} | |
| source_url: https://gist.github.com/sbyx/96c43b13b90ae1c35b872313ba1d2d2d | |
| variables: | |
| light_entity: !input 'light_entity' | |
| sensor: !input 'timestamp_sensor' | |
| sunrise_duration: !input 'sunrise_duration' | |
| start_brightness: !input 'start_brightness' | |
| end_brightness: !input 'end_brightness' | |
| range_brightness: '{{float(end_brightness)-float(start_brightness)}}' | |
| manual_time: !input 'manual_time' | |
| seconds: '{{float(sunrise_duration) * 60}}' | |
| min_mired: !input 'min_mired' | |
| start_mired: '{{state_attr(light_entity, ''max_mireds'')}}' | |
| end_mired: '{{[state_attr(light_entity, ''min_mireds'')|int(0), min_mired|int(0)]|max}}' | |
| tick_time: '{{float(seconds) / float(range_brightness)}}' | |
| check_entity: !input 'check_entity' | |
| trigger: | |
| - platform: time_pattern | |
| minutes: '*' | |
| condition: [] | |
| action: | |
| - wait_template: '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
| - wait_template: '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(states(''sensor.date_time_iso'')) <= float(seconds) | |
| and states(check_entity) in [''unknown'', ''on'', ''home'']}}' | |
| - choose: [] | |
| default: !input 'pre_sunrise_actions' | |
| - condition: template | |
| value_template: '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
| - condition: template | |
| value_template: '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds) and states(check_entity) | |
| in [''unknown'', ''on'', ''home'']}}' | |
| - choose: | |
| - conditions: | |
| - '{{state_attr(light_entity, ''min_mireds'') != None}}' | |
| sequence: | |
| - service: light.turn_on | |
| data: | |
| brightness: '{{start_brightness}}' | |
| color_temp: '{{start_mired}}' | |
| entity_id: !input 'light_entity' | |
| default: | |
| - service: light.turn_on | |
| data: | |
| brightness: '{{start_brightness}}' | |
| entity_id: !input 'light_entity' | |
| - repeat: | |
| while: | |
| - '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
| - '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds)}}' | |
| sequence: | |
| - delay: '{{tick_time}}' | |
| - choose: | |
| - conditions: | |
| - '{{0 < state_attr(light_entity, ''brightness'') | int(0) < end_brightness | | |
| int}}' | |
| - '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
| - '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds)}}' | |
| sequence: | |
| - choose: | |
| - conditions: | |
| - '{{state_attr(light_entity, ''min_mireds'') != None}}' | |
| sequence: | |
| - service: light.turn_on | |
| data: | |
| brightness: '{{(float(end_brightness) - (float(range_brightness) * | |
| (as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(now())) / float(seconds))) | |
| | int(0)}}' | |
| color_temp: '{{(float(end_mired) + (float(start_mired) - float(end_mired)) | |
| * ((as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
| ~ '' '' ~ manual_time) - as_timestamp(now())) / float(seconds))) | |
| | int(0)}}' | |
| entity_id: !input 'light_entity' | |
| default: | |
| - service: light.turn_on | |
| data: | |
| brightness: '{{(float(end_brightness) - (float(range_brightness) * (as_timestamp(states(sensor) | |
| if sensor != ''none'' else states(''sensor.date'') ~ '' '' ~ manual_time) | |
| - as_timestamp(now())) / float(seconds))) | int(0)}}' | |
| entity_id: !input 'light_entity' | |
| - choose: [] | |
| default: !input 'post_sunrise_actions' | |
| mode: single | |
| max_exceeded: silent |
I have this a Post-sunrise action, you could do it pre-sunrise.
action: media_player.play_media
target:
entity_id: media_player.nest_hub_schlafzimmer
data:
media_content_id: media-source://radio_browser/d88c0d24-adb2-11e9-88f4-52543be04c81
media_content_type: audio/aac
metadata:
title: Radio Paradise Mellow Mix AAC 320k
thumbnail: https://radioparadise.com/apple-touch-icon.png
media_class: music
children_media_class: null
navigateIds:
- {}
- media_content_type: app
media_content_id: media-source://radio_browser
- media_content_type: music
media_content_id: media-source://radio_browser/tag
- media_content_type: music
media_content_id: media-source://radio_browser/tag/alternative
It appears that this blueprint might not work in Home Assistant 2026.1 and higher:
WARNING (MainThread) [homeassistant.components.light] Got `color_temp` argument in `turn_on` service, which is deprecated and will break in Home Assistant 2026.1, please use `color_temp_kelvin` argument
So I've created a fork https://gist.github.com/DigitallyRefined/e212f3b96042f265b2c662677fb16d13 that switches over to color_temp_kelvin
Sería posible añadir que además de las luces, en paralelo, se conecte la música de un 'media_player'? No se si es posible ahora mismo
Would it be possible to add that in addition to the lights, in parallel, the music from a 'media_player' is connected? I don't know if it is possible right now.