Préparer l’importation d’une mise à jour dans Device Update pour IoT Hub

Découvrez comment obtenir une nouvelle mise à jour et préparer son importation dans Device Update pour IoT Hub.

Prérequis

  • Accès à un IoT Hub avec Device Update pour IoT Hub activé.

  • Environnement Azure CLI :

    1. Connectez-vous à l’interface Azure CLI à l’aide de la commande az login.
    2. 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.
    3. Lorsque vous y êtes invité, installez les extensions Azure CLI lors de la première utilisation. Les commandes de cet article utilisent l’extension CLI azure-iot. Exécutez az extension update --name azure-iot pour vous assurer que vous disposez de la version la plus récente de l’extension.

Conseil

Dans cet article, les commandes Azure CLI utilisent la barre oblique inverse \ pour la continuation de ligne afin que les arguments de commande soient plus faciles à lire. Cette syntaxe fonctionne dans les environnements Bash. Si vous exécutez ces commandes dans PowerShell, remplacez chaque barre oblique inverse par un signe inverse « ``` » ou supprimez-les entièrement.

Obtenir une mise à jour pour vos appareils

Après avoir configuré Device Update et provisionné vos appareils, vous avez besoin du ou des fichiers de mise à jour que vous allez déployer sur ces appareils.

  • Si vous avez acheté des appareils auprès d’un OEM (Original Equipment Manufacturer) ou d’un intégrateur de solutions, cette organisation fournira probablement des fichiers de mise à jour à votre place, sans que vous ayez à créer les mises à jour. Contactez l’OEM ou l’intégrateur de solutions pour savoir comment il rend les mises à jour disponibles.

  • Si votre organisation crée des logiciels pour les appareils que vous utilisez, c’est ce même groupe qui créera les mises à jour de ces logiciels.

Quand vous créez une mise à jour à déployer à l’aide de Device Update pour IoT Hub, commencez par l’approche basée sur une image ou par l’approche basée sur un package en fonction de votre scénario.

Créer un manifeste d’importation Device Update de base

Une fois que vous avez vos fichiers de mise à jour, créez un manifeste d’importation pour décrire la mise à jour. Si vous ne l’avez pas déjà fait, familiariez-vous avec les concepts d’importation de base. Même s’il est possible de créer manuellement du code JSON de manifeste d’importation à l’aide d’un éditeur de texte, l’interface CLI Azure simplifie considérablement ce processus. Elle est utilisée dans les exemples ci-dessous.

Conseil

Si vous ne l’avez pas déjà fait, essayez le tutoriel basé sur une image, celui basé sur un package ou celui sur la mise à jour de proxy. Vous pouvez également simplement consulter des exemples de manifestes d’importation à partir de ces tutoriels pour référence.

La commande az iot du init v5 prend les arguments suivants :

  • --update-provider, --update-nameet --update-version : ces trois paramètres définissent l’objet updateId qui est un identificateur unique pour chaque mise à jour.
  • --compat : l’objet de compatibilité est un ensemble de paires nom-valeur qui décrivent les propriétés d’un appareil avec lequel cette mise à jour est compatible.
    • Le même ensemble de propriétés de compatibilité ne peut pas être utilisé avec plus d’une combinaison de fournisseur et de nom.
  • --step : gestionnaire de mises à jour sur l’appareil (par exemple, microsoft/script:1, microsoft/swupdate:1 ou microsoft/apt:1) et ses propriétés associées pour cette mise à jour.
  • --file : chemins d’accès à votre ou vos fichier(s) de mise à jour.

Pour plus d’informations sur ces paramètres, consultez Importer des informations sur le schéma et l’API.

az iot du update init v5 \
    --update-provider <replace with your Provider> \
    --update-name <replace with your update Name> \
    --update-version <replace with your update Version> \
    --compat <replace with the property name>=<replace with the value your device will report> <replace with the property name>=<replace with the value your device will report> \
    --step handler=<replace with your chosen handler> properties=<replace with any handler properties (JSON-formatted)> \
    --file path=<replace with path(s) to your update file(s), including the full file name> 

Par exemple :

az iot du update init v5 \
    --update-provider Microsoft \
    --update-name AptUpdate \
    --update-version 1.0.0 \
    --compat manufacturer=Contoso model=Vacuum \
    --step handler=microsoft/script:1 properties='{"installedCriteria": "1.0"}' \
    --file path=/my/apt/manifest/file

Pour les propriétés du gestionnaire, vous devrez peut-être placer certains caractères dans votre fichier JSON dans une séquence d’échappement. Par exemple, utilisez '\' pour échapper des guillemets doubles si vous exécutez Azure CLI dans PowerShell.

La commande init prend en charge les scénarios avancés, y compris la fonctionnalité fichiers associée qui vous permet de définir la relation entre différents fichiers de mise à jour. Pour obtenir d’autres exemples et une liste complète des paramètres facultatifs, consultez az iot du init v5.

Une fois que vous avez créé votre manifeste d’importation et que vous l’avez enregistré en tant que fichier JSON, si vous êtes prêt à importer votre mise à jour. Si vous envisagez d’utiliser l’interface utilisateur du portail Azure pour l’importation, veillez à nommer votre manifeste d’importation au format suivant : « <nom_manifeste>.importmanifest.json ».

Créer un manifeste d’importation Device Update avancé pour une mise à jour de proxy

Si votre mise à jour est plus complexe, par exemple une mise à jour de proxy, vous devrez peut-être créer plusieurs manifestes d’importation. Vous pouvez utiliser la même approche Azure CLI mentionnée dans la section précédente pour créer un manifeste d’importation parent et un certain nombre de manifestes d’importation enfants pour les mises à jour complexes. Exécutez les commandes Azure CLI suivantes après avoir remplacé les exemples de valeurs de paramètres par les vôtres. Pour plus d’informations sur les valeurs que vous pouvez utiliser, consultez Importer les informations sur les schémas et les API . Dans l’exemple ci-dessous, trois mises à jour doivent être déployées sur l’appareil : une mise à jour parente et deux mises à jour enfants :

az iot du update init v5 \
    --update-provider <replace with child_1 update Provider> \
    --update-name <replace with child_1 update Name> \
    --update-version <replace with child_1 update Version> \
    --compat manufacturer=<replace with the value your device will report> model=<replace with the value your device will report> \
    --step handler=<replace with your chosen handler> \
    --file path=<replace with path(s) to your update file(s), including the full file name> \
az iot du update init v5 \
    --update-provider <replace with child_2 update Provider> \
    --update-name <replace with child_2 update Name> \
    --update-version <replace with child_2 update Version> \
    --compat manufacturer=<replace with the value your device will report> model=<replace with the value your device will report> \
    --step handler=<replace with your chosen handler> \
    --file path=<replace with path(s) to your update file(s), including the full file name> \
az iot du update init v5 \
    --update-provider <replace with the parent update Provider> \
    --update-name <replace with the parent update Name> \
    --update-version <replace with the parent update Version> \
    --compat manufacturer=<replace with the value your device will report> model=<replace with the value your device will report> \
    --step handler=<replace with your chosen handler> properties=<replace with any desired handler properties (JSON-formatted)> \
    --file path=<replace with path(s) to your update file(s), including the full file name> \
    --step updateId.provider=<replace with child_1 update provider> updateId.name=<replace with child_1 update name> updateId.version=<replace with child_1 update version> \
    --step updateId.provider=<replace with child_2 update provider> updateId.name=<replace with child_2 update name> updateId.version=<replace with child_2 update version> \

Étapes suivantes