Prise en main de la gestion d’appareils (Azure CLI)

Les applications back-end peuvent utiliser des primitives Azure IoT Hub, par exemple les jumeaux d’appareil et les méthodes directes, pour effectuer le démarrage et le monitoring à distance des actions de gestion des appareils sur les appareils. Cet article vous montre comment Azure CLI et un appareil peuvent fonctionner ensemble pour appeler une méthode directe pour un appareil à l’aide de IoT Hub.

Notes

Les fonctionnalités décrites dans cet article sont uniquement disponibles au niveau Standard d’IoT Hub. Pour plus d’informations sur les niveaux de base et standard/gratuit d’IoT Hub, consultez Choisir le niveau IoT Hub correspondant à votre solution.

Utilisez une méthode directe pour lancer des actions de gestion d’appareils (redémarrage, réinitialisation des paramètres d’usine et mise à jour du microprogramme) dans une session Azure CLI. L’appareil est chargé de :

  • Gérer la requête de méthode envoyée à partir d’IoT Hub.

  • Démarrer l’action correspondante spécifique à l’appareil sur l’appareil.

  • Fournir à IoT Hub des mises à jour de l’état via des propriétés signalées.

Vous pouvez utiliser Azure CLI pour exécuter des requêtes sur la représentation d’appareil afin d’indiquer la progression des actions de gestion de votre appareil. Pour plus d’informations sur l’utilisation de méthodes directes, consultez Guide de communication cloud-appareil.

Cet article vous montre comment créer deux sessions Azure CLI :

  • Session qui crée un appareil simulé. L’appareil simulé est configuré pour retourner un code d’état et une charge utile JSON lorsqu’une méthode directe est appelée.

  • Session qui appelle une méthode directe sur l’appareil simulé créé dans l’autre session.

Prérequis

  • Azure CLI. Vous pouvez également exécuter toutes les commandes dans ce démarrage rapide à l’aide d’Azure Cloud Shell, un interpréteur de commandes CLI interactif qui s’exécute dans votre navigateur ou dans une application telle que Terminal Windows. Si vous utilisez Cloud Shell, vous n’avez rien à installer. Si vous préférez utiliser l’interface de ligne de commande en local, cet article nécessite Azure CLI version 2.36 ou ultérieure. Exécutez az --version pour trouver la version. Pour installer ou mettre à niveau localement Azure CLI, consultez Installer Azure CLI.

  • Un hub IoT dans votre abonnement Azure. Si vous n’avez pas encore de hub, vous pouvez suivre les étapes décrites dans Créer un hub IoT.

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

Préparer le Cloud Shell

Si vous souhaitez utiliser Azure Cloud Shell, vous devez d’abord le lancer et le configurer. Si vous utilisez l’interface CLI localement, passez à la section Préparer deux sessions CLI.

  1. Sélectionnez l’icône Cloud Shell dans l’en-tête de page dans le Portail Azure.

    Capture d’écran des contrôles globaux de l’en-tête de page du Portail Azure, mettant en évidence l’icône Cloud Shell.

    Notes

    S’il s’agit de la première fois que vous utilisez Cloud Shell, vous êtes invité à créer un stockage, requis pour utiliser Cloud Shell. Sélectionnez un abonnement pour créer un compte de stockage et un partage Microsoft Azure Files.

  2. Utilisez le sélecteur d’environnement dans la barre d’outils Cloud Shell pour sélectionner votre environnement CLI préféré. Cet article utilise l’environnement Bash. Vous pouvez également utiliser l’environnement PowerShell.

    Notes

    Certaines commandes nécessitent une syntaxe ou une mise en forme différente dans les environnements Bash et PowerShell. Pour plus d’informations, consultez Conseils pour l’utilisation réussie d’Azure CLI.

    Capture d’écran d’une fenêtre Azure Cloud Shell, mettant en évidence le sélecteur d’environnement dans la barre d’outils.

Préparer deux sessions CLI

Vous devez ensuite préparer deux sessions Azure CLI. Si vous utilisez le Cloud Shell, vous allez exécuter ces sessions dans des onglets Cloud Shell distincts. Si vous utilisez un client CLI local, vous exécuterez deux instances CLI distinctes. Utilisez les sessions CLI distinctes pour les tâches suivantes :

  • La première session simule un appareil IoT qui communique avec votre IoT Hub.
  • La deuxième session appelle une méthode directe à partir de votre appareil simulé à l’aide de votre hub IoT.

Notes

Azure CLI nécessite que vous soyez connecté à votre compte Azure. Si vous utilisez le Cloud Shell, vous êtes automatiquement connecté à votre compte Azure. Si vous utilisez un client CLI local, vous devez vous connecter à chaque session CLI. Toutes les communications entre votre session d’interpréteur de commandes Azure CLI et votre hub IoT sont authentifiées et chiffrées. Par conséquent, cet article n’a pas besoin d’une authentification supplémentaire que vous utiliseriez avec un appareil réel, comme une chaîne de connexion. Pour plus d’informations sur la connexion à Azure CLI, consultez Se connecter avec Azure CLI.

  1. Dans la première session CLI, exécutez la commande az extension add. La commande ajoute l’extension Microsoft Azure IoT pour Azure CLI dans votre shell CLI. L’extension ajoute des commandes IoT Hub, IoT Edge et du service IoT Hub Device Provisioning (DPS) à Azure CLI. Après l’installation de l’extension, vous n’avez pas besoin de l’installer à nouveau dans une session Cloud Shell.

    az extension add --name azure-iot
    

    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.

  2. Ouvrez une deuxième session CLI. Si vous utilisez le Cloud Shell dans un navigateur, sélectionnez l’icône Ouvrir une nouvelle session dans la barre d’outils de votre première session CLI. Si vous utilisez l’interface CLI localement, ouvrez une deuxième instance.

    Capture d’écran d’une fenêtre Azure Cloud Shell, mettant en évidence l’icône Ouvrir une nouvelle session dans la barre d’outils.

Créer et simuler un appareil

Dans cette section, vous allez créer une identité d’appareil pour votre hub IoT dans la première session CLI, puis simuler un appareil à l’aide de cette identité d’appareil. L’appareil simulé répond aux méthodes directes que vous appelez dans la deuxième session CLI.

Créer et démarrer un appareil simulé :

  1. Dans la première session CLI, exécutez la commande az iot hub device-identity create, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Cette commande crée l’identité de l’appareil pour votre appareil simulé.

    {DeviceName}. Nom de votre appareil simulé.

    {HubName}. Nom de votre IoT Hub.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. Dans la première session CLI, exécutez la commande az iot device simulate, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Cette commande simule un appareil à l’aide de l’identité d’appareil que vous avez créée à l’étape précédente. L’appareil simulé est configuré pour retourner un code d’état et une charge utile chaque fois qu’une méthode directe est appelée.

    {DeviceName}. Nom de votre appareil simulé.

    {HubName}. Nom de votre IoT Hub.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Conseil

    Par défaut, la commande az iot device simulate envoie 100 messages appareil-à-cloud avec un intervalle de 3 secondes entre les messages. La simulation se termine une fois que tous les messages ont été envoyés. Si vous souhaitez que la simulation s’exécute plus longtemps, vous pouvez utiliser le paramètre --msg-count pour spécifier davantage de messages ou le paramètre --msg-interval pour spécifier un intervalle plus long entre les messages. Vous pouvez également réexécuter la commande pour redémarrer l’appareil simulé.

Appeler une méthode directe

Dans cette section, vous utilisez la deuxième session CLI pour appeler une méthode directe sur l’appareil simulé en cours d’exécution dans la première session CLI.

  1. Dans la première session CLI, vérifiez que l’appareil simulé est en cours d’exécution. Si ce n’est pas le cas, redémarrez-le en réexécutant la commande az iot device simulate à partir de Créer et simuler un appareil.

  2. Dans la deuxième session CLI, exécutez la commande az iot hub invoke-device-method, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Dans cet exemple, il n’existe aucune méthode préexistante pour l’appareil. La commande appelle un exemple de nom de méthode sur l’appareil simulé. La méthode fournit un code d’état et une charge utile dans sa réponse.

    {DeviceName}. Nom de votre appareil simulé.

    {HubName}. Nom de votre IoT Hub.

    {MethodName}. Nom de votre méthode directe. L’appareil simulé n’a pas de méthode préexistante. Vous pouvez donc choisir le nom souhaité pour cette commande.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. Dans la première session CLI, vérifiez que la sortie affiche l’appel de méthode. Dans la capture d’écran suivante, nous avons utilisé SampleDevice et SampleMethod pour les espaces réservés {DeviceName} et {MethodName}, respectivement, dans la commande CLI az iot hub invoke-device-method.

    Capture d’écran d’un appareil simulé affichant la sortie après l’appel d’une méthode.

  4. Dans la deuxième session CLI, vérifiez que la sortie affiche le code d’état et la charge utile reçus de la méthode appelée.

    Capture d’écran d’une fenêtre Azure Cloud Shell affichant le code d’état et la charge utile d’une méthode directe appelée.

Appeler une méthode directe avec une charge utile

Dans cette section, vous utilisez la deuxième session CLI pour appeler une méthode directe et fournir une charge utile sur l’appareil simulé en cours d’exécution dans la première session CLI.

  1. Dans la première session CLI, vérifiez que l’appareil simulé est en cours d’exécution. Si ce n’est pas le cas, redémarrez-le en réexécutant la commande az iot device simulate à partir de Créer et simuler un appareil.

  2. Dans la deuxième session CLI, exécutez la commande az iot hub invoke-device-method, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Dans cet exemple, il n’existe aucune méthode préexistante pour l’appareil. La commande appelle un exemple de nom de méthode sur l’appareil simulé et retourne une charge utile pour cette méthode. La méthode fournit un code d’état et une charge utile dans sa réponse.

    {DeviceName}. Nom de votre appareil simulé.

    {HubName}. Nom de votre IoT Hub.

    {MethodName}. Nom de votre méthode directe. L’appareil simulé n’a pas de méthode préexistante. Vous pouvez donc choisir le nom souhaité pour cette commande.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. Dans la première session CLI, vérifiez que la sortie affiche l’appel de méthode. Dans la capture d’écran suivante, nous avons utilisé SampleDevice et SampleMethod pour les espaces réservés {DeviceName} et {MethodName}, respectivement, dans la commande CLI az iot hub invoke-device-method.

    Capture d’écran d’un appareil simulé affichant la sortie après l’appel d’une méthode avec une charge utile.

  4. Dans la deuxième session CLI, vérifiez que la sortie affiche le code d’état et la charge utile reçus de la méthode appelée.

    Capture d’écran d’une fenêtre Azure Cloud Shell affichant le code d’état et la charge utile d’une méthode directe appelée.

Étapes suivantes

Pour savoir comment utiliser Azure CLI pour étendre votre solution IoT et planifier des appels de méthode sur plusieurs appareils, consultez Planifier et diffuser des travaux.

Pour approfondir vos connaissances sur IoT Hub et les modèles de gestion des appareils, comme la mise à jour de bout en bout basée sur une image, consultez l’article relatif à la mise à jour des appareils pour Azure IoT Hub à l’aide de l’image de référence Raspberry Pi 3 B+.