Compartir a través de


Inicio rápido: implementación del primer módulo de IoT Edge en un dispositivo virtual Linux

se aplica a:Marca de verificación de IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.

Pruebe Azure IoT Edge en este inicio rápido mediante la implementación de código en contenedor en un dispositivo IoT Edge de Linux virtual. IoT Edge permite administrar de forma remota el código de los dispositivos para que pueda enviar más cargas de trabajo al perímetro. Para este inicio rápido, use una máquina virtual de Azure para el dispositivo IoT Edge. Le permite crear rápidamente una máquina de prueba y eliminarla cuando haya terminado.

En esta guía de inicio rápido, ha aprendido a hacer lo siguiente:

  • Cree un centro de IoT Hub.
  • Registre un dispositivo IoT Edge en su instancia de IoT Hub.
  • Instale e inicie el entorno de ejecución de IoT Edge en un dispositivo virtual.
  • Implemente un módulo de forma remota en un dispositivo IoT Edge.

Diagrama de la arquitectura del inicio rápido para el dispositivo y la nube.

Este inicio rápido le guía en el proceso de creación de una máquina virtual Linux configurada para ser un dispositivo IoT Edge. Después, podrá implementar un módulo de Azure Portal en el dispositivo. El módulo que utilizará es un sensor simulado que genera datos de temperatura, humedad y presión. Los restantes tutoriales de Azure IoT Edge se basan en el trabajo que se realiza aquí mediante la implementación de módulos adicionales que analizan los datos simulados para obtener información empresarial.

Si no tiene una suscripción activa a Azure, cree una cuenta gratuita antes de comenzar.

Requisitos previos

Configure el entorno para la CLI de Azure.

Un grupo de recursos para administrar todos los recursos que se van a usar en esta guía de inicio rápido. En este inicio rápido y en los tutoriales siguientes se usa el nombre del grupo de recursos de ejemplo IoTEdgeResources.

az group create --name IoTEdgeResources --location westus2

Crear un IoT Hub

Inicie el inicio rápido mediante la creación de una instancia de IoT Hub con la CLI de Azure.

Diagrama que muestra cómo crear una instancia de IoT Hub en la nube.

El nivel gratuito de IoT Hub funciona para este inicio rápido. Si ha usado IoT Hub en el pasado y ya tiene un centro creado, puede usarlo.

El código siguiente crea un centro F1 gratis en el grupo de recursos IoTEdgeResources. Reemplace <hub-name> por un nombre único de la instancia de IoT Hub. La creación de una instancia de IoT Hub puede tardar unos minutos.

az iot hub create --resource-group IoTEdgeResources --name <hub-name> --sku F1 --partition-count 2

Si se produce un error porque ya hay una instancia de IoT Hub gratis en la suscripción, cambie la SKU a S1. Cada suscripción no puede tener más de un centro de IoT gratuito. Si recibe un error que le indica que el nombre de IoT Hub no está disponible, significa que alguien más ya tiene un centro con ese nombre. Pruebe con uno nuevo.

Registro de un dispositivo de IoT Edge

Registre un dispositivo IoT Edge con el centro de IoT que acaba de crear.

Diagrama de cómo registrar un dispositivo con una identidad de IoT Hub.

Cree una identidad para el dispositivo de IoT Edge, con el fin de que pueda comunicarse con su centro de IoT. La identidad del dispositivo reside en la nube, y se usa una cadena de conexión de dispositivo única para asociar un dispositivo físico a una identidad de dispositivo.

Dado que los dispositivos IoT Edge se comportan y se administran de forma diferente a los dispositivos IoT típicos, declare esta identidad como un dispositivo IoT Edge mediante la marca --edge-enabled.

  1. Escriba el siguiente comando en Azure Cloud Shell para crear un dispositivo denominado myEdgeDevice en el centro.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name <hub-name>
    

    Si recibe un error acerca de las claves de directiva de iothubowner, asegúrese de que Cloud Shell ejecuta la versión más reciente de la extensiónazure-iot.

  2. Compruebe la cadena de conexión del dispositivo, que vincula el dispositivo físico a su identidad en IoT Hub. Incluye el nombre de IoT Hub, el nombre del dispositivo y una clave compartida que autentica las conexiones entre ellos. Vuelva a usar esta cadena de conexión en la sección siguiente para configurar el dispositivo IoT Edge.

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <hub-name>
    

    Por ejemplo, la cadena de conexión debe ser similar a HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE-SHARED-ACCESS-KEY>.

Configuración de un dispositivo de IoT Edge

Cree una máquina virtual con el entorno de ejecución de Azure IoT Edge.

Diagrama de cómo iniciar el entorno de ejecución en un dispositivo.

El entorno de ejecución de IoT Edge se implementa en todos los dispositivos IoT Edge y tiene tres componentes. El demonio de seguridad de IoT Edge se inicia cada vez que se inicia un dispositivo IoT Edge y arranca el dispositivo mediante el inicio del agente de este. El agente de IoT Edge facilita la implementación y supervisión de los módulos en el dispositivo IoT Edge, incluido el centro de IoT Edge. El centro de IoT Edge administra las comunicaciones entre los módulos del dispositivo de IoT Edge y entre el dispositivo y la instancia de IoT Hub.

Durante la configuración en tiempo de ejecución, proporcione una cadena de conexión de dispositivo. Esta cadena se recupera de la CLI de Azure. Esta cadena asocia el dispositivo físico con la identidad del dispositivo IoT Edge en Azure.

Implementación de un dispositivo IoT Edge

En esta sección se usa una plantilla de Azure Resource Manager para crear una máquina virtual e instalar en ella el runtime de IoT Edge. Si desea usar su propio dispositivo Linux, puede seguir los pasos de instalación que se encuentran en el artículo sobre el Aprovisionamiento manual de un dispositivo de Linux IoT Edge único y, después, volver a este inicio rápido.

Use el botón Implementar en Azure o los comandos de la CLI para crear un dispositivo IoT Edge basado en la plantilla iotedge-vm-deploy precompilada.

  • Implemente con la plantilla de Azure Resource Manager de IoT Edge.

    Implementar en Azure

  • Para los usuarios de Bash o Cloud Shell, copie el siguiente comando en un editor de texto, reemplace el texto del marcador de posición por su información y, después, cópielo en la ventana de Bash o de Cloud Shell:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • Para los usuarios de PowerShell, copie el siguiente comando en la ventana de PowerShell y, después, reemplace el texto del marcador de posición por su propia información:

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

La plantilla usa los siguientes parámetros:

Parámetro Descripción
resource-group Grupo de recursos en el que se crean los recursos. Use el valor predeterminado IoTEdgeResources que hemos usado en este artículo, o bien especifique el nombre de un grupo de recursos existente en la suscripción.
template-uri Puntero a la plantilla de Resource Manager que se usa.
dnsLabelPrefix Cadena que se usa para crear el nombre de host de la máquina virtual. Reemplace el texto del marcador de posición por el nombre de la máquina virtual.
adminUsername Nombre de usuario de la cuenta de administrador de la máquina virtual. Use el nombre de usuario azureUser del ejemplo o especifique uno nuevo.
deviceConnectionString Cadena de conexión de la identidad del dispositivo en IoT Hub, que se usa para configurar el entorno de ejecución de Azure IoT Edge en la máquina virtual. El comando de la CLI que hay dentro de este parámetro toma la cadena de conexión automáticamente. Sustituya el texto del marcador de posición por su nombre de IoT Hub.
authenticationType El método de autenticación de la cuenta de administrador. En este inicio rápido se usa la autenticación mediante contraseña, pero también puede establecer este parámetro en sshPublicKey.
adminPasswordOrKey La contraseña o el valor de la clave SSH de la cuenta de administrador. Sustituya el texto del marcador de posición por una contraseña segura. La contraseña debe tener una longitud mínima de doce caracteres y, al menos, tres de los siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos y caracteres especiales.

Una vez completada la implementación, la salida con formato JSON en la CLI contiene la información de SSH para conectarse a la máquina virtual. Copie el valor de la entrada de public SSH de la sección outputs. Por ejemplo, el comando SSH debe tener un aspecto similar a ssh azureUser@edge-vm.westus2.cloudapp.azure.com.

Visualización del estado del entorno de ejecución de Azure IoT Edge

El resto de los comandos de este inicio rápido tienen lugar en el propio dispositivo de IoT Edge, con el fin de que pueda ver lo que sucede en el dispositivo. Si usa una máquina virtual, conéctese a ella ahora con el nombre de usuario de administrador que configuró y el nombre DNS que el comando de implementación ha generado. También puede encontrar el nombre DNS en la página de información general de la máquina virtual en Azure Portal. Use el siguiente comando para conectarse a la máquina virtual. Reemplace <admin-username> y <DNS-name> con sus propios valores.

ssh <admin-username>@<DNS-name>

Una vez que se haya conectado a su máquina virtual, compruebe que el runtime se ha instalado y configurado correctamente en el dispositivo de IoT Edge.

  1. Compruebe si IoT Edge se está ejecutando. El comando siguiente devuelve un estado Ok si IoT Edge se está ejecutando o proporciona errores de servicio.

    sudo iotedge system status
    

    Sugerencia

    Necesita privilegios elevados para ejecutar comandos iotedge. Cuando cierre la sesión en su máquina y la inicie de nuevo por primera vez después de instalar el entorno de ejecución de IoT Edge, sus permisos se actualizarán automáticamente. Hasta entonces, use sudo delante de los comandos.

  2. Si necesita solucionar problemas del servicio, recupere los registros del servicio.

    sudo iotedge system logs
    
  3. Vea todos los módulos que se ejecutan en el dispositivo IoT Edge. Como el servicio se acaba de iniciar por primera vez, solo verá la ejecución del módulo edgeAgent. El módulo edgeAgent se ejecuta de forma predeterminada y le ayuda a instalar e iniciar todos los módulos adicionales que implemente en el dispositivo.

    sudo iotedge list
    

El dispositivo de IoT Edge está ya configurado. Está preparado para ejecutar módulos implementados en la nube.

Implementación de un módulo

Administre el dispositivo Azure IoT Edge desde la nube para implementar un módulo que envíe datos de telemetría de dispositivos a IoT Hub.

Diagrama de cómo implementar un módulo desde la nube al dispositivo.

Una funcionalidad clave de Azure IoT Edge es implementar código en los dispositivos IoT Edge desde la nube. Los módulos de IoT Edge son paquetes ejecutables que se implementan como contenedores. En esta sección, implementará un módulo precompilado desde la sección Módulos de IoT Edge del Registro de artefactos de Microsoft.

El módulo que se implementa en esta sección simula un sensor y envía los datos generados. Este módulo es un fragmento de código útil para empezar a trabajar con IoT Edge porque se pueden usar los datos simulados para desarrollo y pruebas. Si desea ver exactamente lo que hace este módulo, puede ver el código fuente del sensor de temperatura simulado.

Siga estos pasos para implementar el primer módulo.

  1. Inicie sesión en Azure Portal y vaya a su instancia de IoT Hub.

  2. En el menú de la izquierda, en Administración de dispositivos, seleccione Dispositivos.

  3. Seleccione el identificador del dispositivo IoT Edge de destino en la lista.

    Al crear un nuevo dispositivo IoT Edge, se muestra el código de estado 417 -- The device's deployment configuration is not set en Azure Portal. Este estado es normal y significa que el dispositivo está listo para recibir una implementación de módulo.

  4. En la barra superior, seleccione Establecer módulos.

    Seleccione los módulos que desea ejecutar en el dispositivo. Puede elegir entre los módulos que ha creado usted mismo o las imágenes en un registro de contenedor. En este inicio rápido, implementará un módulo desde el registro de contenedor de Microsoft.

  5. En la sección Módulos de IoT Edge, seleccione Agregar y, a continuación, elija Módulo de IoT Edge.

  6. Actualice la siguiente configuración del módulo:

    Configuración Value
    Nombre del módulo de IoT SimulatedTemperatureSensor
    URI de imagen mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    Directiva de reinicio Siempre
    Estado deseado en ejecución
  7. Seleccione Siguiente: Rutas para continuar configurando rutas.

  8. Agregue una ruta que envíe todos los mensajes desde el módulo de temperatura simulado a IoT Hub.

    Configuración Value
    Nombre SimulatedTemperatureSensorToIoTHub
    Value FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. Seleccione Siguiente: Revisar y crear.

  10. Revise el archivo JSON y luego seleccione Crear. El archivo JSON define todos los módulos que se implementan en el dispositivo IoT Edge.

    Nota:

    Cuando se envía una implementación nueva a un dispositivo IoT Edge, no se inserta nada en el dispositivo. En lugar de eso, el dispositivo consulta a IoT Hub de manera periódica para comprobar cualquier instrucción nueva. Si el dispositivo encuentra un manifiesto de implementación actualizado, usa la información sobre la nueva implementación para extraer las imágenes del módulo de la nube y, después, comienza a ejecutar localmente los módulos. Este proceso puede tardar unos minutos.

Después de crear los detalles de la implementación del módulo, el asistente lo lleva nuevamente a la página de detalles del dispositivo. Vea el estado de implementación en la pestaña Módulos.

Deben aparecer tres módulos: $edgeAgent, $edgeHub y SimulatedTemperatureSensor. Si se muestra para uno o varios de los módulos en Especificado en la implementación pero no en Notificado por el dispositivo, significa que el dispositivo IoT Edge todavía los está iniciando. Espere unos minutos y actualice la página.

Recorte de pantalla en el que se muestra el sensor de temperatura simulado en la lista de módulos implementados.

Si tiene problemas para implementar módulos, obtenga más información en Solución de problemas de dispositivos IoT Edge desde Azure Portal.

Visualización de datos generados

En este inicio rápido, creará un dispositivo IoT Edge e instalará el entorno de ejecución de IoT Edge en él. A continuación, usará Azure Portal para implementar un módulo de IoT Edge para que se ejecute en el dispositivo sin realizar cambios en el propio dispositivo.

En este caso, el módulo que ha insertado genera los datos del entorno de ejemplo que puede usar posteriormente para las pruebas. El sensor simulado está supervisando una máquina y el entorno alrededor de esta. Por ejemplo, este sensor puede estar en una sala de servidores, en una planta de fábrica o en una turbina eólica. El mensaje incluye la temperatura y la humedad ambiental, la temperatura y la presión de la máquina, y una marca de tiempo. Los tutoriales de IoT Edge usan los datos creados por este módulo como datos de prueba con fines de análisis.

Abra el símbolo del sistema en su dispositivo IoT Edge, o utilice la conexión SSH de la CLI de Azure. Confirme que el módulo implementado desde la nube se está ejecutando en el dispositivo IoT Edge:

sudo iotedge list

Recorte de pantalla en el que se muestran tres módulos en el dispositivo.

Vea los mensajes enviados desde el módulo sensor de temperatura:

sudo iotedge logs SimulatedTemperatureSensor -f

Recorte de pantalla en el que se muestran los datos del módulo en la consola de salida.

Sugerencia

Los comandos de IoT Edge distinguen mayúsculas de minúsculas en los nombres de los módulos.

Limpieza de recursos

Para continuar con los tutoriales de IoT Edge, use el dispositivo que registró y configuró en este inicio rápido. De lo contrario, elimine los recursos de Azure que creó para evitar cargos.

Si ha creado una máquina virtual y un centro de IoT en un nuevo grupo de recursos, puede eliminar dicho grupo y todos los recursos asociados. Compruebe el contenido del grupo de recursos para asegurarse de que no hay nada que quiera conservar. Si no desea eliminar todo el grupo, puede eliminar recursos individuales en su lugar.

Importante

La eliminación de un grupo de recursos es irreversible.

Elimine el grupo IoTEdgeResources. La eliminación de un grupo de recursos puede tardar unos minutos.

az group delete --name IoTEdgeResources --yes

Confirme que el grupo de recursos se elimina viendo la lista de grupos de recursos.

az group list

Pasos siguientes

En esta guía de inicio rápido, ha creado un dispositivo IoT Edge y ha usado la interfaz en la nube de Azure IoT Edge para implementar el código en el dispositivo. Ahora, se usa un dispositivo de prueba que genera datos sin procesar sobre su entorno.

En el siguiente tutorial, aprenderá a supervisar la actividad y el estado del dispositivo desde Azure Portal.