Compatibilidade com descoberta de dispositivos

Um caminho de fulfillment local é estabelecido quando o Google faz a correspondência com um dispositivo controlado localmente para um dispositivo retornado no SYNC resposta do fulfillment na nuvem.

Para permitir que o Google descubra seu dispositivo na rede local e estabeleça a caminho de fulfillment local, será necessário adicionar informações de descoberta ao Console do Actions. Também é necessário atualizar a resposta SYNC do fulfillment da nuvem para que o Google conhece o dispositivo controlado localmente.

Definir as informações de configuração da verificação

Para especificar as informações de descoberta, siga estas etapas:

  1. Abra seu projeto de casa inteligente no Console do Actions.
  2. Na navegação à esquerda, clique em Ações.
  3. Em Configurar SDK local do Google Home (opcional) > Adicionar configuração de verificação do dispositivo, clique em Nova configuração de verificação.
  4. Na lista suspensa, selecione um tipo de protocolo de correspondência de verificação e insira os valores para Google a ser verificado.

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 por uma instância de serviço exclusiva no no formato instance.service.domain.

A plataforma trata esse valor como uma expressão regular e retorna qualquer e 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 transmissão 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. Detectar porta para a resposta de descoberta UDP. 5556
Pacote de descoberta

Obrigatório. Payload para envio na transmissão UDP.

Formatado como uma string de bytes codificada hexadecimal.
48454C4C4F

Atualizar a resposta de sincronização no fulfillment da nuvem

A intent SYNC informa para Saber quais dispositivos o usuário controla e os recursos disponíveis.

Para oferecer suporte ao fulfillment local, a plataforma Local Home verifica a resposta SYNC no fulfillment da nuvem da ação de casa inteligente e tenta fazer a correspondência IDs no campo otherDeviceIds ao ID de verificação retornado pelo Gerenciador de IDENTIFY. As entradas de dispositivos sem um campo otherDeviceIds são excluídos do fulfillment local.

Na 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 do 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 conectar a um dispositivo independente ou segmentar dispositivos finais por 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": "..."
      }
    }]
  }
}