Closed Stefan300381 closed 3 years ago
Hey there @home-assistant/cloud, mind taking a look at this issue as its been labeled with a integration (google_assistant
) you are listed as a codeowner for? Thanks!
Check all the steps again and ensure that your proxy is properly routing all the api's for google assistant. There are a few URLs you will want to make sure are routed correctly. Also ensure you have removed the app shortcut that gets created from Chrome when you add to homescreen. There is a note about that in the docs as well.
Start with less entities exposed. You are exposing som entity with unknown state.
@dshokouhi thanks for trying to help, but I'm not sure how to respond. I tried to follow the documentation but unfortunately it's outdated. If you walk through it step by step you'll find out some things have changed. Nevertheless I think I have done it correctly. Not sure about the homescreen shortcut. I didn't have one. The URLs might in deed be the problem. To be correct: my reverse proxy. For home assistant to be accessible via reverse proxy I needed to set some special http header configuration. Not sure if the same is needed on top for for google assistant integration.
@elupus can you be more specific? Maybe google integration doesn't work if one of the entities is in unknown state? I say this because I faced the exact same issue with openHAB in the past, but it was fixed somehow. I don't know the reason. Can you point me to the problematic entity? I'm not even sure my configuration is correct.
This is my config:
google_assistant:
project_id: home-assistant-project-265414
service_account: !include home-assistant-project-265414-b665ef99bd7e.json
report_state: true
exposed_domains:
- switch
- light
- cover
entity_config:
switch.shelly_shsw_1_24d457:
name: Deckenlicht_HomeOffice
aliases:
- BRIGHT_LIGHTS
- ENTRY_LIGHTS
You are exposing all switches all covers and all lights. Please reduce your exposed entities to a minimum to start with. I suspect it's covers that is causing problem.
I reduced the config to (see below) and restarted the server. The behavior is still the same, google home app returns to the list of service providers and has not added my test app:
google_assistant:
project_id: home-assistant-project-265414
service_account: !include home-assistant-project-265414-b665ef99bd7e.json
report_state: true
The log says:
2020-01-22 20:29:19 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/google_assistant/report_state.py", line 45, in async_entity_state_listener
if entity_data == old_entity.query_serialize():
File "/usr/src/homeassistant/homeassistant/components/google_assistant/helpers.py", line 442, in query_serialize
deep_update(attrs, trt.query_attributes())
File "/usr/src/homeassistant/homeassistant/components/google_assistant/trait.py", line 1288, in query_attributes
ERR_NOT_SUPPORTED, "Querying state is not supported"
homeassistant.components.google_assistant.error.SmartHomeError: Querying state is not supported
@Stefan300381 by default all entities are included based on your configuration. Try to include just 1 entity and see if it works.
Set this false
https://www.home-assistant.io/integrations/google_assistant/#expose_by_default
Then expose only 1 device
@dshokouhi my config below (without any entity), same behavior. After login I'm back in the accounts screen of google home app.
Any chance I can manually test/verify the URLs I have setup in the google actions console?
https://ha.hauptsache.myds.me/api/google_assistant https://ha.hauptsache.myds.me/auth/authorize https://ha.hauptsache.myds.me/auth/token
google_assistant:
project_id: home-assistant-project-265414
service_account: !include home-assistant-project-265414-b665ef99bd7e.json
expose_by_default: false
report_state: true
I just performed the whole setup myself and I used the same config @Stefan300381 ended up with in his last comment. (Unintentionally, I only now found this issue). I am currently facing the exact same problem.
I don't know a lot about OAuth but as far as I know, the service must provide a redirect-url after a succesful login. Could it be that the redirect URL that homeassistant provides is wrong?
Any errors in log when no entities are setup? @Stefan300381 also are you behind som reverse proxy?
Network wise, I'm using a DynDNS with an additional CNAME record on top of it plus port-forwarding, so technically the most straight-forward configuration.
There are no errors in the log. I have a few test entities set up (TV + Hue) but set expose_by_default
to false
in the config. Should I delete them all for further testing?
For additional information:
So, I'm pretty much out of ideas for the moment. I wish Google Home itself would provide some more meaningful errors other than just "it did not work" :roll_eyes:
My main question remains, what can I do to test the setup components (like authorization URL). Something is clearly not working, but what?
If you haven't, turning on debug logging might help. Also, the test app is enable I'm action console right? It turns off after some time.
@elupus
debug didn't reveal anything more. about testing: to be honest I'm not 100% sure. I thought if testing isn't enabled then the test app wouldn't show up in the google home app, right? in the google actions console it says on the top right: testing on device: enabled
@cybrox, did you make any progress?
@Stefan300381 Sadly not. I tried the HomeAssistant cloud free trial period just to see if my setup somehow messes that connection up as well (I know it's different endpoints but I'm running out of ideas) but that works fine.
My next guess would be to see if there's any way to have Home Assistant log every single HTTP request and its OAuth flow. From how I understand the OAuth workflow, the error happens after successful authorization of the Google App Client, which leads me to believe that either the redirect URL used in the guide is wrong (outdated) or Home Assistant gets a request that errors right after completing the OAuth flow and the Google Home app aborts.
I'll report if I figure something out. Will look at it in the next few days again.
@cybrox The strange thing is, that I experienced exactly the same situation with openHAB in the past. But the problem solved itself after a day or two. And with openHAB I was NOT using my own local instance, but the official cloud service. This is so frustrating, as I would really love to move from openHAB to HA ;-)
I'm having the exact same issue. Except there are no errors at all in the logs. Checked debug level as well, nothing..
@codecvlt How are you running HomeAssistant? It seems @Stefan300381 and I are both running it in a docker container. Are you using docker as well?
I'm considering trying out the actual hass.io image for the Raspberry Pi and see if there's any difference. - I know there really should not be but I'm absolutely out of ideas and I don't think this issue will get much actual attention, since the GA integration is one of Nabu Casa's selling points.
I'm running it in docker yes. Took this route cuz I also run pihole on the same pi and that has its own image. Let me know if you have any luck with the hassio image.
cc @codecvlt @Stefan300381 I tried using the actual hass.io image on the raspberry pi, complete with plugin registry and re-setup let's-encrypt via plugin. Re-published the test application aaand.... the exact same error...
The only idea I have left would be to re-setup the docker setup and use tcpdump to capture traffic on lo
and see if there's any clue in there, as to why it is not working. To be honest, I'm kind of running out of motivation, though.
Thanks for testing. Do you have an ipv4 internet account? I run unity media which is ipv6 only (idp ipv4 natted). For now I will just stay with Openhab where they provide the cloud service for free. A pity as I love HA
Per default, my provider sets up a dual-stack setup, but I had them change it to just IPv4 because of some legacy devices. I think if network connectivity was the issue, Google Assistant would not be able to even start the OAuth flow and show the HomeAssistant login screen.
Interestingly, I actually forgot to add my GCP credentials yesterday, and the error was the exact same. Added them today, went through the whole app setup process again, still no luck. Commented them out, same error.
This leads me to assume that the issue is with the GCP access configuration. Maybe they just updated the expected configuration format, the documentation is oudated and our provided settings are never even loaded / have no impact at all...
If gcp you mean the service account, then that is not needed to complete the linking.
What is the service account used for then? Just so that HA can push new devices to google without performing the authentication flow again?
Regarding my previous answer, the config seems to be loaded correctly. I can comment out keys and it will complain about them missing, so that's working, even though it might not have any impact on the error.
For the sake of completion for the maintainers, I ran the whole flow again with debug logging enabled for all components.
Sometimes, there would be a 404 returned by the following endpoint so I removed all integrations and tried again.
2020-02-27 10:04:57 DEBUG (MainThread) [homeassistant.components.google_assistant.http] Response on https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
This is the debug log during the OAuth flow. Looks to me like the flow completes successfully and there is no additional activity logged afterwards. (Set the default log level to debug, so all components should log).
2020-02-27 09:56:27 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/providers to 172.30.33.2 (auth: False)
2020-02-27 09:56:27 DEBUG (MainThread) [homeassistant.components.http.view] Serving /manifest.json to 172.30.33.2 (auth: False)
2020-02-27 09:56:27 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow to 172.30.33.2 (auth: False)
2020-02-27 09:56:36 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow/8cb89d631d0c442a8573b73a441afb90 to 172.30.33.2 (auth: False)
2020-02-27 09:56:38 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow to 172.30.33.2 (auth: False)
2020-02-27 09:56:38 DEBUG (MainThread) [homeassistant.components.http.view] Serving /manifest.json to 172.30.33.2 (auth: False)
2020-02-27 09:56:39 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/token to 172.30.33.2 (auth: False)
2020-02-27 09:56:41 DEBUG (SyncWorker_17) [homeassistant.helpers.storage] Writing data for auth
2020-02-27 09:56:41 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.33.2 for / using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/entrypoint.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/chunk.b2dce600432c76a53d8c.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/chunk.e46c606dd9100816af4e.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/chunk.0b82745c7bdffe5c1404.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/chunk.d4931d72592ad48ba2be.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/app/chunk.4d45ee0a3d852768f97e.js to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/token to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/token to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.33.2 for /api/hassio/ingress/session using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/ingress/session to 172.30.33.2 (auth: True)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.33.2 for /api/hassio/addons/core_configurator/info using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio/addons/core_configurator/info to 172.30.33.2 (auth: True)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/hassio_ingress/TE80BnOLBnZSSRBfolvAybyOuB9mVUhw7T5bP31F3NE/ to 172.30.33.2 (auth: False)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.32.2 for /api/services using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/services to 172.30.32.2 (auth: True)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.32.2 for /api/events using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/events to 172.30.32.2 (auth: True)
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.32.2 for /api/states using bearer token
2020-02-27 09:56:49 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/states to 172.30.32.2 (auth: True)
These look to me like google actually got a correct bearer token and is using it to do.. something(?)
2020-02-27 10:13:50 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/services to 172.30.32.2 (auth: True)
2020-02-27 10:13:50 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.32.2 for /api/events using bearer token
2020-02-27 10:13:50 DEBUG (MainThread) [homeassistant.components.http.view] Serving /api/events to 172.30.32.2 (auth: True)
2020-02-27 10:13:50 DEBUG (MainThread) [homeassistant.components.http.auth] Authenticated 172.30.32.2 for /api/states using bearer token
Yet, the Google Assistant app still just flashes the Couldn't update settings, check your connection banner after Logging in... and Linking to [test] HomeAssistant
Service account is for syncing new or changed devices on request from hass. You can do this from GA instead by asking it to "Sync my devices". It is also used if you turn on report state feature to proactively report state to GA
Sorry didn't mean to close. Missed button on mobile.
I suggest you disable state reports and remove service account untill you get it linked. Reduces potential issues.
Think you could temporarily port forward instead of using your reverse proxy? So we can exclude it as a problem.
Ah, gotcha, thanks for clarifying what it actually does.
I suggest you disable state reports and remove service account untill you get it linked. Reduces potential issues.
Disabled it and commented out the service_account
portion of the config. HA does not complain but the log output remains the same.
Think you could temporarily port forward instead of using your reverse proxy? So we can exclude it as a problem.
I think @Stefan300381 was using a reverse proxy in his original issue report. I've always used port-forwarding. Forwarding 80
, 443
and 8123
to the Pi at the moment. Accessing it from the outside via the HA app for example works and the certificate is valid. So I'm pretty sure that part of the set-up should be alright.
Never forward anything but 443 with certs in place. Just as a ps.
I'm pretty sure port 80
is needed when using http as acme-challenge for certificate renewal?
I agree that forwarding 8123
makes no sense anymore, once https is set up properly.
Edit: Plus since browsers still default to HTTP, I like having an HTTPS redirect in place for convenience.
I have the exact same problem. Anyone with a possible solution?
I have the same issue. Really hoping to get my HA to interact with GA
Any errors in your logs @faizalgazali and @Dirckvdb
Any errors in your logs @faizalgazali and @Dirckvdb
@elupus no, unfortunately I seen nothing in the logs
After login page it is linking And after that In HA new token created represents a login session. And no logs.
I get the follow error after the login page.
The error translates: Something went wrong, please try again.
Exactly same issue here. No useful logs.
@CodeInDreams @faizalgazali are you guys also running home assistant in Docker in combination with Nginx?
@CodeInDreams @faizalgazali are you guys also running home assistant in Docker in combination with Nginx?
I'm running Home Assistant 0.106.6 on HassOS 3.12. Using nginx on hass.io official repository. Here is the config: domain: #mydomain.com certfile: fullchain.pem keyfile: privkey.pem hsts: max-age=31536000; includeSubDomains cloudflare: false customize: active: false default: nginx_proxy_default.conf servers: nginx_proxy/.conf
@CodeInDreams I am using HassOS 3.12 on raspberry pie with Nginx
Just full clean installed 0.107.7 on another ubuntu server (18.04). Same issue.
2020-04-08 01:59:27 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/providers to 172.30.33.3 (auth: False)
2020-04-08 01:59:28 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow to 172.30.33.3 (auth: False)
2020-04-08 01:59:37 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow/b1e0fbb9b381479c8523496458ab0fd1 to 172.30.33.3 (auth: False)
2020-04-08 01:59:45 DEBUG (MainThread) [homeassistant.components.http.view] Serving /auth/login_flow to 172.30.33.3 (auth: False)
My time zone is UTC+8 Asia/Shanghai. The date in log is 1 hour later than real time.
Same problem :(
Could not update settings, please check your connection.
Decided to start this Google Assistant integration endeavor two days ago. Was basically stuck at the same connection issue when trying to link in the Google Home app. I was able to finally link it though, but I don't know if this was due to maybe a time thing or a small change I did. The change itself was setting the role of the service account you created (and have set under service_account in configuration.yaml) to Owner within the IAM page in GCP (mine was set to Editor initially)
Hopefully this provides some insight into this issue
Odd. That role doesn't even exist for me. I have mine set to "Service Account Token Creator"
I think mine was "Service Account Token Creator" as well, since that's what the HomeAssistant documentation recommends. I did not find any way to check or even modify this. But I did delete and re-create the service role and I can select "Project" > "Owner" in the progress.
Unfortunately, I tore down my whole test setup (Running via NabuCasa at the moment, because I just didn't have time to deal with this), so I can't really test if it makes a difference :(
Decided to start this Google Assistant integration endeavor two days ago. Was basically stuck at the same connection issue when trying to link in the Google Home app. I was able to finally link it though, but I don't know if this was due to maybe a time thing or a small change I did. The change itself was setting the role of the service account you created (and have set under service_account in configuration.yaml) to Owner within the IAM page in GCP (mine was set to Editor initially)
Hopefully this provides some insight into this issue
A slight clarification. The change to owner was made to the default service account, not to the one you would create with the JSON key:
Essentially, the one with [Your_Project_ID]@appspot.gserviceaccount.com
I changed it by clicking on the Pencil edit under Inheritance, then changing the Role to Project -> Owner
Hi,
my environment is quite complex:
Synology NAS with hass 0.104.0 running in docker container, host network, port 8123 ipv4 Synology Reverse Proxy, dns name ha.hauptsache.myds.me, port 443, using let's encrypt cert
Internet access via cable DSLite, ipv6 only incoming :-( This means if you try to reach the dns name via ipv4 it won't work. only ipv6
Anyway, so far the reverse proxy works fine and I can access my hass installation via the android companion app remotely (via cell network, German Vodafone) and locally via WiFi.
The problem is the google assistant integration. I read the documentation and setup the whole environment to connect to ha.hauptsache.myds.me.
This works: In Google Home app I click on the "+" to add new devices and I select my test app. The home assistant webpage appears. I enter my credentials and the app shows a popup which tells me in German "sie werden angemeldet" (translated: logging in).
This doesn't work: After a few seconds the popup disappears and I'm back in the "Konten verwalten" (manage accounts) screen. my test app is still not listed under the assigned services section.
Now I wonder, what am I missing? How can I debug this? Things I found in the logfile: