DIY route · Home Assistant guide

DIY Voice Reminder Button
for Someone with Dementia

A one-button voice helper for someone you love, built with Home Assistant (an open-source home-automation platform that runs locally on a small box at home). Press one button and hear the time, the day of the week, today's plans, and any reminders you've added — in a calm, natural voice. No screens, no apps, no wake-word.

Want this without the DIY setup? See the managed version →

Heads up — this is the DIY route

Building this means setting up Home Assistant yourself, creating a free Google Cloud project for the calendar OAuth, and importing an automation. It's not hard if you've ever set up a router or a smart bulb — but it's not a plug-and-play product either.

Good fit if…

  • You're comfortable following technical instructions
  • Your relative is in the mild-to-moderate stages of dementia
  • The home has reliable Wi-Fi
  • Family can manage a shared Google Calendar
  • You'd rather run things locally than pay a subscription

Not the right fit if…

  • You need an emergency or safety-monitoring system
  • A missed reminder would create real medical risk
  • Nobody in the family wants to maintain Home Assistant
  • You want phone support and someone to call

If any of those apply, see RemindMeVoice — the managed version of the same idea, built for families who want spoken reminders without Home Assistant, Google Cloud, or YAML.

At a glance

Time
2–4 hours, more if you're new to Home Assistant
Difficulty
Moderate — fine if you've ever set up a router
Hardware cost
~£150 if buying everything new
Ongoing maintenance
Low, but not zero — occasional Home Assistant updates
Fiddliest step
Google Calendar OAuth (the one-time Cloud Console setup)
Day-to-day for your relative
Press one button → hear the time, the day, and today's plans

You'll also need

  • A free Ethernet port on your relative's router
  • Their Wi-Fi name and password
  • A Google account
  • A shared Google Calendar (the family will add events here)
  • A laptop or phone for the setup itself
  • Someone in the family who can keep an eye on it occasionally

Why I built this

I put the first version of this together for my own family. We'd watched a relative with dementia get lost in clocks, phones, calendars, and well-meaning smart speakers — none of which answered the only question that mattered most days: "What's happening today?" A button and a calm voice answered that cleanly, and kept on answering as things got harder. This guide is that setup, cleaned up so other families can build the same thing.

The problem

Phones, calendars, smart speakers, and apps can be confusing for someone living with dementia. Even reading a clock or making sense of today's date can become an effort — the information is there, but processing it isn't always easy.

Families often want a calm way to remind their relative what's happening today: visits, appointments, mealtimes. Something they don't have to unlock, charge, or learn. Something that just speaks.

That's what this guide builds — a single physical button and a speaker that reads today's plans in plain English. Your relative interacts with one thing. The family adds reminders to a calendar from anywhere.

What this setup does

One button to press. One calm voice. Everything else managed by family.

🔘

One-button simplicity

Press and hold the speaker's button. That's the whole interaction. No menus, no wake-word.

🕙

Time and day, spoken

Each press starts with the day of the week and the time in plain English — useful when reading a clock has become an effort.

🗓️

Today's plans

Reads out calendar events for the day in plain language: visits, appointments, mealtimes.

📡

Managed remotely

Family adds events to a shared Google Calendar from any phone or laptop. No need to be there.

🔒

No always-on mic

The speaker only does something when the button is physically pressed. Nothing listening passively.

🏠

Runs in your home

Home Assistant runs locally on a small device. Calendar and voice are the only cloud parts.

How it works

Four pieces, one flow.

The flow:

  1. Family adds appointments and reminders to a shared Google Calendar.
  2. Home Assistant (running on a small box at your relative's home) checks the calendar.
  3. Your relative presses and holds the button on top of the speaker.
  4. The speaker reads out the day, time, and today's events in a natural voice.

Recommended hardware

Two small devices — that's the entire kit. Both are official Home Assistant products and work together out of the box.

Affiliate disclosure: Some links on this page may be affiliate links. If you buy through them, I may earn a small commission at no extra cost to you. I only recommend hardware I've actually used in this setup, or close equivalents.

Home Assistant Green

~£99

The small green box that runs Home Assistant. Plugs into your relative's router with the included Ethernet cable.

Why you need it: Home Assistant is the brain — it reads the calendar and tells the speaker what to say.
When to skip: If you already run Home Assistant on a Pi, NUC, or similar, you don't need this.

View on Amazon

Home Assistant Voice PE

~£50

The round speaker with a button on top. Plugs into a USB-C power supply and connects to the home Wi-Fi.

Why you need it: This is what your relative actually touches — the speaker and the button are both built in.
When to skip: Don't. The Voice PE's press-and-hold trigger is what makes the whole setup simple.

View on Amazon

Step-by-step setup

Click any step for the full walkthrough. The blueprint at the end takes care of the automation itself — these steps cover everything around it.

  1. Plug in the HA Green Ethernet to the router, USB-C power. Wait for the LED to turn solid green (~2 minutes).
    Show the full walkthrough
    1. Connect the included Ethernet cable from your relative's router to the HA Green's Ethernet port.
    2. Plug the included USB-C power cable into the HA Green and into a wall socket.
    3. Wait around two minutes. The LED on top will pulse while booting, then turn solid green when ready.

    If the LED doesn't turn green

    First boot can take five minutes or more if the device is downloading updates — give it ten before worrying. If it's still pulsing or off after that, check the Ethernet cable is fully seated and the wall socket is on.

  2. Open Home Assistant in a browser Go to http://homeassistant.local:8123 and create your admin account.
    Show the full walkthrough
    1. From a laptop or phone on the same Wi-Fi as the HA Green, open a browser.
    2. Go to http://homeassistant.local:8123.
    3. You'll see "Preparing Home Assistant" — first boot can take up to twenty minutes (it's downloading the latest version). Be patient.
    4. Once ready, follow the prompts to create your admin account, set the home location on the map, and pick country, language and time zone.
    5. Before continuing, install all available updates: Settings → System → Updates. Newer integrations need recent versions of HA.

    If homeassistant.local doesn't load

    Some routers don't resolve mDNS names. Try one of:

    • http://homeassistant:8123 (no .local)
    • Find the IP from the router's admin page — look for a device named homeassistant — and visit http://[that-ip]:8123.
  3. Set up the Voice PE Pair it with the home Wi-Fi over Bluetooth, then let HA auto-discover it under ESPHome.
    Show the full walkthrough
    1. Plug the Voice PE's USB-C power cable into the device and into a wall socket. The LED ring will pulse to show it's in setup mode.
    2. Pair it with your relative's Wi-Fi. The Voice PE uses Bluetooth-based provisioning (the Improv standard). On a phone or laptop with Bluetooth, open home-assistant.io/voice-pe in Chrome (or use the Home Assistant Companion app) and follow the setup flow.
    3. You'll be asked to briefly press the button on top of the Voice PE to confirm pairing. Then enter the home Wi-Fi name and password — the device joins the network.
    4. Once on the network, Home Assistant auto-discovers it. In HA, go to Settings → Devices & Services — you should see a "Discovered" card for the Voice PE. Click Configure to add it.
    5. The device now appears under the ESPHome integration with all its entities.

    Find the entity IDs you'll need later

    Settings → Devices & Services → ESPHome, click on your Voice PE device. You'll see a list of entities — note down the names of:

    • The media player (looks like media_player.home_assistant_voice_XXXXXX_media_player)
    • The button event entity (event.home_assistant_voice_XXXXXX_button_press)
    • The LED ring (light.home_assistant_voice_XXXXXX_led_ring)

    Optional but recommended: silence the single press

    The Voice PE's single press is hardwired at firmware level to the voice assistant pipeline — it can't be turned off, but you can make it do nothing noticeable.

    1. Settings → Voice Assistants → Add Assistant. Name it "Silent". Leave Speech-to-text and Text-to-speech blank. Save.
    2. Back in Settings → Devices & Services → ESPHome → your Voice PE, set both "Assist pipeline" slots to Silent.
    3. Set "Wake word" to no_wake_word in both slots, and turn "Wake sound" off.
  4. Connect a Google Calendar Add the Google Calendar integration in HA — this is the calendar the family will update remotely.
    Show the full walkthrough

    This is the fiddliest part of the whole setup, but you only do it once. You'll need a Google account with access to the calendar your family will use.

    Part A — create the Google Cloud project

    1. Go to console.cloud.google.com and sign in.
    2. Click the project dropdown at the top → New Project. Name it "Home Assistant" → Create.
    3. Make sure the new project is selected in the dropdown.

    Part B — enable the Calendar API

    1. APIs & Services → Library.
    2. Search for "Google Calendar API". Click it → Enable.

    Part C — configure the OAuth consent screen

    1. APIs & Services → OAuth consent screen.
    2. Choose ExternalCreate.
    3. Fill in app name (Home Assistant), your email, support email. Continue through the steps — you can skip the scopes section.
    4. On the OAuth consent overview, click Publish App and confirm. Only your account will use this; publishing just exempts you from being a "test user" who has to re-authorise every week.

    Part D — create OAuth credentials

    1. APIs & Services → Credentials.
    2. + Create Credentials → OAuth client ID.
    3. Application type: Web application. Name: "Home Assistant".
    4. Under Authorized redirect URIs, add: https://my.home-assistant.io/redirect/oauth
    5. Click Create. Copy the Client ID and Client Secret — you'll paste them next.

    Part E — add the integration in HA

    1. Settings → Devices & Services → + Add Integration → "Google Calendar".
    2. Paste your Client ID and Client Secret. Submit.
    3. A new tab opens — sign in to Google and click Allow.
    4. Back in HA, you'll see the calendars on your Google account listed.

    Note the calendar entity ID

    Settings → Devices & Services → Google Calendar — note the entity ID of the calendar you'll use (e.g. calendar.shared_family_calendar). You'll pick this from a dropdown when configuring the blueprint.

  5. (Optional) Set up Google Cloud TTS For a more natural-sounding voice. The built-in Piper TTS works fine if you'd rather skip this.
    Show the full walkthrough

    The local Piper TTS works fine and is fully offline, but Google Cloud TTS sounds dramatically more natural — especially in British English. The free tier covers around a million characters per month, far more than daily button presses will use.

    You'll reuse the same Google Cloud project from the calendar step.

    Enable the Text-to-Speech API

    1. Go to the Text-to-Speech API page.
    2. Make sure your project is selected at the top. Click Enable.

    Create a service account key

    1. Go to Service Accounts.
    2. + Create Service Account. Name: "home-assistant-tts" → Create and Continue.
    3. Skip the role/permissions steps (Continue → Done).
    4. Click your new service account → Keys tab → Add Key → Create new key → JSON → Create.
    5. A .json file will download. Keep it somewhere safe — you'll paste its contents into HA next.

    Add the integration in HA

    1. Settings → Devices & Services → + Add Integration → "Google Cloud".
    2. Paste the entire contents of the .json file. Submit.

    Configure the voice

    1. Settings → Devices & Services → Google Cloud → Configure.
    2. Language: en-GB
    3. Voice: en-GB-Neural2-A (British female, very natural). Try en-GB-Neural2-B for male.
    4. Submit.

    The TTS entity will be tts.google_cloud — you'll pick this in the blueprint.

  6. Import the blueprint One click — see the blueprint section below. Opens directly in your Home Assistant.
  7. Fill in the dropdowns Pick your speaker, calendar, button entity, voice, and your relative's name. No YAML to write.
  8. Test it Press and hold the button. Listen. Adjust the wording, the voice, or the time-of-day greetings to taste.
    Show the full walkthrough
    1. Press and hold the button on top of the Voice PE for around two seconds, then release.
    2. The LED ring should light warm-amber and a voice should start speaking the day's summary.

    If nothing happens

    • Settings → Automations — make sure the imported automation is enabled (toggle on).
    • Click into the automation → Traces tab — recent runs and errors show here.
    • Settings → System → Logs — look for anything red or yellow related to the automation.

    The greeting changes by time of day

    Morning, afternoon, evening, and night each have slightly different greetings. The bedtime nudge between 19:00 and 21:00 is intentional — part of the routine cue, not a bug.

  9. Place and label it Put the speaker somewhere your relative already looks — kitchen table, by their chair. Add a small label: "Press and hold for today's plan."

Pro tip — drive HA from an AI coding agent

If you're comfortable with AI coding tools — Claude Code CLI, GitHub Copilot CLI, Cursor, and similar — Home Assistant's REST API pairs beautifully with them. Create a long-lived access token (your HA profile → Security → Long-Lived Access Tokens), hand it to the agent along with your HA URL, and it can read entity states, push automation tweaks, query the logbook, and debug the daily summary directly from the terminal.

If you want to customise the wording, add new prompts, or troubleshoot remotely, this turns a fiddly UI process into a conversation.

Security note: the token grants full access to your Home Assistant. Use it only on your own machine with tools you trust. Never paste a Home Assistant access token into a public web chat or untrusted tool. Revoke it from the same screen when you're finished.

Import the blueprint

One automation, packaged as a Home Assistant blueprint. Click the button below and it opens directly in your HA — no YAML editing.

What you'll be asked to fill in:

  • Person's name — used in the greeting ("Hello Mum.").
  • Voice PE button event — the device's long-press event entity.
  • Voice PE speaker — the media-player entity that plays the summary.
  • Voice PE LED ring — lit warm-amber while speaking.
  • Text-to-speech engine — Google Cloud TTS for natural voice, or Piper for fully local.
  • Calendar — the shared Google Calendar with today's events.

The blueprint listens for the long-press, fetches today's events from the calendar, and speaks a friendly summary — day, natural time of day, what's on, and gentle bedtime nudges in the evening. The wording is plain English and the cadence is calm.

Import to Home Assistant View blueprint YAML

The import button uses My Home Assistant to open the blueprint in your HA instance — you'll be asked which instance to use the first time.

Safety and limitations

This is not a medical or emergency system

This guide is based on practical family experience. It is not medical advice, clinical care guidance, or an emergency system. For safety, health, medication management, falls, wandering, or urgent care needs, speak to qualified professionals and use dedicated care systems.

Use this setup for everyday convenience, routine support, and reassurance — not as the only thing standing between your relative and a medical or safety problem. Always have backup processes in place: regular check-in calls, a key-holder nearby, and a proper personal alarm if their needs warrant one.

Frequently asked questions

Is this a medical device?
No. It's a practical home automation setup for spoken reminders and daily routines. It is not medical advice, clinical care, or an emergency system, and shouldn't be relied on for safety- or health-critical situations.
Does my relative need to use a smartphone?
No. The whole point is that your relative only ever interacts with a single physical button. Phones, apps, and accounts are for family members on the management side.
Do I need Home Assistant experience?
A little technical confidence helps. If you've ever set up a router or a smart bulb, you can do this. The goal of the blueprint is to make the automation a few dropdowns instead of YAML.
Can family manage the reminders remotely?
Yes — that's the point. Reminders live in a shared Google Calendar. Anyone you invite to that calendar can add or edit events from any phone or laptop, and the next button press reads them out.
Can it remind someone about medication?
It can speak reminders at fixed times, including medication cues. But it should not be relied on as a medication safety system — there's no confirmation that the tablets were actually taken. For anything where missing a dose is a real safety issue, use a proper pill dispenser and human check-ins as well.
Does it need Wi-Fi?
Yes. The Voice PE connects to your relative's home Wi-Fi to talk to Home Assistant, and the calendar / cloud voice need an internet connection. Most modern broadband is reliable enough that brief outages won't matter.
Will this work outside the UK?
The setup itself is country-agnostic — Home Assistant, the Voice PE, and Google Calendar work the same everywhere. Hardware availability, plug types, and retailers vary, so the Amazon links here will be most useful in the UK. Localised guides may be added later.
What happens if the internet goes down?
Home Assistant runs locally on the HA Green, so the button itself keeps working when the internet drops. But Google Calendar can't sync, and Google Cloud TTS can't speak. If you've also configured local Piper TTS (an option in the blueprint), the device can still announce the time and day — just without today's calendar events until the connection comes back.
Can I use Apple Calendar or Outlook instead of Google Calendar?
The guide focuses on Google Calendar because it's the most common in this audience and the integration is well-trodden. Other calendars are possible — Home Assistant's CalDAV integration works with Apple iCloud and Outlook (Outlook needs an app-specific password). The blueprint itself is calendar-agnostic: pick whichever HA integration produces a calendar.* entity and feed it into the blueprint.
Can it speak in other languages?
Yes, depending on the TTS engine. Google Cloud TTS supports dozens of languages and voices (German, French, Danish, Polish, and many more). Piper supports a smaller but still useful set of locally-runnable voices. The day/time wording inside the blueprint is currently English — full localisation would mean translating that Jinja template. Localised versions of this guide may follow.
Can I trigger the reminder remotely?
Possible but not the focus of this guide. Once Home Assistant is on your relative's network, you can use HA's remote access (Nabu Casa Cloud or a self-hosted setup) to call the daily-summary automation manually from afar — useful if you want to nudge them from your own phone. Worth a separate guide rather than complicating this one.
Can I use a separate, bigger button?
Yes. The Voice PE's button is small and sits on top of the device — fine for some, awkward for others. A larger Zigbee button placed somewhere obvious (next to the chair, by the bed) can replace or supplement it. You'd add a Zigbee USB dongle (e.g. Sonoff Zigbee 3.0 Plus) plus a Zigbee button, and tweak the blueprint's trigger to listen for that button instead of the Voice PE's built-in one. Not covered here; planned for a separate TV-control guide that uses the same Zigbee setup.
I'd rather not DIY this — is there a managed product?
Yes. RemindMeVoice is the managed version of this same idea — a single device, set up for you, with a companion app that family use to manage reminders. It's aimed at families who'd rather have something pre-configured than build it themselves.