Thanks for this! Bit of a GOTCHA!
Make sure you add the date
sensor and the date_time_iso
sensor.
Thanks for the card info, that’s helpful!
Here’s my boolean helper, created in the “Devices & Services” → “Helpers” section of settings
And here’s my automations:
I could have done this in one automation with “When Bedside Lamps is toggled… toggle Bedside Lamps opposite state” but I wanted to eliminate any error e.g. accidentally manually changing the state of the helper.
I’ve noticed the same at least a couple of times when I switch of my lights with a Hue controller switch. Perhaps it’s something to do with the order of commands received by HA?
e.g. it takes a moment for HA to receive the command of the physical switch press, but the automation already started processing the next step up in brightness and mired in that time, then it executes the switch off, but then it executes the next step up that had already started processing.
The couple of times I’ve experienced this, I’ve found that pressing the switch a second time successfully switched the lamps off.
Hmm, you may be right. It does seem to work after a while but I’ve found sometimes I have to do a dance of turning it off quite a few times until they stay off, which isn’t really what you want first thing in the morning.
Hi @samumar, after reading your post about the dashboard card to control the alarm time, I stumbled across the same issue after creating the input_datetime helper - it wasn’t showing up in the list in the “Alarm timestamp sensor” section.
I realised this is because the automation is looking for a sensor, not an input_datetime entity.
I fixed this by creating a sensor which reads the input_datetime helper. I created the sensor through adding the below code to my configuration.yaml (first I tried to create a template sensor helper, but I couldn’t get the syntax right).
template:
# Create a sensor for the Wake Up Alarm automation to read the input datetime from the dashboard
sensor:
name: "Wake Up Alarm"
unique_id: template_se_alarm_01
state: "{{ (states('input_datetime.wake_up_alarm') | as_datetime | as_local).isoformat() }}"
device_class: timestamp
Now the created sensor appears in the automation
Hope this helps you!
Super, it’s working just fine. Many thanks!!
Great to hear!
I’d be interested to hear if the alarm is now matching your input_datetime entity and not the manual alarm setting in the Automation.
Reason being when I check the state of the sensor.wake_up_alarm in Dev Tools Template, I get “unknown”.
I think there’s an issue with the Device Class “timestamp” expecting a different format than the datetime string provided by the input_datetime entity, I’m working through that now…
Ok, I’ve now fixed my sensor so it’s outputting correctly with the timestamp device class. I needed to change the template state as follows:
{{ (states('input_datetime.wake_up_alarm') | as_datetime | as_local).isoformat() }}
My sensor now outputs as expected:
I also worked out how to add it as a helper entity through the UI in the meantime
Solution found thanks to this post!
Hi, could it be set up like this:
Is there a way to do it or maybe there are other better solutions?
Hi,
I’ve been trying to set an alarm timestamp sensor, in order to be able to change from the dashboard the time I want the automation to run.
I created a time helper input_datetime.wake_up_alarm, and added a sensor in templates.yaml :
sensor:
- name: "Wake Up Alarm"
unique_id: template_se_alarm_01
state: "{{ (states('input_datetime.wake_up_alarm') | as_datetime | as_local).isoformat() }}"
device_class: timestamp
When I set the alarm timestamp sensor to sensor.wake_up_alarm, it doesn’t work as expected.
Am I missing something there ? Could anyone help me ? Thanks
Same here, I am also confused. The help says it needs a “Sensor with timestamp of next alarm with device_class: timestamp”. I tried a template sensor that returns datetime as well as isoformat.
{% set alarm_time = state_attr('sensor.pixel_5_next_alarm', 'Time in Milliseconds') / 1000 %}
{% set alarm_time_dt = as_datetime(alarm_time)| as_local %}
{{alarm_time_dt is datetime}}
{{alarm_time_dt}} # also alarm_time_dt.isoformat()
Both options raising the error
Error: In ‘template’ condition: ValueError: Template error: as_timestamp got invalid input ‘unknown’ when rendering 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’]}}’ but no default was specified
The helper in all cases show a valid value, unsure why it’s unknown
to the blueprint.
Any help is welcome!
Just realizing the problem is states('sensor.date_time_iso')
. I don’t have such a sensor. What should it yield?
@TomTom101 Your hint with the ISO timestamp gave me the right place to look. You have to add the following integration: Time & Date - Home Assistant
Hey guys, Hey @Sbyx,
I have enhanced the Wake-up Light Alarm Blueprint with a few features that I find useful:
A new option called "ignore_future_alarms" has been added. When enabled, alarms set for future days will be ignored, and the manual alarm time will be used instead.
The logic has been adjusted to better handle various alarm situations, including invalid or future alarms.
These changes allow for more flexible use of the blueprint, especially for those who want to use both daily and specific alarms.
Here is the updated code:
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 or ignored. Settings at or shortly after midnight will not work as expected!
default: "7:00:00"
selector:
time: {}
ignore_future_alarms:
name: Ignore future alarms
description: If enabled, alarms set for future dates will be ignored and the manual time will be used instead.
default: false
selector:
boolean: {}
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: {}
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"
ignore_future_alarms: !input "ignore_future_alarms"
trigger:
- platform: time_pattern
minutes: "*"
condition: []
action:
- variables:
sensor_time: >
{% if sensor != 'none' and states(sensor) != 'unavailable' and as_timestamp(states(sensor)) %}
{% if ignore_future_alarms and as_timestamp(states(sensor)) | timestamp_custom('%Y-%m-%d') > now().strftime('%Y-%m-%d') %}
{{ states('sensor.date') ~ ' ' ~ manual_time }}
{% else %}
{{ states(sensor) }}
{% endif %}
{% else %}
{{ states('sensor.date') ~ ' ' ~ manual_time }}
{% endif %}
- wait_template: >
{{ 0 < as_timestamp(sensor_time) - as_timestamp(states('sensor.date_time_iso')) <= float(seconds) and states(check_entity) in ['unknown', 'on', 'home'] }}
- choose: []
default: !input "pre_sunrise_actions"
- service: light.turn_on
data:
brightness: "{{ start_brightness }}"
color_temp: "{{ start_mired if state_attr(light_entity, 'min_mireds') != None else omit }}"
entity_id: !input "light_entity"
- repeat:
while:
- condition: template
value_template: >
{{ 0 < as_timestamp(sensor_time) - as_timestamp(now()) <= float(seconds) }}
sequence:
- delay: "{{ tick_time }}"
- service: light.turn_on
data:
brightness: >
{{ (float(end_brightness) - (float(range_brightness) * (as_timestamp(sensor_time) - as_timestamp(now())) / float(seconds))) | int(0) }}
color_temp: >
{% if state_attr(light_entity, 'min_mireds') != None %}
{{ (float(end_mired) + (float(start_mired) - float(end_mired)) * ((as_timestamp(sensor_time) - as_timestamp(now())) / float(seconds))) | int(0) }}
{% else %}
{{ omit }}
{% endif %}
entity_id: !input "light_entity"
- choose: []
default: !input "post_sunrise_actions"
mode: single
max_exceeded: silent
Let me know what you think!
Hi,
I’m using this blueprint for several months without any problem.
I desactivate it for holidays a week ago and now it’s not working anymore !
I have this message :
Erreur : In 'template' condition: ValueError: Template error: as_timestamp got invalid input 'unknown 06:50:00' when rendering 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']}}' but no default was specified
Do you have any idea of what’s doing wrong ?
Thanks
I’m up to date with core and modules.
I was starting using it today and got the same error.
update:
have a look here:
Perfect ! It works for me !
Many thanks UsefulVid !
This is great, I recently started using it and appreciate the blueprint! Could it be modified to also accept a “Do not run if Sun has risen” sensor? Or some way to gate it between certain hours?
When using my Next Alarm as the trigger it’s less useful if I have an afternoon alarm (or in the summer when the alarm is way after the sun has come up so I wouldn’t need the automation to fire)
I would like to achieve the following:
I set the alarm time with an input_datetime helper. I would like to use this helper as input for your blueprint. I then set the time offset for sunrise in the blueprint. Now I also want a Sonos speaker to start playing a song at the beginning of sunrise. Here, however, the volume should be turned up slowly. There is also another blueprint for this. However, this second blueprint also requires a start time as input. Here I would like to use the start time of the sunrise from your blueprint.
How do I get this time?