Um caminho de fulfillment local é estabelecido quando o Google faz a correspondência de um dispositivo controlável localmente
com um dispositivo retornado na resposta SYNC
do fulfillment na nuvem.
Para permitir que o Google descubra seu dispositivo na rede local e estabeleça o
caminho de fulfillment local, adicione informações de descoberta no console do Actions.
Você também precisa atualizar a resposta SYNC do fulfillment na nuvem para informar ao Google sobre o dispositivo controlável localmente.
Configurar as informações de configuração da verificação
Para especificar as informações de descoberta, siga estas etapas:
Acesse a integração do Cloud-to-cloud no Google Home Developer Console:
Acesse Projeto > Cloud-to-cloud no lado esquerdo da tela e selecione Editar para a integração. Na página Configuração, role até Atendimento local e ative a configuração. Insira o URL a seguir em cada campo de URL de teste, adicione o ID do projeto e clique em Salvar:
https://<project-id>.web.app/local-home/index.htmlClique em + Adicionar configuração de verificação em Descoberta de dispositivos para adicionar uma nova configuração de verificação.
Selecione um tipo de protocolo de correspondência de verificação no menu suspenso e insira os valores para o Google verificar.
As tabelas a seguir mostram os atributos que podem ser adicionados, com base nos protocolos que você quer que o Google use para verificar seu dispositivo:
| Atributo | Descrição | Valor de exemplo |
|---|---|---|
| Nome do serviço |
Obrigatório. Nome do serviço publicado pelo dispositivo no formato
service.domain.
|
_http._tcp.local |
| Nome |
Obrigatório. Filtre por uma instância de serviço exclusiva no
formato |
my-device-[0-9]{4}\._http\._tcp\.local |
| Atributo | Descrição | Valor de exemplo |
|---|---|---|
| Tipo de serviço |
Obrigatório. Identificador totalmente qualificado do serviço UPnP no formato
domain:service:type:version.
|
schemas-upnp-org:service:SwitchPower:1 |
| OUI |
Opcional. Identificador único de organização. Valor de 24 bits que identifica o fabricante do dispositivo. Normalmente, os três primeiros octetos do endereço MAC do dispositivo. |
1A:2B:3C |
| Atributo | Descrição | Valor de exemplo |
|---|---|---|
| Endereço de descoberta | Obrigatório. Endereço IP de destino para a transmissão UDP. | 255.255.255.255 |
| Porta de transmissão | Obrigatório. Porta de destino para a transmissão UDP. | 5555 |
| Porta de detecção | Obrigatório. Porta de detecção para a resposta de descoberta UDP. | 5556 |
| Pacote de descoberta | Obrigatório. Payload a ser enviado na transmissão UDP. Formatado como uma string de bytes codificada em hexadecimal. |
48454C4C4F |
Atualizar a resposta de sincronização no fulfillment da nuvem
A intent SYNC informa ao
Google Assistente quais dispositivos o usuário controla e os recursos deles.
Para oferecer compatibilidade com o fulfillment local, a plataforma Local Home verifica a resposta SYNC
do fulfillment na nuvem da sua ação de casa inteligente e tenta corresponder os IDs do dispositivo
no campo otherDeviceIds ao ID de verificação retornado pelo
gerenciador IDENTIFY. As entradas de dispositivo sem um campo otherDeviceIds são
excluídas do fulfillment local.
No campo
otherDeviceIds
da resposta SYNC, é necessário definir os IDs dos dispositivos de casa inteligente
que podem ser controlados localmente. O campo aparece no nível device
na resposta. O Google pode estabelecer um caminho de fulfillment local em qualquer dispositivo com
o ID fornecido.
Use o campo customData para especificar os dados adicionais que o Google precisa para
se conectar a um dispositivo independente ou para segmentar dispositivos finais usando um hub
(por exemplo, o número da porta e outras informações específicas do protocolo).
Exemplo
O snippet a seguir mostra como criar o gerenciador SYNC.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "agentUserId": "1836.15267389", "devices": [{ "id": "123", "type": "action.devices.types.OUTLET", "traits": [ "action.devices.traits.OnOff" ], "name": { "name": "Night light" }, "willReportState": false, "otherDeviceIds": [{ "deviceId": "local-device-id" }], "customData": { "port": 5555, "authToken": "..." } }] } }