Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Device Update for IoT Hub admite actualizaciones basadas en imágenes, en paquetes y en scripts.
Las actualizaciones con imágenes proporcionan un mayor nivel de confianza en el estado final del dispositivo. Normalmente, es más fácil replicar los resultados de una actualización de imagen entre un entorno de preproducción y un entorno de producción porque no plantea los mismos desafíos que los paquetes y sus dependencias. Debido a su naturaleza atómica, también se puede adoptar fácilmente un modelo de conmutación por error A/B.
Este tutorial le guía por los pasos para completar una actualización basada en imágenes de un extremo a otro mediante Device Update para IoT Hub en una placa Raspberry Pi 3 B+.
En este tutorial, aprenderá a:
- Descargue una imagen.
- Agregue una etiqueta al dispositivo IoT.
- Importar una actualización.
- Cree un grupo de dispositivos.
- Implementar una actualización basada en imágenes.
- Supervisar la implementación de la actualización.
Nota:
Las actualizaciones de imágenes de este tutorial se validaron en la placa Raspberry Pi B3.
Prerrequisitos
Si aún no lo ha hecho, cree una cuenta y una instancia de Device Update y configure un centro de IoT.
Descarga de la imagen
Proporcionamos imágenes de ejemplo en Recursos en la página de lanzamientos de GitHub de Device Update. El archivo .gz es la imagen base que puede grabar en una placa base Raspberry Pi 3 B+. El archivo swUpdate es la actualización que importaría a través de Device Update para IoT Hub.
Graba una tarjeta SD con la imagen
Use su herramienta de grabación del sistema operativo favorita para instalar la imagen base de actualización de dispositivos (adu-base-image) en una tarjeta SD para usarla en el dispositivo Raspberry Pi 3 B+.
Uso de bmaptool para grabar en memoria flash la tarjeta SD
Instale la
bmaptoolutilidad, si aún no lo ha hecho.sudo apt-get install bmap-toolsBusque 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 utilidaddmesgpara buscar la ruta de acceso correcta.Desmonte todas las particiones montadas antes de flashear.
sudo umount /dev/<device>Asegúrese de que tiene permisos de escritura en el dispositivo.
sudo chmod a+rw /dev/<device>Opcional: para un parpadeo más rápido, descargue el archivo bimap y el archivo de imagen y colóquelos en el mismo directorio.
Flashee la tarjeta SD.
sudo bmaptool copy <path to image> /dev/<device>
Device Update para el software de Azure IoT Hub está sujeto a los siguientes términos de licencia:
- Licencia de actualización de dispositivos para IoT Hub
- Licencia de cliente de Optimización de distribución
Lea los términos de licencia antes de usar el agente. Su instalación y uso constituye su aceptación de estos términos. Si no está de acuerdo con los términos de licencia, no use el agente device Update para IoT Hub.
Creación de un dispositivo o módulo en IoT Hub y obtención de una cadena de conexión
Ahora, agregue el dispositivo a IoT Hub. Desde IoT Hub, se genera una cadena de conexión para el dispositivo.
En Azure Portal, inicie IoT Hub.
Crea un nuevo dispositivo.
En el panel izquierdo, seleccione Dispositivos. A continuación, seleccione Nuevo.
En Id. de dispositivo, escriba un nombre para el dispositivo. Asegúrese de que la casilla Generación automática de claves esté activada.
Selecciona Guardar. En la página Dispositivos , el dispositivo que creó debe estar en la lista.
Obtenga la cadena de conexión del dispositivo mediante una de estas dos opciones:
- Opción 1: Use el agente de Device Update con una identidad de módulo: en la misma página Dispositivos , seleccione Agregar identidad de módulo en la parte superior. Cree un nuevo módulo Device Update con el nombre IoTHubDeviceUpdate. Elija otras opciones a medida que se apliquen al caso de uso y, a continuación, seleccione Guardar. Seleccione el módulo recién creado. En la vista del módulo, seleccione el icono Copiar situado junto a Cadena de conexión principal.
- Opción 2: Use el agente de Device Update con la identidad del dispositivo: en la vista del dispositivo, seleccione el icono Copiar junto a la Cadena de Conexión Principal.
Pegue los caracteres copiados en algún lugar para usarlos más adelante en los pasos siguientes:
Esta cadena copiada es la cadena de conexión del dispositivo.
Preparar configuraciones en el dispositivo para la actualización de dispositivos en IoT Hub
Dos archivos de configuración deben estar en el dispositivo para que Device Update para IoT Hub se configure correctamente. El primer archivo es el du-config.json archivo , que debe existir en /adu/du-config.json. El segundo archivo es el du-diagnostics-config.json archivo , que debe existir en /adu/du-diagnostics-config.json.
Estos son dos ejemplos para los du-config.json archivos y du-diagnostics-config.json :
Ejemplo de du-config.json
{
"schemaVersion": "1.0",
"aduShellTrustedUsers": [
"adu",
"do"
],
"manufacturer": "fabrikam",
"model": "vacuum",
"agents": [
{
"name": "main",
"runas": "adu",
"connectionSource": {
"connectionType": "string",
"connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU="
},
"manufacturer": "fabrikam",
"model": "vacuum"
}
]
}
Ejemplo de du-diagnostics-config.json
{
"logComponents":[
{
"componentName":"adu",
"logPath":"/adu/logs/"
},
{
"componentName":"do",
"logPath":"/var/log/deliveryoptimization-agent/"
}
],
"maxKilobytesToUploadPerLogPath":50
}
Configuración del agente de Device Update en el dispositivo Raspberry Pi
Asegúrese de que Raspberry Pi 3 está conectado a la red.
Siga estas instrucciones para agregar los detalles de configuración:
En primer lugar, conéctese mediante SSH a la máquina mediante el comando siguiente en la ventana de PowerShell:
ssh raspberrypi3 -l rootCree o abra el
du-config.jsonarchivo para su edición mediante:nano /adu/du-config.jsonDespués de ejecutar el comando, debería ver un editor abierto con el archivo . Si nunca ha creado el archivo, estará vacío. Ahora copie el contenido del ejemplo anterior du-config.json y sustituya las configuraciones necesarias para su dispositivo. A continuación, reemplace la cadena de conexión de ejemplo por la del dispositivo que creó en los pasos anteriores.
Después de finalizar los cambios, seleccione Ctrl+X para salir del editor. A continuación, escriba y para guardar los cambios.
Ahora debe crear el
du-diagnostics-config.jsonarchivo mediante comandos similares. Empiece por crear o abrir eldu-diagnostics-config.jsonarchivo para su edición mediante:nano /adu/du-diagnostics-config.jsonCopie el ejemplo anterior du-diagnostics-config.json contenido y sustituya las configuraciones que difieren de la compilación predeterminada. El archivo de ejemplo du-diagnostics-config.json representa las ubicaciones de registro predeterminadas de Device Update para IoT Hub. Solo tienes que cambiarlos si tu implementación es diferente.
Después de finalizar los cambios, seleccione Ctrl+X para salir del editor. A continuación, escriba y para guardar los cambios.
Use el comando siguiente para mostrar los archivos ubicados en el
/adu/directorio . Debería poder ver los dos archivos de configuración files.du-diagnostics-config.json para editarlos usando:ls -la /adu/
Reinicie el servicio del sistema de actualización de dispositivos para asegurarse de que se aplicaron las configuraciones. Usa el siguiente comando dentro de la terminal iniciada sesión en el
raspberrypi:systemctl start adu-agentCompruebe que el agente está activo mediante el comando siguiente:
systemctl status adu-agentDebería ver que el estado aparece como vivo y verde.
Conectar el dispositivo en Device Update para IoT Hub
En el panel izquierdo, seleccione Dispositivos.
Seleccione el vínculo con el nombre del dispositivo.
En la parte superior de la página, seleccione Dispositivo gemelo si se conecta directamente a Device Update mediante la identidad del dispositivo IoT. De lo contrario, haga clic en el módulo que creó y seleccione su módulo gemelo.
En la sección informada de las propiedades Device Twin, busque la versión del kernel de Linux. Para un nuevo dispositivo, que no ha recibido una actualización de Device Update, el valor DeviceManagement:DeviceInformation:1.swVersion representa la versión de firmware que se ejecuta en el dispositivo. Una vez aplicada una actualización a un dispositivo, Device Update usa el valor de la propiedad AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId para representar la versión de firmware que se ejecuta en el dispositivo.
Los archivos de imagen base y actualización tienen un número de versión en el nombre de archivo.
adu-<image type>-image-<machine>-<version number>.<extension>
Usa ese número de versión más adelante en la sección "Importar la actualización".
Adición de una etiqueta al dispositivo
Inicie sesión en Azure Portal y vaya al centro de IoT.
En el panel izquierdo, en Dispositivos, busque el dispositivo IoT y vaya al dispositivo gemelo o módulo gemelo.
En el módulo gemelo del agente de Device Update, cambie los valores de etiqueta de Device Update existentes a null para eliminarlos. Si usa la identidad del dispositivo con el agente de Device Update, realice estos cambios en el dispositivo gemelo.
Agregue un nuevo valor de etiqueta de Device Update como se muestra a continuación:
"tags": { "ADUGroup": "<CustomTagValue>" }
Importación de la actualización
Descargue el manifiesto del tutorial de ejemplo (Tutorial Import Manifest_Pi.json) y la actualización de ejemplo (adu-update-image-raspberrypi3-0.6.5073.1.swu) de Recursos de la versión para el agente más reciente.
Inicie sesión en el portal de Azure y vaya a su centro de IoT con Device Update. En el panel izquierdo, en Administración automática de dispositivos, seleccione Actualizaciones.
Seleccione la pestaña Actualizaciones.
Seleccione + Importar nueva actualización.
Seleccione + Seleccionar desde el contenedor de almacenamiento. Seleccione una cuenta existente o cree una nueva mediante + Cuenta de almacenamiento. A continuación, seleccione un contenedor existente o cree uno nuevo mediante + Contenedor. Este contenedor se usará para almacenar provisionalmente los archivos de actualización para la importación.
Nota:
Se recomienda usar un nuevo contenedor cada vez que importe una actualización para evitar la importación accidental de archivos de actualizaciones anteriores. Si no usa un contenedor nuevo, asegúrese de eliminar los archivos del contenedor existente antes de completar este paso.
En el contenedor, seleccione Cargar y vaya hasta los archivos que descargó en el paso 1. Después de seleccionar todos los archivos de actualización, seleccione Cargar. A continuación, seleccione el botón Seleccionar para volver a la página Importar actualización.
En esta captura de pantalla se muestra el paso de importación. Es posible que los nombres de archivo no coincidan con los usados en el ejemplo.
En la página Importar actualización, revise los archivos que se importarán. A continuación, seleccione Importar actualización para iniciar el proceso de importación.
El proceso de importación comienza y la pantalla cambia a la sección Historial de importación . Cuando la columna Estado indique que la importación se ha realizado correctamente, seleccione el encabezado Available updates (Actualizaciones disponibles). Debería ver la actualización importada en la lista.
Obtenga más información sobre cómo importar actualizaciones.
Creación de un grupo de actualización
Vaya a la pestaña Grupos e implementaciones en la parte superior de la página.
Seleccione Agregar de grupo para crear un nuevo grupo.
Seleccione una etiqueta de IoT Hub y una clase de dispositivo de la lista. A continuación, seleccione Crear grupo.
Una vez creado el grupo, se actualizan el gráfico de cumplimiento de actualizaciones y la lista de grupos. 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. Obtenga más información sobre Update Compliance.
Debería ver el grupo recién creado y las actualizaciones disponibles para los dispositivos del nuevo grupo. Si hay dispositivos que no cumplen los requisitos de clase de dispositivo del grupo, se muestran en un grupo no válido correspondiente. Para implementar la mejor actualización disponible en el nuevo grupo definido por el usuario desde esta vista, seleccione Implementar junto al grupo.
Obtenga más información sobre cómo agregar etiquetas y crear grupos de actualizaciones.
Implementación de la actualización
Una vez creado el grupo, debería ver una nueva actualización disponible para el grupo de dispositivos. Un vínculo a la actualización debe estar en Mejor actualización. Puede que tenga que actualizar la página una vez. Más información sobre el cumplimiento de actualizaciones.
Para elegir el grupo de destino, seleccione el nombre del grupo. Se le dirigirá a los detalles del grupo en Group basics (Conceptos básicos del grupo).
Para iniciar la implementación, vaya a la pestaña Implementación actual . Seleccione el vínculo Implementar situado junto a la actualización deseada en la sección Actualizaciones disponibles . La mejor actualización disponible para un grupo determinado se indica con el término Óptima resaltado.
Programe la implementación para que se inicie inmediatamente o en el futuro. Seleccione Crear.
En Detalles de implementación, Estado cambia a Activo. La actualización implementada está marcada con (implementando).
Vea el gráfico de cumplimiento para comprobar que la actualización está en curso.
Una vez que el dispositivo se ha actualizado correctamente, puede ver que el gráfico de cumplimiento y los detalles de la implementación se actualizan para reflejar lo mismo.
Supervisar la implementación de actualizaciones
Seleccione la pestaña Historial de implementación en la parte superior de la página.
Seleccione Detalles junto a la implementación que ha creado.
Seleccione Actualizar para ver los detalles de estado más recientes.
Ahora ha completado una actualización completa y exitosa de la imagen de un extremo a otro usando Device Update para IoT Hub en un dispositivo Raspberry Pi 3 B+.
Limpieza de recursos
Cuando ya no sea necesario, limpie la cuenta de Device Update, la instancia, el centro de IoT y el dispositivo IoT.