S'abonner aux événements

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 mises à jour pour tous les appareils et toutes les 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 facilement être mis en œuvre et vérifiés à l'aide de votre projet Google Cloud.

Activer les événements

Vous pouvez activer les événements dans la Device Access console. Sélectionnez votre projet dans la console, si ce n'est pas déjà fait.

Accéder à la Device Access console

Si vous avez déjà activé les événements (par exemple, lors de la création du projet), le champ Sujet Pub/Sub de la section Informations sur le projet doit déjà avoir une valeur, appelée ID du sujet, au format suivant:

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

Si vous n'avez pas activé les événements:

  1. Cliquez sur l'icône associée au sujet Pub/Sub, puis sélectionnez Modifier.
  2. Cochez Activer les événements, puis cliquez sur Enregistrer.
  3. Un ID de sujet est généré automatiquement, au format indiqué ci-dessus.

Copiez votre ID de sujet. Vous en aurez besoin pour créer un abonnement au sujet et ainsi récupérer les messages d'événement.

Créer un abonnement pull

Dans un abonnement pull, un abonné envoie des requêtes au serveur Pub/Sub pour obtenir des messages d'événement mis en file d'attente. Il s'agit d'un moyen simple et rapide de vérifier que les événements sont générés pour vos appareils autorisés.

Ouvrez Cloud Shell pour votre projet Google Cloud:

Accéder à Google Cloud Shell

Lorsque Cloud Shell vous y invite, exécutez la commande suivante pour créer un abonnement pull pour votre sujet, en utilisant le subscription-id de votre choix et votre ID de sujet unique:

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

Lancer des événements

Pour lancer des événements pour la première fois une fois l'abonnement Pub/Sub créé, effectuez un appel afin de répertorier 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 pour toutes les structures et 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 des champs de caractéristiques, certaines étant automatiques et d'autres manuelles.

Par exemple, si la température ambiante près de votre thermostat Nest change, un événement pour la caractéristiqueTempérature est automatiquement envoyé avec une nouvelle valeur ambientTemperatureCelsius.

Pour en générer manuellement un, vous avez deux possibilités:

  1. Modifier physiquement l'état de l'appareil (par exemple, changer le mode de votre Nest Thermostat)
  2. déclencher un événement, tel qu'un mouvement, une personne ou un son, sur une Google Nest Cam Indoor.
  3. Exécutez une commande d'appareil à l'aide de l'API SDM.

Consulter les messages

Les messages d'événement peuvent être consultés dans votre projet Google Cloud, dans la section "Abonnements Pub/Sub" :

Accéder à la page "Abonnements Google Cloud Pub/Sub"

  1. Cliquez sur l'ID d'abonnement que vous avez créé précédemment.
  2. 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 vous ne voyez aucune activité, attendez un peu ou générez d'autres événements.
  3. Cliquez sur AFFICHER LES MESSAGES pour afficher le panneau Messages.
  4. Cliquez sur TIRER 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 à l'aide d'une commande pull de base:

gcloud pubsub subscriptions pull subscription-id

Pour en savoir plus sur les types d'abonnements, les types d'événements envoyés par l'API SDM et leur utilisation, consultez la page Événements.

Gérer les messages

Les messages doivent être régulièrement confirmés et supprimés définitivement afin de maintenir un abonnement propre et d'éviter la distribution de messages en double aux autres abonnés. Tous les messages concernant les abonnements peuvent être supprimés manuellement et définitivement dans la section "Abonnements Pub/Sub" :

Accéder à la page "Abonnements Google Cloud Pub/Sub"

  1. Cliquez sur l'ID d'abonnement.
  2. Il existe plusieurs façons de confirmer et de supprimer définitivement les messages :
    1. Cliquez sur AFFICHER LES MESSAGES pour afficher le panneau Messages. Cochez la case Activer la confirmation de messages, puis cliquez sur PULL pour afficher et accuser réception de tous les messages.
    2. Cliquez sur EFFACER LES MESSAGES pour supprimer définitivement tous les messages existants en les confirmant sans les afficher. Cliquez sur PURGE pour confirmer.

Les messages peuvent également être supprimés définitivement dans Cloud Shell en utilisant l'option --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.

Bien que la manière dont vous souhaitez gérer les abonnements et les messages soit à vous de décider, 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 vu 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, et possède sa propre clé de compte unique.

Pour en savoir plus sur l'authentification des comptes de service avec Device Access, consultez la page Événements.