Suscríbete 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 eventos es siempre que el usuario no revoque el token de acceso y que los mensajes de eventos no hayan vencido.

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

Habilitar eventos

Los eventos se pueden habilitar en la Device Access consola de. Selecciona tu proyecto en la consola si aún no lo hiciste.

Ir a la Device Access consola de

Si ya habilitaste los eventos (por ejemplo, durante la creación) el campo Tema de Pub/Sub en la sección Habilitar tema de Pub/Sub para eventos ya debería tener un valor, llamado ID del tema, en el formato anterior:

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

Este formato de tema está alojado en Google y persistirá para tu proyecto, a menos que inhabilites el tema de Pub/Sub alojado en Google. Si lo vuelves a habilitar más adelante, se cambiará al tema de Pub/Sub autoalojado.

Los temas de Pub/Sub autoalojados se pueden crear o cambiar en el propio proyecto de Google Cloud de un desarrollador. El desarrollador también es responsable de todos los costos asociados con el uso de Pub/Sub. Consulta los precios de Pub/Sub para obtener más información.

Crea el tema de Pub/Sub:

gcloud pubsub topics create {topic} --message-retention-duration=0s

Otorga los permisos necesarios de la API de SDM para acceder a los datos de eventos y publicarlos para el ID del tema de tu proyecto:

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

El formato del ID del tema que creaste recientemente se verá de la siguiente manera:

projects/gcp-project-name/subscriptions/topic-id

Toma nota del ID del tema, ya que lo necesitarás para completar la habilitación de eventos. Consulta Crea un tema para obtener más información.

Para habilitar eventos, haz lo siguiente:

  1. Marca Habilitar eventos y haz clic en Crear proyecto.
  2. Haz clic en el ícono de Tema de Pub/Sub y selecciona Habilitar eventos con el tema de Pub/Sub.
  3. Ingresa el ID del tema de Pub/Sub que se proporcionó o se creó anteriormente.

Copia el ID del tema, ya que lo necesitarás para crear una suscripción al tema de modo que se puedan recuperar los mensajes de eventos.

Crea una suscripción de extracción

Una suscripción de extracción es aquella en la que un suscriptor inicia solicitudes al servidor de Pub/Sub para obtener mensajes de eventos en cola. Esta es una forma rápida y sencilla de verificar que se generen eventos para tus dispositivos autorizados.

Abre Cloud Shell para tu proyecto de Google Cloud:

Ir a Google Cloud Shell

En el símbolo del sistema de Cloud Shell, ejecuta el siguiente comando para crear una suscripción de extracción a tu tema, usando el subscription-id que desees y tu ID del tema único:

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

Inicia eventos

Para iniciar eventos por primera vez una vez que se haya creado la suscripción a Pub/Sub, realiza una llamada para enumerar 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 dispositivos se publicarán después de esta llamada a la API.

Genera eventos

Los eventos se generan para todos los cambios en los campos de rasgos, algunos de los cuales son automáticos y otros manuales.

Por ejemplo, si cambia la temperatura ambiente cerca de tu termostato Nest, se enviará automáticamente un evento para el rasgo Temperature con un nuevo valor ambientTemperatureCelsius.

Para generar uno de forma manual, haz lo siguiente:

  1. Cambia físicamente el estado de tu dispositivo, por ejemplo, cambia el modo de tu termostato Nest.
  2. Activa un evento, como movimiento, persona o sonido en una cámara Google Nest Cam Interior.
  3. Ejecuta un comando de 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 del gráfico Cantidad de mensajes no confirmados. Esto indica que los mensajes de eventos llegaron a tu suscripción. Si no ves ninguna actividad, espera un poco o genera algunos eventos más.
  3. Haz clic en VER MENSAJES para abrir el panel Mensajes.
  4. Haz clic en EXTRAER 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 pull básico:

gcloud pubsub subscriptions pull subscription-id

Para obtener más información sobre los tipos de suscripción, así como 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 periódicamente para mantener limpia una suscripción y evitar la entrega de mensajes duplicados a otros suscriptores. Todos los mensajes de suscripción se pueden borrar 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 suscripción.
  2. Hay varias formas de confirmar y borrar:
    1. Haz clic en VER MENSAJES para abrir el panel Mensajes. Marca la casilla de verificación Habilitar mensajes de confirmación y haz clic en EXTRAER para ver y confirmar todos los mensajes.
    2. Haz clic en BORRAR MENSAJES para borrar definitivamente todos los mensajes existentes confirmándolos sin verlos. Haz clic en PURGE para confirmar.

Los mensajes también se pueden borrar en Cloud Shell con 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 en que deseas administrar las suscripciones y los mensajes depende de ti, para 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 tienes hasta ahora en esta guía de inicio rápido. Una cuenta de servicio la usa una aplicación o una máquina virtual, no una persona, y tiene su propia clave de cuenta única.

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