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 de 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
Para migrar desde un tema alojado en Google, inhabilita el tema de Pub/Sub alojado en Google en la consola de Device Access y vuelve a habilitar los eventos con un tema de Pub/Sub alojado por tu cuenta que se haya creado en tu propio proyecto de Google Cloud. La migración de la configuración de tu tema de Pub/Sub no invalida los tokens de acceso de usuario ni los permisos de OAuth existentes.
Los temas de Pub/Sub alojados por el usuario se pueden crear o cambiar en tu propio proyecto de Google Cloud y están sujetos a los precios estándar de Google Cloud Pub/Sub (que incluyen un nivel gratuito de 10 GB por mes).
Crea el tema de Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0sOtorga 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 del ID de tema que acabas de crear será el siguiente:
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 eventos (o migrar desde un tema alojado en Google), sigue estos pasos:
- Si creas un proyecto nuevo, selecciona Habilitar eventos y haz clic en Crear proyecto. Si migras un proyecto existente desde un tema alojado en Google, primero inhabilita el tema de Pub/Sub existente en la pantalla de información del proyecto.
- Haz clic en el ícono de para Tema de Pub/Sub y selecciona Habilitar eventos con el tema de Pub/Sub (o Editar el tema actual).
- Ingresa el ID del tema de Pub/Sub alojado por tu cuenta que creaste anteriormente.
Copia tu ID de 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
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:
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 creó 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 Nest Thermostat, 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 cámara 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 Recuento de mensajes sin confirmar. Esto indica que se recibieron mensajes de eventos 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 PULL 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-idPara 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 acuse de recibo y haz clic en EXTRAER para ver y confirmar todos los mensajes.
- Haz clic en BORRAR MENSAJES para borrar todos los mensajes existentes 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-ackAdministrar 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 has usado 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.