Commander des événements de connexion d’appareils depuis Azure IoT Hub à l’aide d’Azure Cosmos DB

Azure Event Grid vous permet de créer des applications basées sur des événements et d’intégrer facilement des événements IoT dans vos solutions métier. Cet article vous guide tout au long d’une configuration avec Cosmos DB, une application logique, des événements IoT Hub et un Raspberry Pi simulé pour collecter et stocker les événements de connexion et de déconnexion d’un appareil.

À partir du moment où votre appareil s’exécute, une série d’opérations s’active :

  1. L’appareil Pi, à l’aide de votre clé d’appareil IoT Hub, est démarré, puis arrêté

  2. Un événement IoT Hub capture l’activité de l’appareil, puis envoie une requête HTTP à votre application logique

  3. L’application logique traite la requête HTTP en fonction d’une condition que vous définissez

  4. L’application logique enregistre les événements de connexion ou de déconnexion dans un nouveau document dans Cosmos DB

    Capture d’écran de la configuration que nous allons créer pour cet article. Cette configuration montre comment tous les services et appareils sont connectés.

Prérequis

  • Un compte Azure Cosmos DB for NoSQL actif. Si vous n’en avez pas encore créé un, consultez Créer un compte de base de données pour obtenir une procédure pas à pas.

  • Une collection dans votre base de données. Consultez Ajouter une collection pour une procédure pas à pas. Lorsque vous créez votre collection, utilisez /id pour la clé de partition.

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez-en un gratuitement avant de commencer.

  • Un hub IoT sous votre abonnement Azure. Créez-en un avec l’interface CLI ou le portail Azure.

Créer une application logique

Créons une application logique et ajoutons un déclencheur Event Grid qui supervise le groupe de ressources de votre machine virtuelle.

Créer une ressource d’application logique

  1. Dans le portail Azure, sélectionnez +Créer une ressource, Intégration, puis Application logique.

    Capture d’écran de la manière de trouver et de sélectionner une application logique dans le portail Azure.

  2. Complétez le formulaire pour créer une application logique qui inclut :

    • Votre abonnement

    • Votre groupe de ressources (ou créez-en un)

    • Un nom d’application logique unique dans votre abonnement

    • La région de votre IoT Hub

    • Non pour activer Log Analytics

    • Un type de plan Consommation

      Notes

      Le type de plan Consommation est l’option qui active le Concepteur d’application logique dans l’interface utilisateur. Si vous choisissez Standard (valeur par défaut), vous devez créer un workflow pour que le Concepteur d’application logique devienne disponible.

    Capture d’écran de la création d’une application logique dans le portail Azure.

  3. Sélectionnez Vérifier + créer pour passer en revue votre configuration, puis sélectionnez Créer pour créer l’application logique.

  4. Vous venez de créer une ressource Azure pour votre application logique. Une fois qu’Azure a déployé votre application logique, sélectionnez Accéder à la ressource. Le Concepteur d’applications logiques vous propose des modèles courants pour faciliter vos premiers pas.

  5. Dans le Concepteur d’application logique, faites défiler jusqu’à ce que vous voyiez la section Modèles, puis choisissez Application logique vide afin de pouvoir créer votre application logique à partir de zéro.

Sélectionner un déclencheur

Un déclencheur désigne un événement spécifique qui démarre votre application logique. Pour ce didacticiel, le déclencheur qui lance le flux de travail reçoit une demande via HTTP.

  1. Dans la barre de recherche des connecteurs et des déclencheurs, tapez HTTP et appuyez sur Entrée.

  2. Sélectionnez la requête Lors de la réception d’une requête HTTP comme déclencheur.

    Capture d’écran de la façon de trouver le déclencheur de requête HTTP sélectionné.

  3. Sélectionnez Utiliser l’exemple de charge utile pour générer le schéma.

    Capture d’écran de la façon d’utiliser un exemple de charge utile pour générer un schéma.

  4. Collez l’exemple de code JSON suivant dans la zone de texte, puis sélectionnez Terminé.

    Ce JSON est utilisé uniquement comme modèle. Les valeurs exactes ne sont donc pas importantes.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Capture d’écran de l’échantillon de charge utile JSON collé dans la zone de texte dans Azure.

Créer une condition

Les conditions contribuent à exécuter des actions spécifiques après avoir passé la condition en question. Pour cet article, la condition est de vérifier si l’eventType est appareil connecté ou appareil déconnecté. L’action exécutée lorsque cet eventType est vrai est la création d’un document dans Azure Cosmos DB. Cette condition est créée dans le Concepteur d’application logique.

  1. Sélectionnez + Nouvelle étape, puis l’onglet Intégré, et trouvez et sélectionnez le contrôle appelé Condition.

  2. Dans votre condition, remplacez And par Or, car nous voulons capturer les événements de connexion et de déconnexion dans une même analyse.

  3. Sélectionnez la case Choisir une valeur et une fenêtre contextuelle s’affiche, montrant le Contenu dynamique ; les champs qui peuvent être sélectionnés.

    • Choisissez eventType. La fenêtre contextuelle se ferme et le Corps est placé dans Sélectionner une sortie à partir des étapes précédentes, automatiquement. Sélectionnez Condition pour rouvrir votre instruction conditionnelle.

    • Conservez la valeur est égal à.

    • Tapez Microsoft.Devices.DeviceConnected comme dernière valeur de cette ligne.

    • Sélectionnez + Ajouter pour ajouter une autre ligne.

    • Cette deuxième ligne est similaire à la première, sauf que nous recherchons des événements de déconnexion.

      Utilisez eventType, est égal à et Microsoft.Devices.DeviceDisconnected pour les valeurs de ligne.

      Capture d’écran de la condition For Each complète.

  4. Dans la boîte de dialogue si True, cliquez sur Ajouter une action.

    Capture d’écran de la boîte « If true » dans Azure.

  5. Recherchez Cosmos DB et sélectionnez Azure Cosmos DB — Créer ou mettre à jour un document (V3)

    Capture d’écran de la recherche pour Azure Cosmos DB.

  6. Vous voyez le panneau Créer ou mettre à jour un document (V3). Entrez ces valeurs pour les champs :

    Nom du compte Azure Cosmos DB : {Ajoutez votre nom de compte}

    ID de base de données : ToDoList

    ID de la collection : Éléments

    Document : Choisissez Current item dans la liste des paramètres de contenu dynamique

    Capture d’écran montrant un élément Exécuter la procédure stockée (V3) avec l’option Ajouter un nouveau paramètre sélectionnée

  7. Enregistrez votre application logique.

Copier l’URL HTTP

Avant de quitter le Concepteur d’applications logiques, copiez l’URL qu’écoute votre application logique dans l’attente d’un déclencheur. Cette URL vous permet de configurer Event Grid.

  1. Développez la zone de configuration de déclencheur Lors de la réception d’une demande HTTP en le sélectionnant.

  2. Copiez la valeur du champ URL HTTP POST en sélectionnant le bouton de copie en regard de celui-ci.

    Capture d’écran de l’endroit où trouver l’URL HTTP à copier.

  3. Enregistrez cette URL afin de pouvoir l’utiliser dans la section suivante.

Configurer l’abonnement pour les événements IoT Hub

Dans cette section, vous configurez votre hub IoT pour publier des événements à mesure qu’ils se produisent.

  1. Accédez à votre hub IoT dans le portail Azure.

  2. Sélectionnez Événements.

    Capture d’écran de l’emplacement du bouton Événements dans le menu d’IoT Hub.

  3. Sélectionnez + Abonnement aux événements.

    Créer un abonnement aux événements

  4. Remplissez Détails de l’abonnement à l’événement : fournissez un Nom descriptif et sélectionnez Schéma de la grille d’événement comme Schéma de l’événement.

  5. Créez un Nom de rubrique système pour votre ressource IoT Hub.

  6. Renseignez les champs Types d’événements. Dans la liste déroulante, sélectionnez uniquement Appareil connecté et Appareil déconnecté dans le menu. Cliquez n’importe où dans l’écran pour fermer la liste et enregistrer vos sélections.

    Définir les types d’événements à rechercher

  7. Pour Détails du point de terminaison, sélectionnez Webhook comme type de point de terminaison puis cliquez sur le point de terminaison sélectionné et collez l’URL copiée à partir de votre application logique et confirmez la sélection.

    Sélectionner l’URL du point de terminaison

  8. Le formulaire doit maintenant ressembler à l’exemple suivant :

    Capture d’écran du formulaire de création d’une inscription à un événement.

    Sélectionnez Créer pour enregistrer l’abonnement aux événements.

    Important

    Attendez quelques minutes pour que votre événement soit traité avant de lancer votre appareil. Chaque fois que des services Azure sont créés ou modifiés, l’étape suivante de votre pipeline peut entraîner des erreurs inutiles. Par exemple, si votre hub IoT n’est pas dans un état actif, il ne sera pas prêt à recevoir des événements. Vérifiez la page Vue d’ensemble de votre hub IoT pour voir s’il est dans un état actif ou non. Si ce n’est pas le cas, vous verrez un avertissement en haut de la page.

    Capture d’écran d’une erreur IoT Hub qui indique qu’il n’est pas dans un état actif.

Lancer l’appareil et observer les événements

Maintenant que votre abonnement aux événements est configuré, nous allons le tester en vous connectant à un appareil.

Inscrire un appareil dans un IoT Hub

  1. À partir de votre hub IoT, sélectionnez Appareils.

  2. Sélectionnez + Ajouter un appareil en haut du volet.

  3. Pour ID d’appareil, entrez Demo-Device-1.

  4. Sélectionnez Enregistrer.

    Capture d’écran de l’emplacement du bouton Ajouter un appareil.

  5. Recliquez sur l’appareil ; maintenant les chaînes de connexion et les clés sont renseignées. Copiez et enregistrez la Chaîne de connexion primaire en vue d’une utilisation ultérieure.

    Capture d’écran de l’emplacement de la chaîne de connexion primaire de votre appareil.

Démarrer le simulateur Raspberry Pi

Nous allons utiliser le simulateur web Raspberry Pi pour simuler la connexion de l’appareil.

Démarrer le simulateur Raspberry Pi

Exécuter un exemple d’application sur le simulateur web Raspberry Pi

Cet exemple d’application déclenchera un événement d’appareil connecté.

  1. Dans la zone de codage, remplacez l’espace réservé à la ligne 15 par votre chaîne de connexion d’appareil Azure IoT Hub que vous avez enregistrée à la fin de la section précédente.

    Capture d’écran de l’endroit où ajouter votre chaîne de connexion primaire dans le script Raspberry Pi.

  2. Exécutez l’application en sélectionnant Exécuter.

    Vous devriez voir quelque chose de similaire au résultat suivant, qui affiche les données de capteur et les messages envoyés à votre IoT Hub.

    Capture d’écran de ce à quoi vous devez vous attendre dans votre console de sortie lorsque vous exécutez le Raspberry Pi.

  3. Vous pouvez vérifier la page Vue d’ensemble de votre application logique pour vérifier si votre logique est déclenchée. Vous verrez Réussite ou Échec. Vérifiez ici pour connaître l’état de votre application logique si la résolution des problèmes est nécessaire. Attendez-vous à un délai de 15 à 30 secondes à partir du moment où votre déclencheur s’exécute. Si vous devez résoudre des problèmes avec votre application logique, consultez cet article Résoudre les erreurs.

    Capture d’écran des mises à jour de statut sur la page de présentation de votre application logique.

  4. Sélectionnez Arrêter pour arrêter le simulateur, ce qui déclenche un événement d’appareil déconnecté. Cet événement s’affichera sur la page Vue d’ensemble de l’application logique, tout comme l’événement de connexion enregistré là-bas.

Vous avez maintenant exécuté un exemple d’application pour collecter les événements de connexion et de déconnexion de votre appareil, qui vont à votre hub IoT.

Observer des événements dans Azure Cosmos DB

Vous pouvez voir des résultats de l’application logique exécutée dans votre document Cosmos DB. Le document apparaît dans votre collection Éléments lorsque vous actualisez la page. Chaque événement d’état de connexion génère un nouveau document affecté à un id unique. L’image suivante montre le document créé lors du démarrage de l’appareil (connecté). Le type d’événement connecté est répertorié dans la sortie JSON.

Capture d’écran de l’événement d’état de connexion nouvellement généré dans une collection Cosmos DB.

Utilisation de l’interface de ligne de commande Microsoft Azure

Au lieu d’utiliser le portail Azure, vous pouvez effectuer les étapes IoT Hub à l’aide de l’interface Azure CLI. Pour plus d’informations, consultez les pages de l’interface de ligne de commande Azure consacrées à la création d’un abonnement aux événements et à la création d’un appareil IoT.

Nettoyer les ressources

Ce didacticiel utilise des ressources qui peuvent entraîner des frais sur votre abonnement Azure. Quand vous avez terminé de tester le tutoriel et vos résultats, désactivez ou supprimez les ressources que vous ne souhaitez pas conserver.

Application logique

Pour ne pas perdre le travail effectué sur votre application logique, désactivez-la au lieu de la supprimer.

  1. Accédez à votre application logique.

  2. Dans le panneau Vue d’ensemble, sélectionnez Supprimer ou Désactiver.

    Chaque abonnement peut avoir un hub IoT gratuit. Si vous avez créé un hub gratuit pour ce didacticiel, vous n’avez pas besoin de le supprimer pour éviter les frais.

IoT Hub ou Event Grid

  1. Accédez à votre hub IoT.

  2. Dans le panneau Vue d’ensemble, sélectionnez Supprimer.

  3. Même si vous conservez votre hub IoT, vous pouvez souhaiter supprimer l’abonnement aux événements que vous avez créé. Dans votre hub IoT, sélectionnez Grille d’événement.

  4. Sélectionnez l’abonnement que vous souhaitez supprimer, puis choisissez Supprimer.

Cosmos DB

Pour supprimer un compte Azure Cosmos DB depuis le portail Azure, accédez à votre ressource et sélectionnez Supprimer le compte dans la barre de menus supérieure. Consultez les instructions détaillées pour la suppression d’un compte Azure Cosmos DB.

Étapes suivantes