Compartir a través de


Tutorial: Azure Device Update for IoT Hub mediante una imagen de Raspberry Pi

Device Update for IoT Hub admite actualizaciones basadas en imágenes, en paquetes y en scripts. En este tutorial, se muestra una actualización Device Update for IoT Hub basada en imágenes de un extremo a otro mediante una imagen de Yocto en una placa Raspberry Pi 3 B+.

Las actualizaciones de imágenes proporcionan un alto nivel de confianza en el estado final del dispositivo y no suponen los mismos desafíos de administración de paquetes y dependencias que las actualizaciones basadas en paquetes o en scripts. Es más fácil replicar los resultados de una actualización de imágenes entre un entorno de preproducción y de producción, o adoptar fácilmente un modelo de conmutación por error A/B.

En este tutorial ha:

  • Descargar e instalar una actualización de imágenes.
  • Asignar una etiqueta al dispositivo IoT.
  • Importar la actualización de la imagen.
  • Implementar la actualización de la imagen.
  • Ver el historial de implementación de actualizaciones.

Requisitos previos

Registrar el dispositivo y obtener de la cadena de conexión

Agregue el dispositivo al registro de dispositivos en su IoT Hub y obtenga la cadena de conexión que IoT Hub genera para el dispositivo.

  1. En Azure Portal, abra la página de IoT Hub asociada a la instancia de Device Update.
  2. En el panel de navegación izquierdo, seleccione Administración de dispositivos>Dispositivos.
  3. En la página Dispositivos, seleccione Agregar dispositivo.
  4. En Id. de dispositivo, escriba un nombre para el dispositivo. Asegúrese de que la casilla Generar claves automáticamente esté activada.
  5. Seleccione Guardar. El dispositivo aparece en la lista en la página Dispositivos.
  6. En la página Dispositivos, seleccione el dispositivo que registró.
  7. En la página del dispositivo, seleccione el icono Copiar junto a Cadena de conexión (clave principal). Guarde esta cadena de conexión de dispositivo para usarla cuando configure el agente de Device Update.

Nota:

Para fines de demostración, en este tutorial, se usa una cadena de conexión de dispositivo para autenticarse y conectarse con IoT Hub. En escenarios de producción, es mejor usar la identidad de módulo e IoT Identity Service para aprovisionar dispositivos. Para más información, consulte Aprovisionamiento del agente de Device Update.

Configuración de Raspberry Pi

El archivo Tutorial_RaspberryPi3.zip tiene todos los archivos necesarios para el tutorial. Descargue el archivo de la sección Activos de la versión más reciente en la página Versiones de GitHub Device Update y descomprímalo.

En la carpeta Tutorial_RaspberryPi3 extraída, la imagen base que puede grabar en la placa Raspberry Pi es adu-base-image-raspberrypi3.wic. La imagen base usa una compilación de Yocto basada en la versión 3.4.4. La imagen tiene el agente de Device Update y SWUpdate, que habilita la actualización de partición dual de Device Update. Para más información sobre las capas de Yocto, consulte Compilación de un sistema personalizado basado en Linux con el agente de Device Update mediante el proyecto Yocto.

Los archivos de actualización que importe a través de Device Update son:

  • Archivo SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
  • Script SWUpdate personalizado example-a-b-update.sh
  • Manifiesto EDS-ADUClient.yocto-update.1.2.0.importmanifest.json

Uso de bmaptool para grabar en memoria flash la tarjeta SD

Importante

El software de Azure Device Update for IoT Hub está sujeto a los siguientes términos de licencia:

Lea los términos de licencia antes de usar el agente. La instalación y el uso del agente constituyen la aceptación de estos términos. Si no está de acuerdo con los términos de licencia, no use el agente de Device Update.

Utiliza una herramienta de flasheo de sistemas operativos para instalar la imagen base de Device Update en la tarjeta SD que usarás en el dispositivo Raspberry Pi. Las instrucciones siguientes usan bmaptool para flashear en la tarjeta SD. Reemplace el marcador de posición <device> por el nombre del dispositivo y el marcador de posición <path to image> por la ruta de acceso al archivo de imagen descargado.

  1. Instale la utilidad bmap-tools si no la tiene.

    sudo apt-get install bmap-tools
    
  2. Busque la ruta de acceso de la tarjeta SD en /dev. La ruta de acceso debe tener un aspecto similar a /dev/sd* o /dev/mmcblk*. Puede usar la utilidad dmesg para buscar la ruta de acceso correcta.

  3. Desmonte todas las particiones montadas antes de escribir la memoria flash.

    sudo umount /dev/<device>
    
  4. Asegúrese de que tiene permisos de escritura en el dispositivo.

    sudo chmod a+rw /dev/<device>
    
  5. Escriba la memoria flash de la tarjeta SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

    Sugerencia

    Para acelerar la escritura de la memoria flash, puede descargar el archivo bimap y el archivo de la imagen y colóquelos en el mismo directorio.

Configuración del agente de Device Update en el dispositivo Raspberry Pi

  1. Asegúrese de que el dispositivo Raspberry Pi esté conectado a la red.

  2. Secure Shell (SSH) en Raspberry Pi 3 mediante el siguiente comando en una ventana de PowerShell:

    ssh raspberrypi3 -l root
    

Creación de los archivos de configuración de Device Update

Los archivos de configuración du-config.json y du-diagnostics-config.json de Device Update deben estar en el dispositivo. Para crear los archivos, ejecute los siguientes comandos en el terminal que inició sesión en Raspberry Pi.

  1. Para crear el archivo du-config.json o abrirlo para su edición, ejecute el siguiente comando:

    nano /adu/du-config.json
    
  2. El editor abre el archivo du-config.json. Si va a crear el archivo, está vacío. Copie y pegue el código siguiente en el archivo y reemplace los valores de ejemplo por las configuraciones necesarias para el dispositivo. Reemplace la cadena de ejemplo connectionData por la cadena de conexión del dispositivo que copió en el paso de registro del dispositivo.

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
  3. Presione Ctrl+X para salir del editor y escriba y para guardar los cambios.

  4. Cree el archivo du-diagnostics-config.json mediante comandos similares. Cree y abra el archivo:

    nano /adu/du-diagnostics-config.json
    
  5. Copie y pegue el código du-diagnostics-config.jsonsiguiente en el archivo. Los valores son las ubicaciones de registro predeterminadas de Device Update y solo debe cambiarlos si la configuración difiere del valor predeterminado.

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Presione Ctrl+X para salir del editor y escriba y para guardar los cambios.

  7. Use el comando siguiente para mostrar los archivos ubicados en el directorio /adu/. Debería ver ambos archivos de configuración.

    ls -la /adu/
    
  8. Use el siguiente comando para reiniciar el demonio del sistema Device Update y asegurarse de que se aplican las configuraciones.

    systemctl start deviceupdate-agent
    
  9. Compruebe que el agente está en funcionamiento con el siguiente comando:

    systemctl status deviceupdate-agent
    

    El estado debe aparecer como activo y verde.

Conexión al dispositivo en IoT Hub y adición de una etiqueta de grupo

  1. En la página Azure Portal IoT Hub de la instancia de Device Update, seleccione Administración de dispositivos>Dispositivos en el panel de navegación izquierdo.

  2. En la página Dispositivos, seleccione el nombre del dispositivo.

  3. En la parte superior de la página del dispositivo, seleccione Dispositivo gemelo.

  4. En la página Dispositivo gemelo, en la sección "reported" de la sección "properties" del dispositivo gemelo, busque la versión del kernel de Linux para el dispositivo.

    Para un nuevo dispositivo que no ha recibido una actualización desde Device Update, el valor de DeviceManagement:DeviceInformation:1.swVersion representa la versión de firmware que se ejecuta en el dispositivo. Una vez aplicado el dispositivo, el valor de la propiedad AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId representa la versión del firmware.

    Los nombres de archivo de imagen base y actualización tienen el formato adu-<image type>-image-<machine>-<version number>.<extension>. Tenga en cuenta los números de versión que se usarán al importar la actualización.

Agregar una etiqueta de grupo

Este servicio organiza, de manera automática, los dispositivos por grupos en función de las etiquetas y propiedades de compatibilidad que tienen asignadas. Cada dispositivo puede pertenecer solo a un grupo, pero los grupos pueden tener varios subgrupos para ordenar diferentes clases de dispositivos. Para más información sobre etiquetas y grupos, consulte Administración de grupos de dispositivos.

  1. En el dispositivo gemelo, elimine los valores de etiqueta Device Update existentes al establecerlos en valores nulos y agregue la siguiente etiqueta de grupo Device Update nueva. Si usa una identidad de módulo con el agente de Device Update, agregue la etiqueta en la identidad de módulo gemela en lugar del dispositivo gemelo.

    "tags": {
        "ADUGroup": "<CustomTagValue>"
    },
    

    En el siguiente recorte de pantalla, se muestra dónde se encuentra en el archivo para agregar la etiqueta.

    Captura de pantalla que muestra el gemelo con la información de la etiqueta.

  2. Seleccione Guardar.

Importación de la actualización

  1. En la página Azure Portal IoT Hub de la instancia de Device Update, seleccione Administración de dispositivos>Actualizaciones en el panel de navegación izquierdo.

  2. En la página Actualizaciones, seleccione Importar una nueva actualización.

  3. En la página Importar actualización, seleccione Seleccionar desde el contenedor de almacenamiento.

  4. En la página Cuentas de almacenamiento, seleccione una cuenta de almacenamiento o elija Cuenta de almacenamiento para crear una nueva.

  5. En la página Contenedores, seleccione un contenedor o elija Contenedor para crear uno nuevo. El contenedor se usa para almacenar provisionalmente los archivos de actualización para la importación.

    Captura de pantalla que muestra las cuentas de almacenamiento y los contenedores.

    Sugerencia

    Para evitar la importación accidental de archivos de actualizaciones anteriores, use un nuevo contenedor cada vez que importe una actualización. Si no usa un contenedor nuevo, asegúrese de eliminar los archivos del contenedor existente.

  6. En la página de contenedores, seleccione Cargar. Arrastre y coloque, o busque y seleccione los siguientes archivos de actualización de la carpeta Tutorial_RaspberryPi3 que ha descargado:

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. Selecciona Cargar. Después de cargarlos, los archivos aparecen en la página del contenedor.

  8. En la página del contenedor, revise y seleccione los archivos que se van a importar y, a continuación, seleccione Seleccionar.

    Captura de pantalla que muestra la selección de archivos cargados.

  9. En la pantalla Importar actualización, seleccione Importar actualización.

    Captura de pantalla que muestra Importar actualización.

El proceso de importación comienza y la pantalla cambia a la pantalla Actualizaciones. Después de que la importación se realice correctamente, aparece en la pestaña Actualizaciones. Para más información sobre el proceso de importación, consulte Importación de una actualización a Device Update.

Captura de pantalla que muestra el estado de los trabajos.

Selección del grupo de dispositivos

Puede usar la etiqueta de grupo que aplicó al dispositivo para implementar la actualización en el grupo de dispositivos. Seleccione la pestaña Grupos e implementaciones de la parte superior de la página Actualizaciones para ver la lista de grupos e implementaciones y el gráfico de comprobación de actualizaciones.

En el gráfico de Update Compliance se muestra el recuento de dispositivos en los distintos estados de compatibilidad: En la actualización más reciente, Nuevas actualizaciones disponibles y Actualizaciones en curso. Para más información, consulte Cumplimiento de Device Update.

En Nombre de grupo, verá una lista de todos los grupos de dispositivos de los dispositivos conectados a este IoT Hub y sus actualizaciones disponibles, con vínculos para implementar las actualizaciones en Estado. Los dispositivos que no cumplen los requisitos de clase de dispositivo de un grupo aparecen en un grupo no válido correspondiente. Para más información sobre etiquetas y grupos, consulte Administración de grupos de dispositivos.

Debería ver el grupo de dispositivos que contiene el dispositivo que configuró en este tutorial, junto con las actualizaciones disponibles para los dispositivos del grupo. Es posible que tenga que actualizar la página. Para implementar la mejor actualización disponible en un grupo desde esta vista, seleccione Implementar junto al grupo.

Captura de pantalla que muestra la vista de cumplimiento de actualizaciones.

Implementación de la actualización

  1. En la página Detalles del grupo, seleccione la pestaña Implementación actual y, a continuación, seleccione Implementar junto a la actualización deseada en la sección Actualizaciones disponibles. La mejor actualización disponible para el grupo se indica con el término Óptima resaltado.

    Captura de pantalla que muestra la selección de una actualización.

  2. En la página Crear implementación, programe la implementación para que se inicie inmediatamente o en el futuro y, a continuación, seleccione Crear.

    Captura de pantalla que muestra la creación de una implementación.

    Sugerencia

    De forma predeterminada, la fecha y hora de inicio es de 24 horas a partir de la hora actual. Asegúrese de seleccionar una fecha y hora diferentes si quiere que la implementación comience más pronto.

  3. En Detalles de implementación, Estado cambia a Activo. En Actualizaciones disponibles, la actualización seleccionada se marca con (implementando).

    Captura de pantalla que muestra la implementación como activa.

  4. En la página Actualizaciones, vea el gráfico de cumplimiento para ver que la actualización está en curso. Después de que el dispositivo se actualice correctamente, el gráfico de cumplimiento y los detalles de implementación se actualizan para reflejar ese estado.

    Captura de pantalla que muestra que la actualización se ha realizado correctamente.

Ver el historial de implementación de actualizaciones

Para ver el historial de implementación:

  1. Seleccione la pestaña Historial de implementación de la parte superior de la página Detalles del grupo y seleccione el vínculo detalles junto a la implementación que creó.

    Captura de pantalla que muestra Historial de implementación.

  2. En la página Detalles de implementación, seleccione Actualizar para ver los detalles de estado más recientes.

    Captura de pantalla que muestra los detalles de la implementación.

Limpieza de recursos

Cuando ya no necesite los recursos creados en este tutorial, puede eliminarlos.

  1. En Azure Portal, vaya al grupo de recursos que contiene los recursos.
  2. Si desea eliminar todos los recursos del grupo, seleccione Eliminar grupo de recursos.
  3. Si solo desea eliminar algunos recursos, use las casillas para seleccionarlos y, a continuación, elija Eliminar.

Pasos siguientes