Google Assistant SDK


The Google Assistant SDK integration allows Home Assistant to interact with Google Assistant. If you want to use Google Assistant (for example, from your phone or Google Home device) to interact with your Home Assistant managed devices, then you want the Google Assistant integration.

This integration allows:

  • Sending text commands to Google Assistant to control devices supported by Google Assistant but not by Home Assistant. Examples:
    • Set Nest Guard to home and guarding
    • Start vacuuming
    • Stream front door on living room TV
    • Turn off kitchen TV
    • Play rain sounds on bedroom speaker
  • Broadcast messages to Google Assistant speakers and displays without interrupting music/video playback. Examples:
    • Coffee is ready
    • Someone is at the front door
    • Smoke detected in the master bedroom
    • Water leak detected in the master bathroom
  • Playback Google Assistant audio response for any query on any media player. Examples:
    • Tell me a joke
    • Say the ABC
    • Sing happy birthday
    • What does the elephant say?
  • Having a conversation with Google Assistant using the conversation integration via text or voice.

Prerequisites

You need to configure developer credentials to allow Home Assistant to access your Google Account. These credentials are the same as the ones for Nest or Google Sheets. If you have already set up credentials, you can do step 1 and then skip to step 13 on the below instructions.

Configuration

Adding Google Assistant SDK to your Home Assistant instance can be done via the user interface, by using this My button:

The integration setup will next give you instructions to enter the Application Credentials (OAuth Client ID and Client Secret) and authorize Home Assistant to access your Google Assistant API.

Troubleshooting

If you have an error with your credentials you can delete them in the Application Credentials user interface.

If commands don’t work try removing superfluous words such as “the”. E.g. “play rain sounds on bedroom speaker” instead of “play rain sounds on the bedroom speaker”.

If broadcasting doesn’t work, make sure: the speakers aren’t in do not disturb mode, the Home Assistant server is in the same network as the speakers, and IPv6 is disabled in the router.

Limitations/known issues

Multiple Google accounts are not supported.

Limitations of the underlying library are listed here (media playback, routines, and personal results are not working).

Configuration

On the configure page, you can set the language code of the interactions with Google Assistant. If not configured, the integration picks one based on Home Assistant’s configured language and country. Supported languages are listed here

Services

Service google_assistant_sdk.send_text_command

You can use the service google_assistant_sdk.send_text_command to send commands to Google Assistant.

Service data attribute Optional Description Example
command no Command(s) to send to Google Assistant. turn off kitchen TV
media_player yes Name(s) of media player entities to play response on media_player.living_room_speaker

Examples:

service: google_assistant_sdk.send_text_command
data:
  command: "turn off kitchen TV"
# Say a joke on the living room speaker
service: google_assistant_sdk.send_text_command
data:
  command: "tell me a joke"
  media_player: media_player.living_room_speaker

You can also send multiple commands in the same conversation context which is useful to unlock doors or open covers that need a PIN. Example:

service: google_assistant_sdk.send_text_command
data:
  command:
    - "open the garage door"
    - "1234"

Service notify.google_assistant_sdk

You can use the service notify.google_assistant_sdk to broadcast messages to Google Assistant speakers and displays without interrupting music/video playback.

Service data attribute Optional Description Example
message no Message to broadcast. someone is at the front door
target yes Rooms (in Google Assistant) bedroom

Example to broadcast to all speakers:

service: notify.google_assistant_sdk
data:
  message: time for dinner

Example to broadcast to speakers in selected rooms:

service: notify.google_assistant_sdk
data:
  message: time for dinner
  target:
    - bedroom
    - basement

Conversation agent

In the configure options of the integration, enable the conversation agent and then you can converse with Google Assistant by tapping the Assist icon at the top right of your dashboard:

Screenshot Conversation

Or by calling the conversation.process service with the transcribed text:

service: conversation.process
data:
  text: "Dim the family room lights"

Note: due to a bug in the Google Assistant API, not all responses contain text, especially for home control commands, like turn on the lights. These will be shown as <empty response>. For those, Google Assistant responds with HTML and Home Assistant integrations are not allowed to parse HTML.