Voice Reminders
My Home Assistant / Assist project to use your voice to create reminders!
Features:
- Inspired by Google assistant and Todoist’s natural language processing, but all local and powered by Assist!
- Takes input like “Remind me in 3 days” or “on tuesday afternoon” to set a due date
- Reminder notifications that can mark tasks complete, snooze them
- Optionally keep reminding you so they can’t be lost if your phone restarts
- Stateful reminders that don’t rely on long waits so they can’t get lost after restarting
Using it
Assist to create reminders
- Remind me to eat some pizza
- Remind me in 3 hours to eat some pizza
- Remind me in 3 days in the morning about eating some pizza
- Remind me tomorrow to eat some pizza
- Remind me tomorrow afternoon to eat some pizza
- Remind me tomorrow in the evening to eat some pizza
- Remind me Friday to eat some pizza
- Remind me Friday evening to eat some pizza
Other Assist sentences
- Show my reminders – takes you to the to-do list
- What are my reminders – lists your next 3 reminders via Assist
Notes and defaults
- “Remind me to eat pizza” will be set in 1 hour
- Others will be set at the time now if you don’t specify “in the morning”, etc.
Adding to your instance
Unfortunately not as easy as a blueprint or using a my.home-assistant link.
Create entities
- A to-do list named Remind Me (todo.remind_me) – this is where tasks will be created
- A boolean/toggle helper called
RemindMe Unforgettable Reminders
– a setting whether to continuously re-send notifications so they can’t get lost - Optional - create a YAML notify group called
Reminder notification group
so you don’t have to rename it in all of the automations, and can send to multiple
Configuration
- Add this file to custom_sentences/en/ – this handles the sentence recognition to call an intent, and has all the combinations of phrases that can be used
- Add this to your configuration.yaml – this is the actual intent that is called
Script and automations
- Create the script RemindMe Creator and copy in this script – this one handles most of the language parsing to decide the datetime for the to-do task (this one must be named so the intent can call it)
- Create the automation RemindMe - Task Reminders and copy in this automation – this one sends the reminders when tasks are due (and overdue)
- Create the automation RemindMe - Actionable Handlers and copy in this automation – this one reacts to the Complete/Snooze buttons on the notifications
- Create the automation “RemindMe - Show My Reminders” and copy in this automation – this one takes you to your to-do list
Give a shout if you try it or have suggestions!
Future improvements
My to-do list
- Assist prompt to list the next 3 reminders via Assist (or just via TTS first)
- Process times like “at 9:30” … not sure if possible
- Handle different users via different lists and recognize the source user
- Reorganize RemindMe Creator into the main configuration intent script?
- Reorganize Reminders to set data and avoid duplicating most of the script for upcoming/overdue
- Try reversed sentences like “remind me to eat pizza in 3 days”
- Try more voice actions like rescheduling tasks
- More options like the default time if not specified
- Add the due date/time to the reminder text
- Tweak the unforgettable reminders
- Have Assist reply back with more info, like confirming the created task’s date/time
- Option to TTS the reminder notifications
- Test for IOS? Holler if you have suggestions
- Make this easier to add? Blueprints?
Wishlist for HA updates:
- Calendar services to update datetime or delete existing events - have to use tasks instead for now but it means we can’t make repeating tasks easily
- Automation trigger from to-do list items becoming due doesn’t exist - have to poll every 15 minutes for now
My inspiration
I have been using Google assistant to set reminders for years. It’s nearly great, but has a couple things I wish I could tweak the behavior. And, now that HA Assist is getting more and more powerful, I wanted to switch over to use it as my primary voice assist on my phone - but I couldn’t give up the ease of voice assist. Now I can!
I tried a few different ways to do this. I thought I could just use HA Assist to just set Google reminders and keep relying on it or the reminder portion. Alas, their API doesn’t support reminder times, only dates for some reason… no dice. So I dove in and implemented reminders.
I found some other reminder inspiration around, but one of my big gripes about Google and the others I found is that there were plenty of ways to accidentally have a reminder slip away and forget about it. So my version is entirely based on the to-do task being marked completely, and is pretty aggressive to send the reminders again until it’s marked as complete.
Unfortunately the Local To-Do and Local Calendar have a couple things lacking, namely To-Do can’t trigger automations, and calendar events can’t be updated or checked off… it was easier to work around using To-Dos.
Todoist has a cool service that can actually be passed the info for its natural language processing, a future version might support that too, but I think their reminder notifications are a paid service.
I’m sure there are better ways to implement a bunch of this - but another goal was to see how far I could go with just the built-in Assist functionality!
Written with StackEdit.