Compatibilidade com descoberta de dispositivos

Um caminho de fulfillment local é estabelecido quando o Google corresponde um dispositivo controlável localmente a um dispositivo retornado na SYNC resposta do fulfillment da 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 da nuvem para informar o 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:

  1. Acesse a integração Cloud-to-cloud no Google Home Developer Console:

    Acesse o Developer Console.

  2. Acesse Projeto > Nuvem para nuvem no lado esquerdo da tela e selecione Editar para a integração. Na página Configuração, role até Fulfillment 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

  3. Clique em + Adicionar configuração de verificação em Descoberta de dispositivos para adicionar uma nova configuração de verificação.

  4. Selecione um tipo de protocolo de correspondência de verificação no menu suspenso e insira os valores que o Google vai 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:

mDNS
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 instance.service.domain.

A plataforma trata esse valor como uma expressão regular e retorna todos os dispositivos correspondentes.
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
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 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
UDP
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 Assistente quais dispositivos o usuário controla e os recursos deles.

Para oferecer suporte ao fulfillment local, a plataforma Local Home verifica a resposta SYNC do fulfillment da nuvem da sua Ação para 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 fulfillment local.

No otherDeviceIds campo do SYNC resposta, defina os IDs de dispositivos domésticos inteligentes 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 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 o gerenciador SYNC.

Independente/Hub
{
  "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": "..."
      }
    }]
  }
}