Share via


Prise en main des identités de module IoT Hub et des jumeaux de module à l’aide d’Azure CLI

Les identités de module et les jumeaux de module sont similaires aux identités d’appareil et aux jumeaux d’appareil Azure IoT Hub, mais offrent un plus grand niveau de détail. De la même façon que les identités et les jumeaux d’appareil Azure IoT Hub permettent à l’application back-end de configurer un appareil et d’obtenir une visibilité sur les conditions de l’appareil, les identités de module et les jumeaux de module fournissent ces fonctionnalités pour les composants individuels d’un appareil. Sur les appareils compatibles qui intègrent plusieurs composants, par exemple des appareils basés sur un système d’exploitation ou des appareils avec un microprogramme, les identités de module et les jumeaux de module permettent d’isoler la configuration et les conditions de chacun de ces composants.

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.

Cet article vous montre comment créer une session Azure CLI dans laquelle vous :

  • Créez une identité d’appareil, puis créez une identité de module pour cet appareil.

  • Mettez à jour un ensemble de propriétés souhaitées pour le jumeau de module associé à l’identité du module.

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 IoT Hub. Créez-en un avec l’interface CLI ou le portail Azure.

  • Assurez-vous que le port 8883 est ouvert dans votre pare-feu. Les exemples décrits dans cet article utilisent le protocole MQTT qui communique via le port 8883. Il est possible de bloquer ce port 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).

Authentification Module

Vous pouvez utiliser des clés symétriques ou des certificats X.509 pour authentifier les identités de module. Pour l’authentification par certificat X.509, le certificat du module doit avoir son nom commun (Common Name/CN) dans un format comme CN=<deviceid>/<moduleid>. Par exemple :

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

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 une session 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 une session CLI

Vous devez ensuite préparer une session Azure CLI. Si vous utilisez le Cloud Shell, vous exécutez la session dans un onglet Cloud Shell. Si vous utilisez un client CLI local, vous exécutez la session dans une instance CLI.

  1. Si vous utilisez le Cloud Shell, passez à l’étape suivante. Sinon, exécutez la commande az login dans la session CLI pour vous connecter à votre compte Azure.

    Si vous utilisez le Cloud Shell, vous êtes automatiquement connecté à votre compte Azure. Toutes les communications entre votre session 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 avec Azure CLI, consultez Se connecter avec Azure CLI.

    az login
    
  2. Dans la 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.

Créer une identité d’appareil et une identité de module

Dans cette section, vous allez créer une identité d’appareil pour votre hub IoT dans la session CLI, puis créer une identité de module à l’aide de cette identité d’appareil. Vous pouvez créer jusqu’à 50 identités de module sous chaque identité d’appareil.

Pour créer une identité d’appareil et une identité de module :

  1. Dans la 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 module.

    {DeviceName}. Nom de votre appareil.

    {HubName}. Nom de votre IoT Hub.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. Dans la session CLI, exécutez la commande az iot hub module-identity create, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Cette commande crée l’identité de module pour votre module, sous l’identité de l’appareil que vous avez créée à l’étape précédente.

    {DeviceName}. Nom de votre appareil.

    {HubName}. Nom de votre IoT Hub.

    {ModuleName}. Nom du module de votre appareil.

    az iot hub module-identity create --device-id {DeviceName} --hub-name {HubName} \
                                      --module-id {ModuleName}
    

Mettre à jour le jumeau de module

Une fois que vous avez créé une identité de module, un jumeau de module est implicitement créé dans IoT Hub. Dans cette section, vous utilisez la session CLI pour mettre à jour un ensemble de propriétés souhaitées sur le jumeau de module associé à l’identité de module que vous avez créée dans la section précédente.

  1. Dans la session CLI, exécutez la commande az iot hub module-twin update, en remplaçant les espaces réservés suivants par leurs valeurs correspondantes. Dans cet exemple, nous mettons à jour plusieurs propriétés souhaitées sur le jumeau de module pour l’identité de module que nous avons créée dans la section précédente.

    {DeviceName}. Nom de votre appareil.

    {HubName}. Nom de votre IoT Hub.

    {ModuleName}. Nom du module de votre appareil.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. Dans la session CLI, vérifiez que la réponse JSON affiche les résultats de l’opération de mise à jour. Dans l’exemple de réponse JSON suivant, nous avons utilisé SampleDevice et SampleModule pour les espaces réservés {DeviceName} et {ModuleName}, respectivement, dans la commande CLI az iot hub module-twin update.

    {
      "authenticationType": "sas",
      "capabilities": null,
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Disconnected",
      "deviceEtag": "Mzg0OEN1NzW=",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": "SampleModule",
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
            "$lastUpdatedVersion": 2,
            "conditions": {
              "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
              "$lastUpdatedVersion": 2,
              "temperature": {
                "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                "$lastUpdatedVersion": 2,
                "critical": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                },
                "warning": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                }
              }
            }
          },
          "$version": 2,
          "conditions": {
            "temperature": {
              "critical": 100,
              "warning": 75
            }
          }
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "0001-01-01T00:00:00Z"
          },
          "$version": 1
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": null,
      "version": 3,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Étapes suivantes

Pour savoir comment utiliser Azure CLI pour étendre votre solution IoT et planifier des mises à jour 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+.