I did it. I defeated the horrible Google Home "cast-start" prompt sound!


#1

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

Why does "media_player.turn_on" act as a toggle on Google Home/Chromecast devices
Text-to-Speech problem with Chromecast Audio
#2

Great idea. Thanks for sharing


#3

I discovered that the wake up ping was failing about once every 45 minutes. I haven’t taken the time to look in the logs and figure out why. Instead, I just changed the frequency to 2-minutes so there are 2 chances for the action to hit it’s mark in every 5-minute sleep cycle. This seems to be working 100% now.


#4

Great stuff, thanks! Trying it out now :slightly_smiling_face:


#5

I added this for both my GH’s and for “Whole House”. Gonna see how it goes! Great idea!


#6

I didn’t realize that Google Home had this capability (to be able to cast mp3s to it). After seeing this post, I went ahead and bought a Google Home mini with the $29 promotion and $25 back to spend at Walmart and I’m going to use it primarily for voice alerts as part of my overall automation strategy. I currently have a couple of Echo Dots, but I don’t think there’s a way to cast mp3s to it …

Thanks for posting this!

Tom


#7

if it helps, I use my Google Home Mini for voice alerts by simply sending some TTS to it.
For Example it “reads” me the weather forecast in the morning with a few additional bits based on day of the week…

  action:
    # - service: shell_command.play_good_morning
    - service: tts.google_say
      data_template:
        entity_id: media_player.living_room_google_mini
        message: >
          {{["Good morning.","Hello.","Greetings.","Hi."] | random}} It's currently {{states.sensor.dark_sky_summary.state}} and {{states.sensor.dark_sky_temperature.state|round}} degrees. Today will be {{states.sensor.dark_sky_hourly_summary.state|replace(".", "")}}, highs: {{states.sensor.dark_sky_daily_high_temperature.state|round}}, lows: {{states.sensor.dark_sky_daily_low_temperature.state|round}}. Maximum precipitation intensity: {{states.sensor.dark_sky_daily_max_precip_intensity.state | round(2)}} mm. {% if now().strftime("%a") == 'Mon' or now().strftime("%a") == 'Tue' or now().strftime("%a") == 'Thu' %}Estimated travel time to work: {{states.sensor.home_to_verint.state}} minutes.{% endif %} {% if now().strftime("%a") == 'Mon' or now().strftime("%a") == 'Wed' or now().strftime("%a") == 'Fri' %} Remember to empty the vacuum. {% endif %}


#8

Thanks for this, it’s very helpful. I was pretty annoying by the BWOMPT as well.


#9

The Chromecast Audio are great for that too, if you already have stereo/speakers you can use. They cost a little more due to the current Home Mini promotion but the sound quality is greatly enhanced when piped through larger equipment.


#10

Unfortunately, this doesn’t really work for me. I have 2 GHs and I have them in a group called Whole House. If I run the automation on each GH individually, I still get the BEEP when I cast a notification to the whole house. If I run the automation on whole house, it interrupts music when only playing on one. If I run it on all three, they fight for control and I get beeps every couple of minutes


#11

Well that is disappointing. I never tested this with a group. I assume you’re referring to a group set up in the Google Home app, not a Home Assistant group?


#13

/Correct. Whole House is a google group, not HASS


#14

I think you’re going to need some additional conditional logic in the automation and do the following for each GH and possibly for the group as well:

- condition: template
        value_template: >
          {% if is_state('media_player.whole_house', 'playing') %}
            false
          {%-elif is_state('media_player.bedroom_home', 'playing') %}
            false
          {% else %}
            true
          {% endif %}

I’m going to have to go much further as I have 6 GHs, all in different combinations of groups, 10 groups in all…


#15

I don’t think that will totally solve the problem. Voice notifications typically get played over both GH’s via media_player.whole_house, so even when I run the automation on the individual speakers, I still get the beepBOOP when a notification plays on whole_house. If I play the notifications on the individual speakers, they won’t be synced. And if I just run it on whole house, I will still get the beepBOOP when an audio notification, like the cuckoo clock, plays on just one of them.


#16

You’re right. I just did some quick testing and I can’t get groups to not play the beepBOOP. Lame


#17

This is great, but unfortunately now when I open the Home app it has everything as playing something :frowning: Hopefully the add the same CCA option to all devies


#18

just a wild random thought, has anyone tried to set the GH volume to zero or mute when casting anything, wait like 1 sec, then set the volume back to what it was.
the delay prob needs adjusting to ensure the sound that one actually wants to hear isn’t trimmed short.

Just wondering whether that would “hide” the beepBOOP noise…


#19

I tried that too. It simply trades one problem for another. You end up listening to the volume chirp instead. The method I posted here has been working great for me. I don’t use my Homes in groups though. That seems to be the Achile’s heel.


#20

surely using groups via HA rather than the Google Home app would get around the group issue wouldn’t it? That way each Google device is thought of by Google as an individual. I only have one Google Home at the moment but looking at buying more soon, then I can take part in the testing :slight_smile:


#21

The problem with not using the Google Home groups is synchronization. If you just use HASS groups, any announcements to the whole house won’t be synchronized. You also won’t be able to stream music to the whole house.