Cómo admitir la detección de dispositivos

Se establece una ruta de entrega local cuando Google hace coincidir un dispositivo controlable de forma local con un dispositivo que se devolvió en la respuesta SYNC de tu entrega en la nube.

Para permitir que Google descubra tu dispositivo en la red local y establezca la ruta de entrega local, debes agregar información de detección en la Consola de Actions. También debes actualizar la respuesta SYNC de tu cumplimiento en la nube para que Google conozca el dispositivo que se puede controlar de forma local.

Configura la información de análisis

Para especificar la información de descubrimiento, sigue estos pasos:

  1. Ve a tu integración de Cloud-to-cloud en Google Home Developer Console:

    Ve a Play Console.

  2. Ve a Project > Cloud-to-cloud en el lado izquierdo de la pantalla y, luego, selecciona Edit para la integración. En la página Configuración, desplázate hasta Local fulfillment y activa el parámetro de configuración. Ingresa la siguiente URL en cada campo de URL de prueba, inserta el ID de tu proyecto y haz clic en Guardar:

    https://<project-id>.web.app/local-home/index.html

  3. Haz clic en + Add scan configuration en Device discovery para agregar una nueva configuración de análisis.

  4. Selecciona un tipo de protocolo de coincidencia de análisis en el menú desplegable y, luego, ingresa los valores que Google debe analizar.

En las siguientes tablas, se muestran los atributos que puedes agregar según los protocolos que quieres que Google use para buscar tu dispositivo:

mDNS
Atributo Descripción Valor de ejemplo
Nombre del servicio Es obligatorio. Nombre del servicio que publica el dispositivo en el formato service.domain. _http._tcp.local
Nombre

Es obligatorio. Filtra una instancia de servicio única con el formato instance.service.domain.

La plataforma trata este valor como una expresión regular y devuelve todos los dispositivos que coincidan.
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
Atributo Descripción Valor de ejemplo
Tipo de servicio Es obligatorio. Identificador completamente calificado del servicio UPnP en el formato domain:service:type:version. schemas-upnp-org:service:SwitchPower:1
OUI

Opcional. Identificador único de la organización.

Es un valor de 24 bits que identifica al fabricante del dispositivo. Por lo general, son los primeros tres octetos de la dirección MAC del dispositivo.
1A:2B:3C
UDP
Atributo Descripción Valor de ejemplo
Dirección de detección Es obligatorio. Es la dirección IP de destino para la transmisión UDP. 255.255.255.255
Puerto de transmisión Es obligatorio. Es el puerto de destino para la transmisión UDP. 5555
Puerto de escucha Es obligatorio. Es el puerto de escucha para la respuesta de detección de UDP. 5556
Paquete de descubrimiento

Es obligatorio. Es la carga útil que se enviará en la transmisión UDP.

Se da formato como una cadena de bytes codificada en hexadecimal.
48454C4C4F

Actualiza la respuesta de SYNC en la entrega en la nube

El intent SYNC informa al Asistente qué dispositivos controla el usuario y sus capacidades.

Para admitir la entrega local, la plataforma de Local Home verifica la respuesta SYNC de la entrega en la nube de tu Acción para la casa inteligente y trata de hacer coincidir los IDs de los dispositivos en el campo otherDeviceIds con el ID de verificación que devuelve el controlador IDENTIFY. Las entradas de dispositivos sin un campo otherDeviceIds se excluyen del cumplimiento local.

En el campo otherDeviceIds de la respuesta SYNC, debes establecer los IDs de los dispositivos inteligentes para la casa que se pueden controlar de forma local. El campo aparece en el nivel device de la respuesta. Google puede establecer una ruta de entrega local en cualquier dispositivo con el ID determinado.

Usa el campo customData para especificar cualquier dato adicional que Google necesite para conectarse a un dispositivo independiente o para segmentar dispositivos finales con un concentrador (por ejemplo, el número de puerto y otra información específica del protocolo).

Ejemplo

En el siguiente fragmento, se muestra cómo podrías crear tu controlador SYNC.

Independiente/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": "..."
      }
    }]
  }
}