Setting up Google Actions for Assistant

Yes, those are supposed to match. I’ve updated it in my documentation PR.

continuing from github…

ok no errors in hass now
but now ithe Home app attempts to link the device and returns
Couldn’t update setting. Check your connection.
i saw earlier you had a similar issue?

Make sure the client_id and access_token does not contain special chars (Only use alphanumeric characters), try making the client_id less than 20 chars long, and the access_token less than 80. Also make sure that the url in your projects.yaml is correct and that you are using a HTTPS connection that is not using a selfsigned cert (Use a Let’s Encrypt cert, it’s free).

Also I’m not sure how many devices are supported by the Google Home, try only exposing lights?

all alphanumeric
client id = 18 chars token 54
but i am using a self signed certificate that I just put on there for this component.

I still cannot get past the error in the Home App
“Couldn’t update setting. Check your connection.”
is it essential that we cannot use a self signed certificate?
something of a nightmare for those of us who do not require remote access if we have to set up a letsencrypt. duckdns for one component.

The valid SSL certificate requirement is because the requests come from Google’s servers and they check the cert. Unfortunately I don’t have any control over that.

i understand
but is using a self signed certificate on a local home assistant installation causing the problem
(as opposed to setting up through a CA)?

certificate created per instructions here

I’m 99% sure Google won’t allow selfsigned, you can get around it locally by adding the CA in your cert store, but you can’t add that same cert on Google’s servers. I’m not sure which platform you are running HASS on, but if you have access to a docker host, you could use something like this: https://github.com/linuxserver/docker-letsencrypt

That would probably be the easiest way to set it up, as cert creation and such is totally automated.

Also if you set it up for remote access, you may find use cases for having remote access (We use it at home to signal trying to get hold of the person at home, if the person does not pick up the phone, as we often put them down somewhere when at home).

I’m just happy that Google actually trust the Let’s Encrypt cert, as we would otherwise have to pay for a cert.

sounds good
I am running hass in a virtualenv on raspbian
I just wanted to make sure I wasn’t going off on a quest to break an otherwise functioning Home Assistant install for no reason,
thanx for the help

Thank you @PhilK

What about acces_token? I have the access_token in config yaml file along with client_id.

access_token: [a different long url safe random string]

I generated this token using www.base64encode.org but I didn’t find any reference if this token needed to be linked anywhere during the project setup process at Google.

@sbmlat nope, the access_token gets passed back to Google during the auth step and used in requests.

Think of it like:
Google: “Hello, I’m client_id abc123”
Hass: “Hi client_id abc123, your access_token is ReallySecretPassword”
Google: “Cool”
Google: “Hi, I’m abc123 and my token is ReallySecretPassword. What devices do you have?”
Hass: “Here you go!”

@kylerw in reply to your PR comments

I don’t have a fan to test with so that one might be a bit of a challenge. I’ll need to look at how the fan entity works and think through it a bit.

SYNC is how it gets new devices but before today there wasn’t actually a way to trigger that outside of going into the app and manually triggering it. Today along with all the new traits and types they added Request Sync…I’m just not sure where that should live yet. Possibly a service that can be called at will and maybe triggered on startup? Optional parameter to do it on a timer? Haven’t thought through it too much yet.

Also interesting about your problem with rooms (which I agree is a super pain) is the roomHint field. You could add an attribute to your entities like google_assistant_room: bedroom and have it automatically go to the right place, but from reading the dev info it doesn’t actually do anything with those fields yet.

1 Like

Having a Google Home since a couple of weeks, I was really disappointed by the capabilities (or lack of), especially here in France. This is just amazing. I’ve got a question, though: when testing a “normal” (not a Smart Home one) project, the testing ran by either the web UI or the gactions executable is time-limited. Is this different with Smart Home applications?

I’m on hassio and getting the 500 error and from what I’ve read, it is caused by not updating the init.py in the http folder. Is there any way to alter this file in hassio? I tried copying the contents of components/http (via git) and putting it in custom_components/http,but it didn’t seem to work.

Haven’t had a chance to test this yet, but let me say THANK YOU to everyone who has put in time and work on this so far!!! The home assistant community is the best!

2 Likes

Will this work now? Or do i have to wait for a new home assistant release? If it works, can anyone tell me how i would set it up? I cant find much information on how to set it up.

Go to the following link then click on the “files changed” tab and then hit the “view” button to make things easier to read. That is what I did but I can’t get it to work on Hassio yet because it requires a modified init.py file in homeassistant/components/http, which I don’t have access to in hassio (I think).

edit: you have to create a bunch of files as well and place them in homeassistant/custom_component/google_assistant I am going to wait for saturday, I have all the preliminary stuff completed as per the setup but it will be easier once this component gets integrated into HA.

ok thats actually really confusing…

yeah, it is. I edited my post to try to make things clearer but keep in mind, I was just trying to figure it out on my own and I do not have any advanced knowledge.

Yeah I think I’ll just wait… I’m running hassio too. Any idea when it’ll be integrated?

Thank you.

I verified all the settings on both ends but still ending up with HTTP 500 error when I try to open that app from Google Home.

Btw, I have these files in custom_components. Do I need another file for http component?

image