Share via


Preparación de una actualización para importarla a Device Update for IoT Hub

Obtenga información sobre cómo obtener una nueva actualización y preparar la actualización para importarla a Device Update for IoT Hub.

Prerrequisitos

  • Acceso a una instancia de IoT Hub con Device Update for IoT Hub habilitado.

  • Un entorno de la CLI de Azure:

    1. Inicie sesión en la CLI de Azure mediante el comando az login.
    2. Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
    3. Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que lo use. Los comandos de este artículo usan la extensión azure-iot. Ejecute az extension update --name azure-iot para asegurarse de usar la versión más reciente de la extensión.

Sugerencia

Los comandos de la Interfaz de la línea de comandos de Azure citados en este artículo usan el carácter de la barra diagonal inversa \ para la continuación de línea y facilitar la lectura de los argumentos del comando. Esta sintaxis funciona en entornos Bash. Si ejecuta estos comandos en PowerShell, reemplace cada barra diagonal inversa por un acento grave (```) o quítelas por completo.

Obtención de una actualización para sus dispositivos

Ahora que ha configurado Device Update y ha aprovisionado los dispositivos, necesita los archivos de actualización que va a implementar en esos dispositivos.

  • Si ha adquirido dispositivos de un fabricante de equipos original (OEM) o un integrador de soluciones, es muy probable que esa organización le proporcione archivos de actualización, por lo que no necesitará crear las actualizaciones. Póngase en contacto con el OEM o el integrador de soluciones para saber cómo facilitan sus actualizaciones.

  • Si su organización crea software para los dispositivos que usa, ese mismo grupo crea las actualizaciones de ese software.

Al crear una actualización para implementarla con Device Update for IoT Hub, empiece con el enfoque basado en imágenes o basado en paquetes, en función de su escenario.

Creación de un manifiesto de importación básico de Device Update

Una vez que tenga los archivos de actualización, cree un manifiesto de importación para describir la actualización. Si aún no lo ha hecho, familiarícese con los conceptos básicos de importación. Aunque es posible crear manualmente un archivo JSON de manifiesto de importación con un editor de texto, la interfaz de la línea de comandos (CLI) de Azure simplifica considerablemente el proceso y se usa en los ejemplos siguientes.

Sugerencia

Pruebe los tutoriales de actualizaciones basadas en imágenes, paquetes o proxy si aún no lo ha hecho. También puede consultar solo los archivos de manifiesto de importación de ejemplo de los tutoriales como referencia.

El comando az iot du init v5 toma los siguientes argumentos:

  • --update-provider, --update-name y --update-version: estos tres parámetros definen el objeto updateId, que es un identificador único para cada actualización.
  • --compat: el objeto compatibility es un conjunto de pares nombre-valor que describen las propiedades de un dispositivo con el que esta actualización es compatible.
    • No se puede usar el mismo conjunto exacto de propiedades de compatibilidad con más de una combinación de proveedor y nombre.
  • --step: el controlador de actualización en el dispositivo (por ejemplo, microsoft/script:1, microsoft/swupdate:1 o microsoft/apt:1) y sus propiedades asociadas para esta actualización.
  • --file: rutas de acceso a los archivos de actualización.

Para obtener más información sobre estos parámetros, consulte Importación de actualizaciones a Device Update for IoT Hub: esquema y otra información.

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> 

Por ejemplo:

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

En el caso de las propiedades del controlador, es posible que tenga que usar caracteres de escape con determinados caracteres en el archivo JSON. Por ejemplo, use '\' como carácter de escape para las comillas dobles si ejecuta la CLI de Azure en PowerShell.

El comando init admite escenarios avanzados, incluida la característica de archivos relacionados, que permite definir la relación entre diferentes archivos de actualización. Para obtener más ejemplos y una lista completa de parámetros opcionales, consulte az iot du init v5.

Una vez que haya creado el manifiesto de importación y lo haya guardado como un archivo JSON, ya podrá importar la actualización. Si tiene previsto usar la interfaz de usuario de Azure Portal para la importación, asegúrese de asignar un nombre al manifiesto de importación en el siguiente formato: "<manifestname>.importmanifest.json".

Creación de un manifiesto de importación avanzada de Device Update para una actualización de proxy

Si la actualización es más compleja, como una actualización de proxy, es posible que tenga que crear varios manifiestos de importación. Puede usar el mismo enfoque de la CLI de Azure de la sección anterior para crear un manifiesto de importación primario y algunos manifiestos de importación secundarios para actualizaciones complejas. Ejecute los siguientes comandos de la CLI de Azure después de reemplazar los valores de parámetro de ejemplo por los suyos propios. Consulte Importación de esquema e información de API para más información sobre los valores que puede usar. En el ejemplo siguiente, hay tres actualizaciones para implementar en el dispositivo: una actualización primaria y dos actualizaciones secundarias:

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> \

Pasos siguientes