Partage via


Tutoriel : Utiliser un appareil simulé pour tester la connectivité avec votre hub IoT

Dans ce tutoriel, vous utilisez les outils du portail Azure IoT Hub et les commandes Azure CLI pour tester la connectivité de l’appareil. Ce tutoriel utilise également un simulateur d’appareil simple que vous exécutez sur votre ordinateur de bureau.

Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Dans ce tutoriel, vous allez apprendre à :

  • Vérifier l’authentification de vos appareils
  • Vérifier la connectivité appareil-à-cloud
  • Vérifiez la connectivité cloud-à-appareil
  • Vérifier la synchronisation de jumeau d’appareil

Prérequis

  • Ce tutoriel utilise Azure CLI pour créer des ressources cloud. Il existe deux façons d’exécuter des commandes CLI :

    Notes

    Cet article utilise la version la plus récente de l’extension Azure IoT, appelée azure-iot. La version héritée est appelée azure-cli-iot-ext. Une seule version doit être installée à la fois. Vous pouvez utiliser la commande az extension list pour valider les extensions actuellement installées.

    Utilisez az extension remove --name azure-cli-iot-ext pour supprimer la version héritée de l’extension.

    Utilisez az extension add --name azure-iot pour ajouter la nouvelle version de l’extension.

    Pour voir les extensions que vous avez installées, utilisez az extension list.

  • L’exemple d’application que vous exécutez dans ce didacticiel utilise Node.js. Votre ordinateur de développement doit disposer de Node.js v10.x.x ou ultérieur.

    • Vous pouvez télécharger Node.js pour plusieurs plateformes sur nodejs.org.

    • Vous pouvez vérifier la version actuelle de Node.js sur votre machine de développement à l’aide de la commande suivante :

      node --version
      
  • Clonez ou téléchargez l’exemple de projet Node.js à partir d’exemples Azure IoT pour Node.js.

  • Assurez-vous que le port 8883 est ouvert dans votre pare-feu. L'exemple d’appareil de ce tutoriel utilise le protocole MQTT qui communique sur le port 8883. Dans certains environnements réseau professionnels et scolaires, ce port peut être bloqué. Pour plus d’informations sur les différentes façons de contourner ce problème, consultez Connexion à IoT Hub (MQTT).

Créer un hub IoT

Dans cette section, vous utilisez Azure CLI pour créer un hub IoT et un groupe de ressources. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Un hub IoT agit en tant que hub de messages central pour la communication bidirectionnelle entre votre application IoT et les appareils.

Si vous disposez déjà d’un hub IoT dans votre abonnement Azure, vous pouvez ignorer cette section.

Pour créer un hub IoT et un groupe de ressources :

  1. Lancez votre application CLI. Pour utiliser les commandes Common Language Infrastructure (CLI) dans le reste de cet article, copiez la syntaxe de la commande, collez-la dans votre application CLI, modifiez les valeurs des variables et appuyez sur Enter.

    • Si vous utilisez Cloud Shell, sélectionnez le bouton Essayer dans les commandes CLI pour lancer Cloud Shell dans une fenêtre de navigateur partagée. Ou vous pouvez ouvrir Cloud Shell dans un onglet de navigateur distinct.
    • Si vous utilisez Azure CLI localement, démarrez votre application console CLI et connectez-vous à Azure CLI.
  2. Exécutez az extension add pour installer ou mettre à niveau l’extension azure-iot vers la version actuelle.

    az extension add --upgrade --name azure-iot
    
  3. Dans votre application CLI, exécutez la commande az group create pour créer un groupe de ressources. La commande suivante crée un groupe de ressources nommé MyResourceGroup à l’emplacement eastus :

    Notes

    Si vous le souhaitez, vous pouvez définir un autre emplacement. Pour voir les régions disponibles, exécutez az account list-locations. Ce démarrage rapide utilise eastus comme indiqué dans l’exemple de commande.

    az group create --name MyResourceGroup --location eastus
    
  4. Exécutez la commande az iot hub create pour créer un hub IoT. La création de votre hub IoT peut prendre plusieurs minutes.

    YourIotHubName. Remplacez cet espace réservé et les accolades qui l’entourent dans la commande suivante, en utilisant le nom que vous avez choisi pour votre hub IoT. Le nom du hub IoT doit être globalement unique dans Azure. Utilisez le nom de votre hub IoT dans le reste de ce guide de démarrage rapide là où vous voyez l’espace réservé.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Vérifier l’authentification des appareils

Un appareil doit s’authentifier auprès de votre Hub avant de pouvoir échanger des données avec le Hub. Vous pouvez utiliser l’outil Appareils IoT dans la section Gestion des appareils du portail pour gérer vos appareils et vérifier les clés d’authentification qu’ils utilisent. Dans cette section du tutoriel, vous ajoutez un nouvel appareil de test, récupérez sa clé et vérifiez que l’appareil de test peut se connecter au Hub. Ensuite, vous réinitialisez la clé d’authentification pour observer ce qui ce produit lorsqu’un appareil tente d’utiliser une clé obsolète.

Inscrire un appareil

Un appareil doit être inscrit dans votre hub IoT pour pouvoir se connecter. Dans cette section, vous utilisez Azure CLI pour créer une identité d’appareil.

Si vous disposez déjà d’un appareil inscrit dans votre hub IoT, vous pouvez ignorer cette section.

Pour créer une identité d’appareil :

  1. Exécutez la commande az iot hub device-identity create dans votre shell CLI. Cette commande crée l'identité de l'appareil.

    nom_de_votre_iothub. Remplacez l’espace réservé ci-dessous par le nom que vous avez choisi pour votre hub IoT.

    myDevice. Vous pouvez utiliser ce nom pour l’ID d’appareil tout au long de cet article, ou fournissez un autre nom d’appareil.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Exécutez la commande az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    La chaîne de connexion en sortie est au format suivant :

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Enregistrez la chaîne de connexion en lieu sûr.

Notes

Maintenez votre application CLI ouverte. Vous l’utiliserez plus tard.

Simuler un appareil de test

Pour simuler l’envoi par un appareil de données de télémétrie vers votre hub IoT, exécutez l’application d’appareil simulé Node.js que vous avez précédemment téléchargée.

  1. Dans une fenêtre de terminal sur votre machine de développement, accédez au dossier racine de l’exemple de projet Node.js que vous avez téléchargé. Accédez ensuite au dossier iot-hub\Tutorials\ConnectivityTests.

  2. Dans la fenêtre de terminal, exécutez les commandes suivantes pour installer les bibliothèques requises et exécuter l’application d’appareil simulé. Utilisez la chaîne de connexion de l’appareil que vous avez notée lors de l’inscription de l’appareil.

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    La fenêtre de terminal affiche un message de réussite une fois qu’il se connecte à votre hub :

    Screenshot that shows the simulated device connecting.

Vous avez maintenant correctement authentifié depuis un appareil à l’aide d’une clé d’appareil générée par votre Hub IoT.

Réinitialiser les clés

Dans cette section, vous réinitialisez la clé d’appareil et observez l’erreur lorsque l’appareil simulé tente de se connecter.

  1. Pour réinitialiser la clé primaire de votre appareil, exécutez la commande az iot hub device-identity update :

    # Generate a new Base64 encoded key using the current date
    read key < <(date +%s | sha256sum | base64 | head -c 32)
    
    # Reset the primary device key for test device
    az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
    
  2. Dans la fenêtre de terminal sur votre machine de développement, exécutez à nouveau l’application d’appareil simulé :

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Cette fois, vous voyez une erreur d’authentification lorsque l’application tente de se connecter :

    Screenshot that shows the connection failing after the key reset.

Générer un jeton de signature d’accès partagé (SAS)

Si votre appareil utilise l’un des Kits de développement logiciel (SDK) de l’appareil IoT Hub, le code de bibliothèque du Kit de développement logiciel (SDK) génère le jeton SAP utilisé pour l’authentification auprès du Hub. Un jeton SAP est généré à partir du nom de votre Hub, du nom de votre appareil et de la clé de l’appareil.

Dans certains scénarios, comme dans une passerelle de protocole cloud ou dans le cadre d’un schéma d’authentification personnalisé, vous devrez peut-être générer le jeton SAP vous-même. Pour résoudre les problèmes liés à votre code de génération SAP, il est utile de générer un jeton SAP vérifié à utiliser pendant le test.

Notes

L’exemple SimulatedDevice-2.js inclut des exemples de génération d’un jeton SAP avec et sans le kit de développement logiciel.

  1. Exécutez la commande az iot hub genereate-sas-token pour générer un jeton SAS connu pour convenir à l’aide de l’interface CLI :

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Copiez le texte entier du jeton SAP généré. Un jeton SAS ressemble à l’exemple suivant : SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. Dans une fenêtre de terminal sur votre machine de développement, accédez au dossier racine de l’exemple de projet Node.js que vous avez téléchargé. Accédez ensuite au dossier iot-hub\Tutorials\ConnectivityTests.

  4. Dans la fenêtre de terminal, exécutez les commandes suivantes pour installer les bibliothèques requises et exécuter l’application d’appareil simulé :

    npm install
    node SimulatedDevice-2.js "{Your SAS token}"
    

    La fenêtre de terminal affiche un message de réussite une fois qu’il se connecte à votre hub avec le jeton SAS :

    Screenshot that shows a successful connection using a SAS token.

Vous avez maintenant correctement authentifié depuis un appareil à l’aide d’un jeton de test SAP généré par une commande CLI. Le fichier SimulatedDevice-2.js inclut l’exemple de code qui montre comment générer un jeton SAP dans le code.

Protocoles

Un appareil peut utiliser l’un des protocoles suivants pour se connecter à votre Hub IoT :

Protocol Port sortant
MQTT 8883
MQTT sur WebSockets 443
AMQP 5671
AMQP sur WebSockets 443
HTTPS 443

Si le port de sortie est bloqué par un pare-feu, l’appareil ne peut pas se connecter :

Screenshot that shows a connection error when the outbound port is blocked.

Vérifier la connectivité appareil-à-cloud

Après la connexion d’un appareil, ce dernier commence à envoyer des données de télémétrie à votre hub IoT. Cette section vous montre comment vous pouvez vérifier que les donnés de télémétrie envoyées par l’appareil atteignent votre Hub.

Envoyer des messages appareil-à-cloud

  1. Étant donné que nous réinitialisons la chaîne de connexion pour votre appareil dans la section précédente, utilisez la commande az iot hub device-identity connection-string show pour récupérer la chaîne de connexion mise à jour :

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Pour exécuter un appareil simulé qui envoie des messages, accédez au dossier iot-hub\Tutorials\ConnectivityTests dans le code que vous avez téléchargé.

  3. Dans la fenêtre de terminal, exécutez les commandes suivantes pour installer les bibliothèques requises et exécuter l’application d’appareil simulé :

    npm install
    node SimulatedDevice-3.js "{your_device_connection_string}"
    

    La fenêtre de terminal affiche des informations lorsqu’il envoie des données de télémétrie à votre Hub :

    Screenshot that shows the simulated device sending messages.

Surveiller les messages entrants

Vous pouvez utiliser les Métriques dans le portail pour vérifier que les messages de télémétrie arrivent jusqu’à votre hub IoT.

  1. Dans le Portail Azure, sélectionnez votre hub IoT dans la liste déroulante Ressource.

  2. Sélectionnez Métriques à partir de la section Surveillance du menu de navigation.

  3. Sélectionnez Messages de télémétrie envoyés en tant que métrique, puis définissez l’intervalle de temps sur Dernière heure. Le graphique indique le nombre agrégé de messages envoyés par l’appareil simulé :

    Screenshot showing left pane metrics.

Après le démarrage de l’appareil simulé, les mesures deviennent disponibles après quelques minutes.

Vérifiez la connectivité cloud-à-appareil

Cette section montre comment vous pouvez effectuer un appel de méthode directe test sur un appareil pour vérifier la connectivité cloud-à-appareil. Vous exécutez un appareil simulé sur votre machine de développement pour écouter des appels de méthode directe à partir de votre Hub.

  1. Dans une fenêtre de terminal, exécutez les commandes suivantes pour démarrer l’application d’appareil simulé :

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Dans une fenêtre distincte, utilisez la commande az iot hub invoke-device-method pour appeler une méthode directe sur l’appareil :

    az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
    

    L’appareil simulé affiche un message dans la console lorsqu’il reçoit un appel de méthode directe :

    Screenshot that shows the device confirming that the direct method was received.

    Quand l’appareil simulé reçoit correctement l’appel de méthode directe, il renvoie un accusé de réception au hub :

    Screenshot showing that the device returns a direct method acknowledgment.

Vérifier la synchronisation des jumeaux

Les appareils utilisent des jumeaux pour synchroniser l’état entre le périphérique et le Hub. Dans cette section, vous utilisez des commandes CLI pour envoyer les propriétés souhaitées à un appareil et lire les propriétés signalées envoyées par l’appareil.

L’appareil simulé que vous utilisez dans cette section envoie des propriétés signalées au Hub chaque fois qu’il démarre, et imprime les propriétés souhaitées vers la console chaque fois qu’il les reçoit.

  1. Dans une fenêtre de terminal, exécutez les commandes suivantes pour démarrer l’application d’appareil simulé :

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Dans une fenêtre distincte, exécutez la commande az iot hub device-twin show pour vérifier que le hub a reçu les propriétés signalées de l’appareil :

    az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    Dans la sortie de la commande, vous pouvez voir les propriétés devicelaststarted dans la section propriétés déclarées. Cette propriété indique la date et l’heure du dernier démarrage de l’appareil simulé.

    Screenshot showing the reported properties of a device.

  3. Pour vérifier que le hub peut envoyer les valeurs de propriétés souhaitées de l’appareil, utilisez la commande az iot hub device-twin update :

    az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    L’appareil simulé imprime un message lorsqu’il reçoit une mise à jour de la propriété souhaitée en provenance du Hub :

    Screenshot that shows the device confirming that the desired properties update was received.

En plus de recevoir les modifications apportées aux propriétés souhaitées lorsqu’elles sont effectuées, l’appareil simulé vérifie automatiquement les propriétés souhaitées lors de son démarrage.

Nettoyer les ressources

Si vous n’avez plus besoin du hub IoT, supprimez-le ainsi que le groupe de ressources dans le portail. Pour ce faire, sélectionnez le groupe de ressources qui contient votre hub IoT, puis sur Supprimer.

Étapes suivantes

Dans ce tutoriel, nous avons vu comment vérifier vos clés d’appareils, vérifier la connectivité appareil-à-cloud, vérifier la connectivité cloud-à-appareil et vérifier la synchronisation de jumeau d’appareil. Pour en savoir plus sur la façon de contrôler votre Hub IoT, consultez l’article sur les procédures de contrôle IoT Hub.