Les événements sont asynchrones et gérés par Google Cloud Pub/Sub, dans un seul sujet par Project. Les événements fournissent des informations à l'ensemble des appareils et des structures. La réception des événements est assurée tant que le jeton d'accès n'est pas révoqué par l'utilisateur et que les messages d'événement n'ont pas expiré.
Les événements sont une fonctionnalité facultative de l'API SDM. Ils peuvent être facilement implémentés et validés à l'aide de votre projet Google Cloud.
Activer les événements
Les événements peuvent être activés dans la console Device Access . Sélectionnez votre projet dans la console, si ce n'est pas déjà fait.
Accéder à la console Device Access
Si vous avez déjà activé les événements (par exemple, lors de la création du projet), le champ Thème Pub/Sub de la section Activer un thème Pub/Sub pour les événements devrait déjà contenir une valeur, appelée "ID du thème", dans l'ancien format :
projects/sdm-prod/topics/enterprise-project-id
Ce format de sujet est hébergé par Google et restera actif pour votre projet, sauf si vous désactivez le sujet Pub/Sub hébergé par Google. Si vous la réactivez ultérieurement, vous serez redirigé vers le sujet Pub/Sub auto-hébergé.
Les sujets Pub/Sub auto-hébergés peuvent être créés ou modifiés dans le propre projet Google Cloud d'un développeur. Le développeur est également responsable de tous les coûts associés à l'utilisation de Pub/Sub. Pour en savoir plus, consultez les tarifs de Pub/Sub.
Créez le sujet Pub/Sub :
gcloud pubsub topics create {topic} --message-retention-duration=0s
Accordez les autorisations nécessaires à l'API SDM pour accéder aux données d'événements et les publier pour l'ID de thème de votre projet :
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"
Le format de l'ID de thème que vous venez de créer se présente comme suit :
projects/gcp-project-name/subscriptions/topic-id
Notez l'ID de votre sujet. Vous en aurez besoin pour activer les événements. Pour en savoir plus, consultez Créer un sujet.
Pour activer les événements :
- Cochez Enable events (Activer les événements), puis cliquez sur Create Project (Créer un projet).
- Cliquez sur l'icône pour Sujet Pub/Sub, puis sélectionnez Activer les événements avec le thème Pub/Sub.
- Saisissez l'ID du sujet Pub/Sub qui vous a été fourni ou que vous avez créé précédemment.
Copiez l'ID de votre sujet. Vous en aurez besoin pour créer un abonnement au sujet afin de pouvoir récupérer les messages d'événement.
Créer un abonnement pull
Un abonnement pull est un abonnement dans lequel un abonné lance des requêtes au serveur Pub/Sub pour les messages d'événements mis en file d'attente. Il s'agit d'un moyen simple et rapide de vérifier que des événements sont générés pour vos appareils autorisés.
Ouvrez Cloud Shell pour votre projet Google Cloud :
À l'invite Cloud Shell, exécutez la commande suivante pour créer un abonnement par extraction à votre sujet, en utilisant le subscription-id de votre choix et votre ID de sujet unique :
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].
Initier des événements
Pour initier des événements pour la première fois une fois l'abonnement Pub/Sub créé, appelez la liste de vos appareils en tant que déclencheur unique :
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Les événements de toutes les structures et de tous les appareils seront publiés après cet appel d'API.
Générer des événements
Des événements sont générés pour toutes les modifications apportées aux champs de caractéristiques, dont certaines sont automatiques et d'autres manuelles.
Par exemple, si la température ambiante près de votre thermostat Nest change, un événement pour le traitTempérature sera automatiquement envoyé avec une nouvelle valeur ambientTemperatureCelsius
.
Pour en générer un manuellement, vous pouvez :
- Modifier physiquement l'état de votre appareil, par exemple en changeant le mode de votre thermostat Nest.
- Déclenchez un événement, comme un mouvement, une personne ou un son sur une Google Nest Cam Indoor.
- Exécutez une commande d'appareil à l'aide de l'API SDM.
Consulter les messages
Vous pouvez consulter les messages d'événement dans votre projet Google Cloud, dans la section "Abonnements Pub/Sub" :
Accéder à la page "Abonnements Google Cloud Pub/Sub"
- Cliquez sur l'ID d'abonnement que vous avez créé précédemment.
- Sur l'écran Détails de l'abonnement, vous devriez voir l'activité du graphique Nombre de messages non confirmés. Cela indique que des messages d'événement ont été reçus pour votre abonnement. Si aucune activité ne s'affiche, patientez un peu ou générez d'autres événements.
- Cliquez sur AFFICHER LES MESSAGES pour afficher le panneau Messages.
- Cliquez sur EXTRAIRE pour afficher les messages. Elles doivent correspondre aux actions que vous avez utilisées pour générer des événements.
Vous pouvez également afficher les messages dans Cloud Shell avec une commande pull
de base :
gcloud pubsub subscriptions pull subscription-id
Pour en savoir plus sur les types d'abonnement, ainsi que sur les types d'événements envoyés par l'API SDM et sur la façon de les utiliser, consultez Événements.
Gérer les messages
Les messages doivent être régulièrement confirmés et purgés pour que l'abonnement reste propre et pour éviter la distribution de messages en double aux autres abonnés. Tous les messages d'abonnement peuvent être supprimés manuellement dans la section "Abonnements Pub/Sub" :
Accéder à la page "Abonnements Google Cloud Pub/Sub"
- Cliquez sur l'ID d'abonnement.
- Vous pouvez confirmer et purger les données de plusieurs façons :
- Cliquez sur AFFICHER LES MESSAGES pour afficher le panneau Messages. Cochez la case Activer la confirmation de messages, puis cliquez sur EXTRAIRE pour afficher et confirmer tous les messages.
- Cliquez sur SUPPRIMER LES MESSAGES pour supprimer définitivement tous les messages existants en les confirmant sans les afficher. Cliquez sur PURGE pour confirmer.
Vous pouvez également supprimer les messages dans Cloud Shell à l'aide de l'indicateur --auto-ack
avec une commande pull
de base :
gcloud pubsub subscriptions pull subscription-id --auto-ack
Gérer les abonnements
Les abonnements peuvent être configurés de différentes manières, comme décrit dans Utiliser les propriétés d'abonnement.
La façon dont vous souhaitez gérer les abonnements et les messages dépend de vous. Toutefois, pour une application de production, nous vous recommandons d'utiliser des comptes de service pour l'authentification, plutôt qu'un compte utilisateur comme vous l'avez fait jusqu'à présent dans ce guide de démarrage rapide. Un compte de service est utilisé par une application ou une machine virtuelle, et non par une personne. Il possède sa propre clé de compte unique.
Pour en savoir plus sur l'authentification des comptes de service avec Device Access, consultez Événements.