Hi all — I've been building Wake Alarm, a Home Assistant integration for sunrise wake-ups: lights ramp from warm-and-dim to cool-and-bright in the run-up to your alarm time, then music fades in at alarm time. Multi-instance, multi-room, with a custom Lovelace card.
I started with steku's parabolic_alarm blueprint — a great blueprint which I've been waking up to for a while. The light curve and the pairing a light ramp with audio replaced an old sunrise lamp I had. My setup outgrew what a single blueprint can comfortably do:
Separate alarms for weekday vs weekend, in different rooms
Multi-room Sonos playback rather than a single speaker
A card on the dashboard to tweak time / days / volume without editing YAML
Notification fallbacks for when a speaker is asleep and the music silently doesn't play (the "lights came on but I missed work" scenario, because the Sonos speaker dropped out)
Persistent media picker — pick a Sonos favourite from the card rather than typing a FV:2/3 ID into a blueprint input
Each of those was awkward to bolt onto a blueprint, so I've rewritten (with a lot of help from Claude) the underlying logic from scratch as a proper custom integration + Lovelace card. The ramp math, Sonos UPnP quirks, and snooze/dismiss flows are all carried forward from the same intent.
What it does
Lights ramp linearly from warm + dim to cool + bright over a configurable duration, ending at your alarm time. 20 steps/min by default;
Never dims a light below its current brightness, so if you brighten the room mid-ramp it stays.
Music fades in from 0 to a configured volume at alarm time, with a random 1–4 track-skip so each fire (and each snooze) starts on a different track from your favourite — not always track 1.
Multi-room playback for speakers that advertise the GROUPING feature (Sonos tested, with all the unjoin / 3-second wait / volume-zero / join / shuffle / settle dance baked in).
Mobile notifications with standard and urgent (critical) paths — distinct iOS interruption-levels and Android channels so you can give them different sounds.
Standard gives a phone option to click snooze
Critical bypasses Do Not Disturb if the speaker fails to play or no media has been picked yet.
Optional presence guard: skip the alarm silently if a configured person isn't home (so my wife isn't irritated to be woken up when I'm away)
Snooze, dismiss, cancel ramp — from the card, the mobile notification action buttons, or wake_alarm.* services.
Custom Lovelace card with day-of-week toggles, time picker, and an in-card media browser. Single HACS install (Integration only) — the card ships inside the integration and auto-registers as a Lovelace resource.
Tested with (only)
Philips Hue + Sonos
HA OS, current build
iOS Companion app
Not tested on Android, not tested with other light / media-player integrations. The integration uses standard HA service calls (light.turn_on, media_player.play_media, etc.) so it should work beyond my setup — reports either way are welcome.
Install (custom repo)
HACS → ⋮ → Custom repositories → add this URL as Integration
This is 0.4.0-beta.1 — you'll need "Show beta versions" enabled in HACS to see it. Full instructions and a "How it works" walkthrough are in the README.
What I'd love feedback on
Does it work - I'd recommend testing a few times before trying overnight
The default ramp parameters
Other light + speaker brands working (or not)
Card UX — anything confusing on first use?
Setup-wizard or read-me wording
Roadmap
Possible ideas:
One-off override (alarm just once, then auto-disable)
looks great!
Very interested in the music fade in and the card!
I run a sunrise wake up alarm myself
a workday sensor (or any sensor) is a must to me to prevent the alarm from running on bank holidays
i would not overload in terms of features.
having the option to run a script before and after the alarm is perhaps wiser than trying to integrate an entire TTS greeting based on your agenda items since this is so personal; A real rabbit hole as well: my TTS has agenda items, traffic on the way to work, garbage notification but only the day before, weather, some local news items that i parsed from rss. Ideally you have a bell sound before the TTS message, you need to choose an AI to generate the text based on your info, another one to speak etc etc
This looks great, i like the idea to have it all in one place.
Is it possible to have a binary_sensor input, as i use a bed sensor so it doesn’t go off when iam not in bed?
Yes exactly that .
And what was stated above is also a nice feature to have, i myself use the workday sensor that home assistant profide at the intergration page.
I’m having trouble with this integration I have an alarm at 6:00 and length 30, it started ramping at 5:30 but at 5:59:52 it stopped and at 5:59:54 it started ramping from zero again for another 30 min almost it stopped at 6:29:47
The integration is controlling one philips hue bulb connected thru zigbee2mqtt.
The way I had written this is that the light ramp triggers a series of steps that control the lighting step up, and then the last one triggers the lights.
The specific problem with this was that rounding in these steps means the trigger isn’t when the alarm expected to be, so the alarm doesn’t fire. Because I tested it on a light ramp of 15 minutes which wasn’t enough for the rounding to become a problem!
However, this made me think of a deeper problem, which is that it’s not sensible for the lights to trigger the alarm as any late related problem means the alarm doesn’t fire, which isn’t very robust.
I’m reworking it to separate the two time cycles, which should solve this problem and make the whole thing more effective.
Thanks again for trying it and for the specific comment which helped me easily get to the bottom of it
Hello — a quick note that 0.5.0 is out. It's a reasonably sizeable update, and a good deal of it came from suggestions and bug reports here and on GitHub, so thanks for those.
A few of the new bits:
/ Lights and speakers are now each optional — a silent sunrise, a music-only alarm, or both.
Three script hooks — run your own automation before (the light ramp starts), at the alarm time itself (new — handy for a coffee machine, a bit of TTS, the blinds, and so on), and after (music ends / dismiss). They run non-blocking, so a slow script won't hold the alarm up.
Condition-sensor gate — only sound the alarm when, say, a bed sensor or the Workday sensor is on, alongside the existing presence check.
Single-speaker shuffle — a single speaker no longer starts on the same track every morning; it now shuffles and skips a random few tracks, as the multi-room path already did.
More robust scheduling — music runs on its own timer now, so a problem with the lights can't stop the alarm; plus restart catch-up and tidier DST handling.
Debug logging and a diagnostics download — to make troubleshooting and bug reports a little easier.
Upgrading should hopefully be seamless via HACS — nothing to re-toggle, and your settings and media selection are kept. Minimum Home Assistant is 2024.6.
To install for now, add https://github.com/scootaash/hass-wake-alarm as a HACS custom repository (category Integration). I've also requested it be added to the HACS default store, though that's in their queue and may take a while, after which it'll show up in HACS directly.