Voice control lets you effortlessly manage lights, thermostats, and robot vacuums in Home Assistant via smart speakers or your smartphone. In the past, setup was typically handled through the Actions on Google console; today, configuration is done via the Google Home Developer Console. Using the cloud-to-cloud method, the integration works reliably.
What You’ll Need
- A working Home Assistant installation with external access via a domain and an SSL certificate
- A Google account
- Access to your installation’s file manager or configuration directory
1. Create a Project in the Google Home Developer Console
Open the Google Home Developer Console and create a new project by clicking Create a Project. Enter a unique project name and click Create project. Make sure to note down the displayed Project ID right away, as you will need it several times.
2. Set Up the Cloud-to-Cloud Integration
Within your project, select Add a Cloud-to-Cloud integration, then click through Next: Develop at the bottom right to Next: Setup. Choose your desired device types and upload an app icon measuring 144 × 144 pixels.
3. Configure Account Linking
In the same menu under Account Linking, enter your server connection details:
- OAuth Client ID:
https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID](replace the placeholder with your actual project ID) - Client Secret: Any string without special characters (not evaluated by Home Assistant)
- Authorization URL:
https://[your-domain:port]/auth/authorize - Token URL:
https://[your-domain:port]/auth/token - Cloud fulfillment URL:
https://[your-domain:port]/api/google_assistant - Scope(s): Add
emailandnameone after the other
Leave the checkbox for transmission via HTTP basic auth header unchecked and save your draft by clicking Save.
4. Create a Service Account and Enable Synchronization
Switch to Analytics in the left-hand menu and navigate to APIs & Services in the Google Cloud Console via the main menu. Enable device synchronization there. Click Credentials > Create credentials > Service account. Enter a name and assign the Service Accounts > Service Account Token Creator role to the account.
Open the newly created service account, go to the Keys > Add key > Create new key tab, and select the JSON format. Download the file and rename it exactly to SERVICE_ACCOUNT.json. Then place this file into your Home Assistant configuration directory—in the same folder where your configuration.yaml is located.
5. Configure Home Assistant
Add the configuration to your configuration.yaml. Adjust the project ID:
google_assistant:
project_id: dein-projektname-12345
service_account: !include SERVICE_ACCOUNT.json
report_state: true
expose_by_default: false
entity_config:
light.wohnzimmer_decke:
expose: true
climate.heizung_wohnbereich:
expose: trueSave the file and restart Home Assistant via the user interface.
6. Link the Service in the Google Home App
Open the Google Home app on your smartphone, tap the plus icon to add devices, and select Works with Google. Search for your project name and sign in using your Home Assistant credentials.
Does It Work?
Once linked, your exposed entities will immediately appear in the Google Home app and can be turned on or off via voice commands or a quick tap.
Troubleshooting
- Login errors in the Google Home app: Your Home Assistant instance must be publicly accessible via HTTPS using a hostname and a valid SSL certificate.
- Devices do not appear: Check your
configuration.yamlto ensure entities are explicitly set toexpose: true, and restart Home Assistant. - Permission errors during state reporting: Verify your sync configuration and make sure the JSON key file is located in the correct configuration folder.
If you prefer to avoid the manual setup across Google’s developer consoles, you can use Nabu Casa instead to enable a ready-made cloud integration in just a few clicks.
Sources: Home Assistant Community Forum, home-assistant.io, simon42.com
