I love my Google Homes but THE one thing that really bugs me about them is that anytime I want to cast a TTS or sound file to them, they rudely kill my buzz with that annoying “turn-on” prompt sound, (you know the one, “BWOMPT”). For some ridiculous reason, Google allows this to be disabled for Chromecast Audio but not the Homes. I assume one day Google will address this shortcoming but I am not a patient man so I decided to take matters into my own hands.
The first thing I did was test why the prompt sound was happening and it didn’t take long to figure out that sending a cast to the Home when device’s status is set to “Idle,” the prompt doesn’t play, and when it’s status is “off” the prompt plays every time.
I did some testing and discovered the Home will turn itself off exactly 5 minutes after it’s last activity.
So how do we keep the Home from turning off. I first tried to make an automation that sent a “media_player.turn_on” service to all my Homes every four minutes. This ended up not working because for some reason Home Assistant’s “turn_on” command actually works as a toggle on these devices so instead of keeping them awake, it was just flipping them on and off ever four minutes. Bummer, this would have been a really easy solution.
Next I thought how about I play a brief silent mp3 file instead. Will that keep it turned on? YES, this works perfectly! Now anytime I cast an announcement to Google Home, or run my welcome home routine, it acts transparently and just plays what I tell it to play! Finally!
OK, that’s great but the next problem is that it will interrupt things if something else is already playing. Easy enough, I just set a condition in the automation to only play the file if something else isn’t already playing.
The final adjustment was tweaking the frequency because for an unknown reason about every 45 minutes, one of the wake-up pings would fail, a minute later the Home would fall back asleep, and I’d hear the dreaded prompt on the next cycle. I changed the frequency to 2-minute, giving me 2 shots at success in evert five minute sleep cycle.
Here’s the final automation and it seems to be working 100% so far. I haven’t figured out a way to make one automation to handle all of my Homes at once. Grouping them causes the state to report wrong if one is streaming something while the others are idle. For now, I have this whole thing written for each Home separately. I’m betting some of you will look at this and see a simpler way to write the automation. If so, I’d love to see your spin on it! Also, it would be amazing if something like this could be integrated into a “keep alive” feature of the Cast component.
Enjoy!
- alias: Keep Google Home Alive
trigger:
platform: time
minutes: '/2'
seconds: 00
condition:
condition: or
conditions:
- condition: state
entity_id: media_player.bedroom_home
state: 'off'
- condition: state
entity_id: media_player.bedroom_home
state: 'idle'
action:
service: media_player.play_media
entity_id: media_player.bedroom_home
data:
media_content_id: https://hassio.local:8123/local/1sec.mp3
media_content_type: music