Wake Alarm — sunrise alarms with multi-room music, notifications, and a card [beta]

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.

Repo: GitHub - scootaash/hass-wake-alarm: Sunrise wake-up alarms for Home Assistant. Lights ramp up before alarm time, music fades in at alarm time. Multi-instance, multi-room, custom Lovelace card included. · GitHub

Alarm Card:

Setup Card:

Origin

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)

  1. HACS → ⋮ → Custom repositories → add this URL as Integration
  2. Download → restart HA
  3. Settings → Devices & Services → Add Integration → Wake Alarm
  4. Add type: custom:wake-alarm-card to a dashboard

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)
  • Skip-next-occurrence
  • Voice Assist intents ("snooze ten minutes")
  • TTS announcements (good morning, weather, calendar preview)
  • Calendar-aware skip (bank holidays etc.)
  • Weather-aware ramp adjustments

Where to ask things

  • Bug reports / concrete feature requests → GitHub Issues (forms
    with required fields)
  • How do I…, setup questions, sharing dashboards → here on the
    forum thread
  • Discussion → here, please

Thanks again to steku for the blueprint. Looking forward to hearing how it goes for everyone.

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?

Good shout - i agree, thats a much better idea than mixing two quite different things!

How would you see the workday sensor working - connected to a calendar?

Interesting - do you mean just a sensor that disables/enables it in the same way presence does, just giving more flexibility for connection?

Yes exactly that :smiley:.
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.

1 Like

It would be great if I didn’t have to use a media player, it literally won’t save without it.

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.