Why is one script not visible in Google Assist but others are?

I use nabu casa to connect to google home assistant.

I have a bunch of scripts that I use by saying “Hey Google, Activate [script]”. All work except one:

Here is the definition of two of them. If I say “Hey google, activate piano christmas” she says “I’m sorry, I do not understand”.

If I say “Hey Google, activate piano religious christmas” it works fine. Or any of the other related (e.g. Piano Jaz, Piano Classic, etc.).

With a device, I can look in the Android Google Home app and see it, but scripts don’t appear there.

I do not disable this in YAML and it’s thus visible because I set up google home via YAML. And the regular voice assistant is enabled also (though not used yet).

I just don’t know where to look – how can I tell if the issue is Nabu Casa not handing it off, or Google not interpreting it – or is there something wrong with my script?

Note the script is there, and works – I can “run” it from the GUI, it works fine, it is active and syntaxes and such. Google just doesn’t “see” it.

Any ideas?

And of course, this time of year, this is the only one I actually USE. :frowning:

Linwood

PS. It does show up under HA’s Settings, Voice Assistant, under the 238 exposed entities there. If I choose HA, Voice Assistant, Google ASsistant, Show Entities it just runs and never comes back (I had never looked there before). My Google Home app on Android shiows devices but not (that I can find) scripts.


play_pianodisc_christmas:
  alias: Piano Christmas
  sequence:
  - service: script.player_piano_on
  - service: kodi.call_method
    data:
      method: Player.Open
      entity_id: media_player.piano
      item: { file:  "special://profile/playlists/music/Pianodisc_Christmas.m3u"}

play_pianodisc_religious_christmas:
  alias: Piano Religious Christmas
  sequence:
  - service: script.player_piano_on
  - service: kodi.call_method
    data:
      method: Player.Open
      entity_id: media_player.piano
      item: { file:  "special://profile/playlists/music/Pianodisc_Religious_Christmas.m3u"}

Post your full google assistant yaml configuration.

I can, but it’s awfully long to cut down on clutter in Google. But here goes. The script excludes are at the bottom.

cloud:
  google_actions:
    filter:
       exclude_domains: 
        - input_boolean
        - camera
       exclude_entities: 
        # Remove the following so they aren't in google assistant twice (from native and from hassio cloud)
        - media_player.livingroom_cast
        - media_player.bedroom_cast
        - media_player.kitchen_cast
        - media_player.office_cast
        
        - media_player.kitchen_mini
        - media_player.master_bedroom_mini
        - media_player.lab_mini
        - media_player.laundry_mini
        - media_player.living_room_mini
        - media_player.office_mini
        - media_player.all_minis

        - media_player.max_left
        - media_player.max_right
        - media_player.dining_room_speakers
        - media_player.master_bedroom_left
        - media_player.master_bedroom_right
        - media_player.master_bedroom_speakers
        - media_player.all_speakers
        - media_player.all_google
        
        - group.all_devices
        - sensor.interior_max_temp
        - sensor.interior_min_temp
        - switch.master_bedroom_closet
        - switch.laundry_room_ceiling
        - switch.garage_ceiling
        - switch.pantry_ceiling
        - switch.master_bathroom_exhaust_fan
        - switch.master_bedroom_ceiling_fan

        - light.spotlight_1
        - light.spotlight_2
        - light.spotlight_3
        - light.spotlight_4
        - light.spotlight_5
        - light.spotlight_6
        - light.spotlight_7
        - light.spotlight_8
        - light.spotlight_birds
        - light.spotlight_number
        
        - light.main_garage_light
        - light.small_garage_light

        - switch.guest_bath_exhaust_reboot
        - switch.master_bath_exhaust_reboot
        - switch.main_garage_exhaust_reboot
        - switch.3d_exhaust_reboot
        - switch.network_closet_exhaust_reboot
        - switch.piano_outlet_reboot
        - switch.small_garage_dht_reboot
        - switch.water_pressure_reboot
        - switch.main_garage_dht_reboot
        - switch.p1s_chamber_dht_reboot
        - switch.den_dht_reboot
        - switch.network_closet_dht_reboot
        - switch.se_outlet_reboot
        - switch.laundry_dht_reboot
        - switch.office_dht_reboot
        - switch.lab_dht_reboot
        - switch.office_outlet_reboot
        - switch.network_closet_reboot
        - switch.piano_color_lights_reboot
        - switch.laundry_reboot
        - switch.patio_reboot
        - switch.main_garage_ceiling_reboot
        - switch.back_porch_reboot
        - switch.shed_flood_light_reboot
        - switch.shed_light_reboot
        - switch.kitchen_closet_reboot
        - switch.coat_closet_reboot
        - switch.master_bedroom_fan_reboot
        - switch.lab_fan_reboot
        - switch.office_fan_reboot
        - switch.living_room_fan_reboot
        - switch.main_garage_reboot
        - switch.diningroom_dht_reboot
        - switch.small_garage_reboot
        - switch.livingroom_dht_reboot

        - sensor.guest_bath_exhaust_rebooted
        - sensor.master_bath_exhaust_rebooted
        - sensor.main_garage_exhaust_rebooted
        - sensor.3d_exhaust_rebooted
        - sensor.network_closet_exhaust_rebooted
        - sensor.piano_outlet_rebooted
        - sensor.small_garage_dht_rebooted
        - sensor.water_pressure_rebooted
        - sensor.main_garage_dht_rebooted
        - sensor.p1s_chamber_dht_rebooted
        - sensor.den_dht_rebooted
        - sensor.network_closet_dht_rebooted
        - sensor.se_outlet_rebooted
        - sensor.laundry_dht_rebooted
        - sensor.office_dht_rebooted
        - sensor.lab_dht_rebooted
        - sensor.office_outlet_rebooted
        - sensor.network_closet_rebooted
        - sensor.piano_color_lights_rebooted
        - sensor.laundry_rebooted
        - sensor.patio_rebooted
        - sensor.main_garage_ceiling_rebooted
        - sensor.back_porch_rebooted
        - sensor.shed_flood_light_rebooted
        - sensor.shed_light_rebooted
        - sensor.kitchen_closet_rebooted
        - sensor.coat_closet_rebooted
        - sensor.master_bedroom_fan_rebooted
        - sensor.lab_fan_rebooted
        - sensor.office_fan_rebooted
        - sensor.living_room_fan_rebooted
        - sensor.main_garage_rebooted
        - sensor.diningroom_dht_rebooted
        - sensor.small_garage_rebooted
        - sensor.livingroom_dht_rebooted

        - binary_sensor.my_ev6_locked
        - binary_sensor.my_ev6_hood
        - binary_sensor.my_ev6_trunk
        - binary_sensor.my_ev6_door_front_left
        - binary_sensor.my_ev6_door_front_right
        - binary_sensor.my_ev6_door_rear_left
        - binary_sensor.my_ev6_door_rear_right
        - binary_sensor.my_ev6_engine
        - binary_sensor.my_ev6_tire_pressure_all
        - binary_sensor.my_ev6_hvac
        - binary_sensor.my_ev6_defroster
        - binary_sensor.my_ev6_rear_window_heater
        - binary_sensor.my_ev6_side_mirror_heater
        - binary_sensor.my_ev6_steering_wheel_heater
        - binary_sensor.my_ev6_low_fuel_light
        - binary_sensor.my_ev6_charging
        - binary_sensor.my_ev6_plugged_in
        - button.my_ev6_request_wake_up_from_car_hurts_12v_battery
        - climate.my_ev6_climate
        - device_tracker.my_ev6_location
        - lock.my_ev6_door_lock
        - number.my_ev6_ac_charging_limit
        - number.my_ev6_dc_charging_limit
        - sensor.my_ev6_api_action_in_progress
        - sensor.my_ev6_ev_battery
        - sensor.my_ev6_odometer
        - sensor.my_ev6_last_synced_to_cloud
        - sensor.my_ev6_last_synced_from_cloud
        - sensor.my_ev6_next_service_mile
        - sensor.my_ev6_set_temperature
        - sensor.my_ev6_estimated_current_charge_duration
        - sensor.my_ev6_range_by_ev
        - sensor.my_ev6_range_total
        - sensor.my_ev6_12v_battery
        - switch.my_ev6_charging
        - switch.my_ev6_climate_desired_defrost
        - switch.my_ev6_climate_desired_heating_acc

        - switch.small_garage_learn
        - lock.small_garage_lock_remotes
        - switch.main_garage_learn
        - lock.main_garage_lock_remotes
  
        - script.send_test_email
        - script.play_music_by_voice
        - script.landscape_test
        - script.toggle_landscape_normal
        - script.toggle_landscape_christmas
        - script.toggle_landscape_halloween
        - script.toggle_landscape_minimal
        - script.home_away_run
        - script.show_something_on_tv
        - script.talktoparrot_routine
        - script.talktoparrotinoffice
        - script.talktoparrotinkitchen
        - script.talktoparrotinlaundry
        - script.tvforparrot_routine
        - script.tvforparrotinoffice
        - script.tvforparrotinkitchen
        - script.tvforparrotinbedroom

I probably should have tried this earlier, but anyway…

play_pianodisc_christmas:
  alias: Piano Secular Christmas
  sequence:

Changing to add one word in there fixes it, google will recognize “Hey google, activate Piano Secular Christmas” but not without “secular” (or I assume most any other word).

There’s something about the phrase “Piano Christmas” that is not working.

My problem is I have absolutely no idea how to find where the problem lies.

It may be a conflict on Google homes side.

Yeah, but that’s the problem. in the Android Home app, scripts do not show. At least I cannot find them at all. But Google voice commands can “activate” them.

That means HA is sending Nabu Casa the script info (name at least) and Nabu Casa is sending it to Google. One of three things seems to happen:

  • HA is not sending to Nabu Casa
  • Nabu Casa didn’t send to Google
  • Google isn’t able to process the voice into a match with it.

Since I have no visibility into any of those three (or more precisely if I do have visibility I don’t know how to look), I don’t know where to start?

Is there visibility?

I guess I’ll just change the name. Was hoping for insight as to whether this was a nabu casa issue or a google issue, some way to see inside the black box they collectively are.

HA is not a black box and you can see exactly what is sent to google from HA under the voice assistants area. The only black box is google.

Nabucasa’s code is open source, and it just passes what HA sends. There’s nothing to it.

Thanks. Though open source is not exactly the same as being able to see that it does indeed pass what it receives, it would be nice if there were logs one can look at. Looking at the code only helps if you are REALLY patient or have something specific to look for.

What’s missing in my mind is that, if it were a light, I can see how the name (etc) appears on my google home app. Scripts however don’t seem to appear anywhere visible in Google. So knowing that Nabu Casa passed it on (and it was accepted) is a bit of a black box. Maybe google is rejecting it and nabu casa knows, but has no mechanism to tell me?

Let me give you a (possibly) related example: “Sync my devices” always says “one or more devices are not available, you may want to try setting them up again”. As best I can tell there’s absolutely no feedback available as to WHICH device is not available. That sure seems like somethiing nabu casa would know? Could log? At least by exception? Maybe not.

But the whole nabu casa ↔ google thing to me is a black box when things go wrong, and doesn’t seem designed to provide adequate feedback. I think Nabu Casa could do better (it’s clear no one could convinced Google to do better).

And yes, quite literally I have the “one or more devices” now, and zero idea which one. Sometimes I can find something that has gone unavailable, but not now.

You can see what HA sends when enabling debug logging.