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 :
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide d’Azure Cloud Shell - Bash.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
- Connectez-vous à l’interface Azure CLI à l’aide de la commande az login.
- Lorsque vous y êtes invité, installez les extensions Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
- Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
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éeazure-cli-iot-ext
. Une seule version doit être installée à la fois. Vous pouvez utiliser la commandeaz 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 :
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.
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
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
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 :
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}
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>
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.
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.
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 :
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.
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}
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 :
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.
Exécutez la commande az iot hub generate-sas-token afin de générer un jeton SAS adéquat connu à l’aide de l’interface CLI :
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
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
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.
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 :
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 :
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
É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}
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é.
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 :
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.
Dans le Portail Azure, sélectionnez votre hub IoT dans la liste déroulante Ressource.
Sélectionnez Métriques à partir de la section Surveillance du menu de navigation.
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é :
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.
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}"
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 :
Quand l’appareil simulé reçoit correctement l’appel de méthode directe, il renvoie un accusé de réception au hub :
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.
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}"
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é.
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 :
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.