Um caminho de fulfillment local é estabelecido quando o Google corresponde a 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 da configuração de verificação
Para especificar as informações de descoberta, siga estas etapas:
Acesse sua integração do Cloud-to-cloud no Google Home Developer Console:
Acesse Projeto > Cloud para cloud no lado esquerdo da tela e selecione Editar na integração. Na página Configuração, role até Atendimento local e ative a configuração. Digite o seguinte URL em cada campo de 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 Descoberta 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 o Google verificar.
As tabelas a seguir mostram os atributos que você pode adicionar com base nos protocolos que 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 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 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 escuta para a resposta de descoberta 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 resposta de sincronização no fulfillment da nuvem
A intent SYNC
informa ao
Assistente quais dispositivos o usuário controla e quais são as funcionalidades deles.
Para oferecer suporte ao 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 de 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 atendimento local.
No campo otherDeviceIds
da resposta SYNC
, defina 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 atendimento local em qualquer dispositivo com o ID especificado.
Use o campo customData
para especificar outros dados 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 seu manipulador 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": "..." } }] } }