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 siempre que el usuario no revoque el token de acceso y 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 consola de Device Access . Selecciona tu proyecto en la consola, si aún no lo hiciste.
Si ya habilitaste los eventos (por ejemplo, durante la creación del proyecto), el campo Tema de Pub/Sub en la sección Habilita el 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 te cambiará al tema de Pub/Sub alojado por el usuario.
Los temas de Pub/Sub autoalojados se pueden crear o cambiar en el proyecto de Google Cloud propio de un desarrollador. El desarrollador también es responsable de todos los costos asociados con el uso de Pub/Sub. Para obtener más información, consulta Precios de Pub/Sub.
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 de 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 de tu ID de tema recién creado se verá de la siguiente manera:
projects/gcp-project-name/subscriptions/topic-id
Anota el 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 los eventos, sigue estos pasos:
- Marca Habilitar eventos y haz clic en Crear proyecto.
- Haz clic en el ícono para Tema de Pub/Sub y selecciona Habilitar eventos con el tema de Pub/Sub.
- Ingresa el ID del tema de Pub/Sub que se proporcionó o creó anteriormente.
Copia el ID del tema. Lo necesitarás para crear una suscripción al tema y poder recuperar los mensajes de eventos.
Crea una suscripción de extracción
En una suscripción de extracción, 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:
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 quieras y tu ID de 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].
Eventos de inicio
Para iniciar eventos por primera vez una vez que se haya creado la suscripción a Pub/Sub, llama 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 de 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 del termostato Nest, se enviará automáticamente un evento para el rasgoTemperature con un valor ambientTemperatureCelsius
nuevo.
Para generar uno de forma manual, haz lo siguiente:
- Cambiar físicamente el estado del dispositivo, como cambiar el modo del termostato Nest
- Activa un evento, como movimiento, persona o sonido, en una Google Nest Cam Indoor.
- 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
- Haz clic en el ID de suscripción que creaste antes.
- En la pantalla Detalles de la suscripción, deberías ver la actividad del gráfico Cantidad de mensajes sin confirmar. Esto indica que los mensajes de eventos se enviaron correctamente para tu suscripción. Si no ves ninguna actividad, espera un poco o genera algunos eventos más.
- Haz clic en VER MENSAJES para abrir el panel Mensajes.
- Haz clic en EXTRAER para ver los mensajes. Deben corresponder a las acciones que usaste para generar eventos.
También se pueden ver los mensajes 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 se deben confirmar y borrar 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 purgar manualmente en la sección Suscripciones de Pub/Sub:
Ir a Suscripciones de Google Cloud Pub/Sub
- Haz clic en el ID de suscripción.
- Existen varias formas de confirmar y purgar:
- 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.
- Haz clic en BORRAR MENSAJES para borrar definitivamente todos los mensajes existentes confirmándolos sin verlos. Haz clic en PURGE para confirmar.
También puedes purgar mensajes en Cloud Shell con la marca --auto-ack
y 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 usaste 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.