Suscribirse a eventos

Los eventos son asíncronos y los administra Google Cloud Pub/Sub en un solo tema por Project. Los eventos proporcionan actualizaciones para todos los dispositivos y estructuras, y se garantiza la recepción de los eventos, siempre y cuando el usuario no revoque el token de acceso y los mensajes no hayan vencido.

Los eventos son una función opcional de la API de SDM. Se pueden implementar y verificar fácilmente con el proyecto de Google Cloud.

Habilitar eventos

Es posible que se habiliten los eventos en la Device Access Consola. Selecciona tu proyecto en Console si aún no lo has hecho.

Ir a la Device Access Consola

Si ya habilitaste los eventos (por ejemplo, durante la creación del proyecto), el campo Tema de Pub/Sub de la sección Información del proyecto ya debería tener un valor, denominado ID de tema, con el siguiente formato:

projects/sdm-prod/topics/enterprise-project-id

Si no habilitaste los eventos:

  1. Haz clic en el ícono para Tema de Pub/Sub y selecciona Editar.
  2. Marque Habilitar eventos y haga clic en Guardar.
  3. Se generará un ID de tema en el formato que se muestra arriba.

Copia tu ID de tema y lo necesitarás para crear una suscripción al tema a fin de que se puedan recuperar los mensajes de eventos.

Crea una suscripción de extracción

Una suscripción de extracción es donde un suscriptor inicia solicitudes al servidor de Pub/Sub para mensajes de eventos en cola. Esta es una manera rápida y fácil de verificar que se generan eventos para tus dispositivos autorizados.

Abre Cloud Shell para tu proyecto de Google Cloud:

Ir a Google Cloud Shell

En el mensaje de Cloud Shell, ejecuta el siguiente comando para crear una suscripción de extracción a tu tema, con el subscription-id que quieras y el ID único de tu tema:

gcloud pubsub subscriptions create subscription-id --topic=projects/sdm-prod/topics/enterprise-project-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

Iniciar eventos

Para iniciar eventos por primera vez una vez que se crea la suscripción a Pub/Sub, realiza una llamada a fin de mostrar tus dispositivos como un activador único:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Los eventos para todas las estructuras y los dispositivos se publicarán después de esta llamada a la API.

Generar eventos

Los eventos se generan para todos los cambios en el campo de la característica, algunos son automáticos y otros manuales.

Por ejemplo, si cambia la temperatura ambiente cerca del Nest Thermostat, se enviará automáticamente un evento para el atributoTemperature con un nuevo valor de ambientTemperatureCelsius.

Para generar uno de forma manual, haz lo siguiente:

  1. Cambiar físicamente el estado de tu dispositivo, por ejemplo, cambiar el modo del Nest Thermostat
  2. Activa un evento, como movimiento, persona o sonido en una Google Nest Cam Indoor.
  3. Ejecuta un comando del dispositivo con la API de SDM.

Ver los mensajes

Los mensajes de eventos se pueden ver en tu proyecto de Google Cloud, en la sección Suscripciones de Pub/Sub:

Ir a Suscripciones de Google Cloud Pub/Sub

  1. Haz clic en el ID de suscripción que creaste anteriormente.
  2. En la pantalla Detalles de la suscripción, deberías ver la actividad correspondiente al gráfico Recuento de mensajes no confirmados. Esto indica que se enviaron mensajes de evento para tu suscripción. Si no ves ninguna actividad, espera un poco o genera más eventos.
  3. Haz clic en VER MENSAJES para abrir el panel Mensajes.
  4. Haz clic en DETENER para ver los mensajes. Deben corresponder a las acciones que usaste para generar eventos.

Los mensajes también se pueden ver en Cloud Shell con un comando básico de pull:

gcloud pubsub subscriptions pull subscription-id

Para obtener más información sobre los tipos de suscripción, los tipos de eventos que envía la API de SDM y cómo usarlos, consulta Eventos.

Administrar mensajes

Los mensajes deben confirmarse y borrarse con regularidad para mantener una suscripción limpia y evitar la entrega de mensajes duplicados a otros suscriptores. Todos los mensajes de suscripción se pueden borrar de forma manual de forma manual en la sección Suscripciones de Pub/Sub:

Ir a Suscripciones de Google Cloud Pub/Sub

  1. Haz clic en el ID de la suscripción.
  2. Existen algunas formas de reconocer y borrar definitivamente:
    1. Haz clic en VER MENSAJES para abrir el panel Mensajes. Marca la casilla de verificación Habilitar mensajes confirmados y haz clic en PULL para ver y confirmar todos los mensajes.
    2. Haz clic en BORRAR MENSAJES para borrar definitivamente todos los mensajes existentes mediante su confirmación sin verlos. Haz clic en PURGAR para confirmar.

Los mensajes también se pueden borrar definitivamente en Cloud Shell mediante la marca --auto-ack con un comando pull básico:

gcloud pubsub subscriptions pull subscription-id --auto-ack

Administrar las suscripciones

Las suscripciones se pueden configurar de varias maneras, como se describe en Cómo usar las propiedades de suscripción.

Si bien la forma de administrar las suscripciones y los mensajes depende de ti, en el caso de una aplicación de producción, te recomendamos que uses cuentas de servicio para la autenticación, en lugar de una cuenta de usuario como la que usaste en esta guía de inicio rápido. Una cuenta de servicio es usada por una aplicación o una máquina virtual, no una persona, y tiene su propia clave de cuenta.

Para obtener más información sobre la autenticación de cuentas de servicio con Device Access, consulta Eventos.