Home-Assistant: Wake Up Alarm with a Phone Call
March 9, 2021Video Demo:
Update 2/25/2022
I put together the video above and presented the project during the Twilio Services Kickoff Demo Jam competition -- I got 3rd place! Woohoo🥉
Motivation:
Sometimes it's hard for me to get out of bed in the morning. I've tried a ton of things:
- Waking up to music
- Automations that turn the lights on gently to simulate a sunrise
- Setting multiple alarms across the room
- An Accountability Buddy / Internet Stranger to check in with each other in the morning to make sure we're up
- Apps that ask me to do math problems
But I always enjoyed getting the wake up call on business trips. Going off of that idea, I set up a landline in my house and acquired a really annoying loud phone with an actual bell to call me in the morning and wake me up with a quick math problem to get my brain activity going.
If this doesn’t work, I’ll have to look into making an ejector bed lol
Try it out yourself:
Call this number: (415) 358-6870
It will ask you a simple math question and tell you if you’re right or wrong. If you get scared talking to people on the phone, don’t be. It’s just a robot on the other side.
Getting Started on the Twilio Console
First, I pulled up the Twilio Console and purchased a phone number ($1/mo)
Next, I navigated into Twilio Studio and built a Studio Flow that calls you when you hit the Studio Flow URL with a request from Home-Assistant.
I've glossed over how I created the Flow, but it went through a couple iterations. Basically, I built a function that picks a random, whole, positive number in a simple equation that always returned a whole and positive number as an answer. It's running in a Twilio Function that is run during the call, so there is sometimes a longer pause because it has to run the function a few times if one of the conditions isn't met. I'm sure there are better ways to accomplish it, but this works for me. The entire interaction is less than 30 seconds.
After that I needed a way in Home-Assistant to trigger the REST command and ultimately in an automation.
Home-Assistant REST Command:
This REST command triggers a phone call to the number specified in it.
rest_command:
twilio_alarm:
url: "https://studio.twilio.com/v2/Flows/FW79cc6cc54bddc17e431f9e3d27fe8da1/Executions"
method: POST
headers:
Content-Type: "application/x-www-form-urlencoded"
username: ACxxxxxxxxxx9918e978bdb60ca6a90f5c
password: bxxxxxxxxxxxaf5cc3d655d5fef5cf15b
payload: "To=+16501234567&From=+14153586870"
# replace the To Number with yours. Leave the From Number as is -- this is the number you’ll get a call from!
# keep the URL the same to use my Flow!
Home-Assistant Automation:
I’m using Node-Red to trigger my wake up automation. It looks like there’s a lot going on, but basically I only trigger the the alarm based on certain conditions:
- A switch on the dashboard is turned on (for example, I turn it off during a holiday)
- I’m physically home
- It’s a work day at 7am
You can also trigger the REST command with a normal automation within Home-Assistant.
Triggering a Test Call
During the testing phase, I wanted a button on my dashboard that I could press and trigger the phone call. Unfortunately, it’s never that easy lol -- I had to use a custom button-card so I could call a service (the REST command) from the button. You can’t trigger a service from a normal button card!
Bonus: Get a landline to connect a “old” telephone
Last thing is I needed a landline. I bought a Grandstream HT801 Analog Telephone Adapter and set it up with Twilio SIP. You can read more about how I set that up in this blog post. I plugged it in, configured it, and then connected it to my home phone network.
Once I did that, I was able to have an old landline telephone connected to the Telephone network with a phone number.
Now every morning, I get a wake up call and it asks me to do a simple math question. Nothing peaks my anxiety like trying to solve mental math questions on the spot early in the morning!
Future Ideas
It'd be fun to see if I can pull a Quote of the Day from an API to provide morning motivation to users getting ready to wake up.
This was added!
Setting it up for yourself
If you're interested in setting this up for yourself, please contact me. I'm happy to help you set this up and we might be able to set up a way where you can use my Studio Flow and Phone Number.