S'abonner à des événements

Les événements sont asynchrones et gérés par Google Cloud Pub/Sub, dans un seul sujet selon le paramètre Project. Les événements fournissent des mises à jour pour tous les appareils et les structures, et 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énements n'ont pas expiré.

Les événements constituent une fonctionnalité facultative de l'API SDM. Elles peuvent facilement être mises en œuvre et validées à l'aide de votre projet Google Cloud.

Activer les événements

Les événements peuvent être activés Device Access dans la console. Si ce n'est pas déjà fait, sélectionnez votre projet dans la console.

Accéder à la Device Access console

Si vous avez déjà activé les événements (par exemple, pendant 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 de 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 du 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é pour vous au format indiqué ci-dessus.

Copiez votre ID de sujet, car vous en aurez besoin pour créer un abonnement associé au sujet afin de pouvoir récupérer les messages d'événements.

Créer un abonnement pull

Un abonnement pull est un abonnement qui envoie des requêtes au serveur Pub/Sub pour des messages d'événements 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 à 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éé, 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 pour toutes les structures et tous les appareils seront publiés après cet appel d'API.

Générer des événements

Les événements sont générés pour toutes les modifications des champs de caractéristiques, qui sont automatiques et d'autres manuelles.

Par exemple, si la température ambiante à proximité de votre thermostat Nest change, un événement associé à la caractéristiqueTempérature sera automatiquement envoyé avec une nouvelle valeur ambientTemperatureCelsius.

Pour en générer une manuellement, deux possibilités s'offrent à vous:

  1. Modifier physiquement l'état de l'appareil, par exemple changer le mode de votre thermostat Nest
  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

Vous pouvez afficher les messages d'événement dans votre projet Google Cloud, dans la section "Abonnements Pub/Sub" :

Accéder aux abonnements Google Cloud Pub/Sub

  1. Cliquez sur l'ID d'abonnement que vous avez créé.
  2. Sur l'écran Détails de l'abonnement, vous devriez voir l'activité du graphique Nombre de messages non confirmés. Cela signifie que des messages d'événement sont arrivés 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 Extraire pour afficher les messages. Ils 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 de la commande pull de base:

gcloud pubsub subscriptions pull subscription-id

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

Gérer les messages

Les messages doivent être régulièrement confirmés et supprimés définitivement, afin que l'abonnement reste propre et que les autres abonnés ne reçoivent pas de messages en double. Tous les messages d'abonnement peuvent être supprimés manuellement dans la section "Abonnements Pub/Sub" :

Accéder aux abonnements Google Cloud Pub/Sub

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

Les messages peuvent également être supprimés définitivement 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

Vous pouvez configurer les abonnements de différentes manières, comme décrit dans Utiliser les propriétés d'abonnement.

Bien que la façon dont vous souhaitez gérer les abonnements et les messages vous incombe, nous vous recommandons d'utiliser les comptes de service pour l'authentification plutôt qu'un compte utilisateur comme vous l'avez déjà fait 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 de compte de service avec Device Access, consultez Événements.