Calendar-aware smart home wake-up routine
Every weekday at 5:30am, your lights, thermostat, and coffee start themselves based on your first real meeting, not a fixed alarm.
Build me an agent workflow that wakes my house up around my actual calendar each weekday morning, instead of running a fixed routine I have to manually override every time my schedule changes.
Trigger: cron, Monday through Friday at 05:30 in my local timezone.
Integrations: Google Calendar and Home Assistant.
Step 1. Pull today's events from Google Calendar using List Events on my primary calendar, for the window from now until end of day local time. Expand recurring events into individual instances and order by start time.
Step 2. Before touching anything in the house, call Home Assistant List Services so the agent only references domains and services that actually exist on my instance. Also use Get State to check the relevant entities up front: I want to skip anything that is already on, and I want to respect an optional boolean entity for guest mode or vacation (something like input_boolean.guest_mode or input_boolean.vacation_mode). If that entity exists and is on, the workflow should stop silently with no device changes.
Step 3. Reason about the first real commitment of the day and pick a wake profile:
- A very early hard commitment, like a 7am flight or an airport pickup, means a hard wake. Start immediately at 05:30 or 05:45, bedroom and kitchen lights to 100 percent, thermostat to a comfortable morning target, coffee maker on now.
- A normal morning meeting around 9am or 10am means a soft ramp. Start about 90 minutes before the meeting, bedroom lights at low brightness ramping up, kitchen lights on closer to wake time, thermostat adjusted, coffee on about 20 minutes before I would get out of bed.
- An afternoon-only or empty day means do nothing and exit. Specifically: if today's first non-all-day event starts after 12:00 local, skip everything.
Step 4. Once the agent has decided the profile and the start time, control the house through Home Assistant Call Service. Concretely: light.turn_on on the bedroom and kitchen light entities at the chosen brightness, climate.set_temperature on the bedroom or main thermostat with the chosen target, switch.turn_on on the coffee or kettle switch, and optionally media_player.play_media or media_player.select_source on a media_player entity for a morning playlist. Use only domains and services that came back from List Services, and only entities that came back from Get State, so it never tries to control something that does not exist.
Guardrails:
- Never fire the wake scene more than once per day. If the workflow has already run today, exit.
- If today's first real event is later than noon, do nothing.
- If the guest-mode or vacation boolean entity is on, do nothing and exit silently.
- Skip any device that Get State reports as already on, so I do not get a brightness reset or a thermostat jump if I am already up.
- All-day events should not count as the first commitment of the day. Look at the first timed event.
The agent should be able to explain in its run notes which event it keyed off, which profile it picked, and which entities it actually touched, so I can tune the rules over time.
Additional information
What does this prompt do?
- Reads your Google Calendar each weekday morning and finds your first real commitment of the day.
- Picks a wake profile from the event: a sharp early start for a flight, a softer ramp for a 10am meeting, nothing at all for an empty day.
- Turns on the right lights at the right brightness, sets the thermostat, starts the coffee, and optionally plays a morning playlist.
- Stays quiet on weekends, vacation days, and days where nothing happens until after lunch.
What do I need to use this?
- A Google Calendar account with the events you want the routine to read.
- A Home Assistant setup with the lights, thermostat, coffee switch, and any media player you want involved.
- Optional: a boolean helper in Home Assistant for guest mode or vacation, so the routine skips on travel days.
How can I customize it?
- Change the wake rules: which event types trigger a hard wake, which ones get a gentle ramp, and how early to start before each.
- Swap the devices: pick different lights, a different thermostat target, a kettle instead of a coffee maker, or skip the music.
- Adjust the quiet-day rules: change the cutoff time, exclude all-day events, or add other calendars to the check.
Frequently asked questions
Do I have to wake up at 5:30am every day for this to work?
What if I am on vacation or have a guest staying over?
Will it work with my specific lights, thermostat, or coffee maker?
Can I use a different calendar instead of my main Google one?
How is this different from a regular Home Assistant automation?
Stop being woken up at 6am on a day with no meetings.
Connect Home Assistant and Google Calendar once, and Geni handles the rest every weekday morning.