Google Assistant Local SDK - Local Fulfillment

Is maybe the internal/external url also important? For external I use nabu, for internal, I have http …

Maybe I also need internal https?

He
What’s also strange, nabucasa users are complaining about the big delay, if the local system is already active, how come we are still notificating the delay?

This issue :

You can troubleshoot this by following the debug instructions on: Add local fulfillment to your smart home Action  |  Actions on Google Smart Home  |  Google Developers

This way you can see what the google device thinks is happening. There should be a device that has an id that is your Home assistant internal user id, and scanData with a service name in the form of home._home-assistant._tcp.local . There you should find the internal_url to reach your home assistant instance.

Hope this helps you :slight_smile:

1 Like

Hi, thnx for sharing link , but not sure what i need todo?

i goto this website …
chrome://inspect/#devices

now what ? :slight_smile:

your google devices should show up after a little while. Then you can click inspect and see the different commands that happen. You may need to reboot your google device and reopen this inspect window after if there is already a lot of data there. If you see a lot of red error messages they will probably tell you want is going wrong. (for this to work your pc needs to be on the same network as the google devices)

ok, rebooting while page is open , lets see what happens :slight_smile:

hmm, still no devices there, did a reboot of 2

Are you on the same network? As this page will only show devices on the same local network of the PC. It can also take a few minutes to load the devices section.

yeah, all on same network , even on same wifi ssid, i can also ping the devices

For someone else rebooting their PC made it so the devices did show up(I have no idea why this would help though).

ok, rebooting now :slight_smile:

aha, now they are visible!! :slight_smile:

what do i need todo now? :slight_smile:

image

There should be in inspect button under each google home device, but let’s continue the conversation here: Homeassisstant/nabucasa not using local fulfilment for Google Assistant · Issue #311 · NabuCasa/hass-nabucasa · GitHub as then all information is in one place.

1 Like

Should it already work with Home Assistant 2021.12.10for Nabucasa users, no need to wait for 2022.2 or update to the beta?

It should work, but it doesn’t, I see all commands fired to cloud and not local…

Requirements are running local instance on http , and devices needs to be discovered, and that’s the case for me… But still not firing with local SDK

I believe this is the PR, which at the moment is still in dev only (unless I am mistaken): Enable local fulfillment google assistant by LoekSangers · Pull Request #63218 · home-assistant/core · GitHub

It’s all unclear, it that PR for the google assistant integration or also for nabucasa edition

1 Like

so is there an easy way to tell if commands are being directed locally? I tried the chrome://inspect/#devices but none of my devices are showing even though I set up the local sdk several hours ago and have reset my computer.

Edit
I ended up manually adding the ip address of devices and now get the inspect button, but im not sure what i am supposed to do with this?

+1

You can debug the setup by following these instructions

But what steps should I be taking to debug anything?

  1. I do see my Google Home device in chrome://inspect/#devices
  2. When I click inspect, the console has some errors:
{
  "requestId": "81CBD8B249F318638B33FA57A0474241",
  "inputs": [
    {
      "intent": "action.devices.IDENTIFY",
      "payload": {
        "device": {
          "mdnsScanData": {
            "serviceName": "chromecast-xyz._googlecast._tcp.local",
            "name": "chromecast-xyz",
            "type": "googlecast",
            "protocol": "tcp",
            "data": [
              ...
            ],
            "txt": {
              ...
            }
          }
        },
        "structureData": {}
      }
    }
  ],
  "devices": [
    {
      "id": "light.fish_tank_lights",
      "customData": {
        "baseUrl": "http://<home-assistant-ip-address>:8123",
        "httpPort": 8123,
        "httpSSL": false,
        "proxyDeviceId": ...,
        "uuid": ...,
        "webhookId": ...
      }
    },
    {
      "id": "light.bedroom_lights",
      "customData": {
        "baseUrl": "http://<home-assistant-ip-address>:8123",
        "httpPort": 8123,
        "httpSSL": false,
        "proxyDeviceId": ...,
        "uuid": ...,
        "webhookId": ...
      }
    },
    {
      "id": "switch.bedroom_fan",
      "customData": {
        "baseUrl": "http://<home-assistant-ip-address>:8123",
        "httpPort": 8123,
        "httpSSL": false,
        "proxyDeviceId": ...,
        "uuid": ...,
        "webhookId": ...
      }
    },
    {
      "id": "abc",
      "customData": {},
      "radioType": "WIFI",
      "scanData": {
        "mdnsScanData": {
          "serviceName": "home._home-assistant._tcp.local",
          "texts": [
            "location_name=Home",
            "uuid=...",
            "version=2022.2.0",
            "external_url=",
            "internal_url=http://<home-assistant-ip-address>:8123",
            "base_url=http://<home-assistant-ip-address>:8123",
            "requires_api_password=True"
          ],
          "serviceInstance": "home._home-assistant._tcp.local"
        }
      }
    }
  ]
}
81CBD8B249F318638B33FA57A0474241 Not Home Assistant type

and more logs along those lines for other devices broadcasting themselves on mdns. I did confirm that I set the mdns service name to _home-assistant._tcp.local in the Actions console. It does also look like my local devices were discovered correctly despite these errors.

  1. If I refresh the inspect page, I don’t get any errors, but I also don’t get any other log messages, other than “Ready!”

  2. If I attach wireshark to my network when I ask my Google Home to do something with one of the identified local devices, the requests seems to be going from my Google Home → remote IP → home assistant

Did I set something up incorrectly? How can I confirm that my Google Home is using local fulfillment? Is there a way to turn off non-local fulfillment so I can guarantee all of this is kept within my own network?

Ok, gonna try this later too…

But guys, how do you do this? Let’s say I use duckdns for external access, but seems local SDK requires to run HA on http , because the devices are need to be discovered IP…

Running http is a requirement according to docs, to make this local SDK stuff to work?

How can you run both http and https?

1 Like