Um caminho de fulfillment local é estabelecido quando o Google associa um dispositivo controlável localmente
a 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.
Também é necessário 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 Cloud-to-cloud no Google Home Developer Console:
Acesse Project > Cloud-to-cloud no lado esquerdo da tela e selecione Edit para a integração. Na página Configuração e configuração, role a tela até Processamento local e ative a configuração. Digite o seguinte URL em cada campo do URL de teste, insira o ID do projeto e clique em Salvar:
https://<project-id>.web.app/local-home/index.html
Clique em + Adicionar configuração de verificação em Detecção de dispositivos para adicionar uma nova configuração.
Selecione um tipo de protocolo de correspondência de verificação no menu suspenso e insira valores para que o Google faça a verificação.
As tabelas a seguir mostram os atributos que você pode adicionar com base nos protocolos que quer que o Google use para detectar 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 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 exclusivo da 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 da transmissão UDP. | 255.255.255.255 |
Porta de transmissão | Obrigatório. Porta de destino para a transmissão UDP. | 5555 |
Porta de escuta | Obrigatório. Porta de detecção da resposta UDP. | 5556 |
Pacote Discovery | 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 quais são os recursos deles.
Para oferecer suporte ao fulfillment local, o plataforma Local Home verifica a resposta SYNC
do fulfillment em nuvem da ação da 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 da entrega 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 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": "..." } }] } }