Configurar Azure IoT Edge para Azure Sphere

Azure IoT Edge proporciona una capa de filtrado y procesamiento de datos entre un dispositivo de bajada, como Azure Sphere y Azure IoT Hub. Considere la posibilidad de usar Azure IoT Edge si su dispositivo Azure Sphere produce una cantidad considerable de datos o datos que requieren un procesamiento posterior.

Este tema documenta los pasos para configurar un dispositivo de Azure IoT Edge con Azure Sphere. Azure Sphere admite las versiones 1.1 y 1.2 de Azure IoT Edge; se indican diferencias significativas en las instrucciones. Las principales diferencias son:

  • El nombre del paquete ha cambiado de iotedge a aziot-edge.
  • El archivo de configuración predeterminado tiene un nuevo nombre y una nueva ubicación. En Azure IoT Edge 1.1, el archivo de configuración era /etc/iotedge/config.yaml. En Azure IoT Edge 1.2, el archivo de configuración es /etc/aziot/config.toml.
  • Azure IoT Edge 1.2 requiere un nombre de dominio completo (FQDN) accesible a través de un servidor DNS de la red.

Después de completar las tareas de este tema, su dispositivo Azure Sphere se configurará para enviar datos a un Azure IoT Hub a través de un dispositivo de Azure IoT Edge que actúa como una puerta de enlace transparente. Puede agregar filtrado y procesamiento de datos adicionales con un módulo en el dispositivo de Azure IoT Edge siguiendo la Guía del módulo azure IoT Edge.

Antes de empezar

En los pasos descritos en este tema se supone que:

  • El dispositivo Azure Sphere está conectado a tu PC mediante USB.
  • Tiene una suscripción de Azure.
  • Ha creado una instancia de Azure IoT Hub y aprovisionado manualmente un dispositivo. Tenga en cuenta que necesitará usar el certificado de CA del catálogo para el IoT Hub más adelante en el procedimiento (paso 6).
  • Ha creado un grupo de recursos y todos los recursos relacionados con los servicios Azure IoT Hub y IoT Edge deben pertenecer a este grupo de recursos.

Importante

Aunque puede crear una suscripción de Azure sin cargo alguno, el proceso de registro requiere que escriba un número de tarjeta de crédito. Azure proporciona varios niveles de servicio de suscripción. De forma predeterminada, el nivel Estándar, que requiere un cargo mensual por servicio, se selecciona al crear una instancia de Azure IoT Hub. Para evitar cargos mensuales, selecciona el nivel Gratuito. El nivel Gratuito incluye los servicios necesarios para usar el dispositivo con una instancia Azure IoT Hub, incluido el Dispositivo twin. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar.

Visión general

Configurar un dispositivo azure IoT Edge y configurarlo para que funcione con un dispositivo Azure Sphere requiere un proceso de varios pasos y debe planear unas 8 horas para trabajar con los pasos, especialmente si no está familiarizado con Azure IoT Edge. Si es la primera vez que trabaja con Azure IoT Edge, siga las instrucciones de Inicio rápido de cada sección para configurar un dispositivo IoT Edge que se ejecute en una máquina virtual Linux.

Estos pasos deben completarse solo una vez por catálogo de Azure Sphere y dispositivo de Azure IoT Edge; sin embargo, cada dispositivo Azure Sphere debe configurarse manualmente en Azure IoT Hub y el dispositivo azure IoT Edge debe configurarse como el padre del dispositivo Azure Sphere.

Los pasos de configuración se pueden dividir en tres agrupaciones lógicas:

  • Crear y configurar el dispositivo IoT Edge como una puerta de enlace transparente

    • Paso 1. Crear un dispositivo de Azure IoT Edge.
    • Paso 2. Configure el dispositivo de la puerta de enlace de Azure IoT Edge como un servidor.
    • Paso 3. Abra los puertos de dispositivo de puerta de enlace de Azure IoT Edge para la comunicación.
    • Paso 4. Actualice el nombre de host de la puerta de enlace en config.toml (Azure IoT Edge versión 1.2) o config.yaml (Azure IoT Edge versión 1.1).
  • Configurar el dispositivo Azure Sphere en Azure IoT Hub

    • Paso 5. Establezca el dispositivo de Azure IoT Edge como elemento principal del dispositivo Azure Sphere.
  • Establecer una conexión de confianza entre el dispositivo Azure Sphere y el dispositivo IoT Edge

    • Paso 6. Proporcione el certificado de CA del catálogo del dispositivo Azure Sphere al dispositivo de Azure IoT Edge.
    • Paso 7. Proporcione el certificado de CA raíz de Azure IoT Edge dispositivo al dispositivo Azure Sphere.

Paso 1. Crear un dispositivo de Azure IoT Edge

Debe configurar un dispositivo de Azure IoT Edge y registrarlo en Azure IoT Hub, si aún no lo ha hecho.

Puedes usar el Servicio de aprovisionamiento de dispositivos (DPS) para aprovisionar el dispositivo de Azure IoT Edge. Sin embargo, no puede usar DPS para aprovisionar el dispositivo Azure Sphere. No se admite el aprovisionamiento automático de dispositivos aguas abajo del dispositivo de Azure IoT Edge con el Azure IoT Hub DPS.

Puedes seguir los pasos de la IoT Edge Inicio rápido para configurar un dispositivo de Azure IoT Edge que se ejecute en una máquina virtual de Linux o un dispositivo Windows y registrarlo en Azure IoT Hub.

Siga los pasos del Inicio rápido para:

  • Registre un dispositivo de Azure IoT Edge en la instancia de Azure IoT Hub. No crees un nuevo IoT Hub en este paso, solo tienes que registrar el dispositivo de Azure IoT Edge en el IoT Hub que ya has creado.
  • Instale e inicie el entorno en tiempo de ejecución de Azure IoT Edge en su dispositivo de Azure IoT Edge.

Nota

En el IoT Edge Inicio rápido, detenga antes de implementar un módulo.

Paso 2. Configurar el dispositivo de puerta de enlace de IoT Edge como un servidor

Siga las instrucciones para Configurar un dispositivo de Azure IoT Edge para que actúe como una puerta de enlace transparente (Azure IoT Edge 1.2) o Azure IoT Edge 1.1, pero deténgase cuando llegue a la sección "Abrir puertos en el dispositivo de puerta de enlace". Aunque estas instrucciones le indican que copie los archivos de certificado en el dispositivo de IoT Edge, no copie los archivos en la máquina virtual hasta el paso 8 de este procedimiento.

Como parte de los pasos completados para configurar la puerta de enlace del dispositivo como un servidor, ya tendrá:

  • Ha configurado los certificados de dispositivo de Azure IoT Edge.
  • Implementado el módulo azure IoT Edge hub.
  • Ha configurado el enrutamiento de mensajes a través del IoT Edge de Azure.

Además, como parte de estos pasos, habrá creado estos certificados:

  • Certificado de CA raíz: certs/azure-iot-test-only.root.ca.cert.pem
  • Certificado de CA del dispositivo y clave privada (utilizada para registrar el dispositivo IoT Edge en el IoT Hub):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge certificado de CA y clave privada (que se copiará a un dispositivo IoT Edge y se hace referencia en su archivo de configuración):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

Si está siguiendo el Inicio rápido, use las instrucciones de Linux para configurar los certificados de demostración si el equipo en el que está generando los certificados es un equipo basado en Linux. Use las instrucciones de Windows para generar los certificados de demostración si el equipo en el que está generando los certificados es un equipo basado en Windows. Consulte la sección para copiar certificados raíz a una máquina virtual de Linux o a un equipo windows local.

El certificado de CA raíz de Azure IoT Edge se modificará en el paso 7, pero necesitará el certificado original en el paso 8. Conserve una copia del certificado original para poder volver a usarlo.

Nota

Al actualizar la sección de certificados del archivo config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1), asegúrese de que la certificates: línea en el archivo config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1) no tiene espacios en blanco anteriores y que cada uno de los certificados anidados tiene dos espacios con sangría.

Una vez que haya actualizado el archivo, compruebe que el módulo edgehub se está ejecutando en su dispositivo de Azure IoT Edge:

sudo iotedge list

Para obtener más información, consulte Cómo se puede usar un dispositivo IoT Edge como puerta de enlace (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Si usa certificados de prueba, deténgase antes de generar el certificado de dispositivo intermedio, como se indica en Crear certificados de dispositivo intermedios (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Paso 3. Abrir puertos de dispositivo de puerta de enlace de Azure IoT Edge para la comunicación

Los dispositivos de puerta de enlace deben poder recibir mensajes de sus dispositivos de bajada. Para que un escenario de puerta de enlace funcione, al menos uno de los protocolos admitidos por IoT Hub debe estar abierto para el tráfico entrante desde dispositivos que aguas abajo.

Azure Sphere usa el protocolo MQTT. Este protocolo usa el puerto 8883.

Para obtener más información, vea Abrir puertos en un dispositivo de puerta de enlace (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Sigue estos pasos para abrir el puerto 8883 en una VM de Windows después de configurar un dispositivo Edge en el Inicio rápido:

  1. Si es necesario, inicie sesión en su Azure Portal con su cuenta de Azure.
  2. Vaya a la máquina virtual que creó en la sección Paso 1: Crear un dispositivo de Azure IoT Edge.
  3. En la sección Configuración de la izquierda, seleccione Redes y, después, Agregar regla de puerto de entrada.
  4. En la hoja Agregar regla de puerto de entrada , en Intervalos de puertos de destino, cambie el valor a 8883.
  5. En Protocolo, selecciona TCP.
  6. En Nombre, cambie el valor a MQTT.
  7. Deja todas las demás opciones de configuración como predeterminadas y, a continuación, selecciona Agregar.

Siga estos pasos para abrir el puerto 8883 en una máquina virtual de Linux después de configurar un dispositivo de Azure IoT Edge en inicio rápido:

  1. Ejecute el siguiente comando para comprobar si el puerto de MQTT está abierto:

    sudo netstat -lptu

  2. Si es necesario, utilice el siguiente comando para abrir el puerto:

    sudo ufw allow 8883

Esto definirá una regla de seguridad de entrada para permitir la comunicación del protocolo MQTT con Azure IoT Edge Gateway.

Paso 4. Actualizar el nombre de host de la puerta de enlace

Este paso usa diferentes procedimientos según la versión de Azure IoT Edge que use: Azure IoT Edge 1.2 o Azure IoT Edge 1.1.

Azure IoT Edge 1.2: Actualizar el nombre de host de la puerta de enlace en config.toml

Azure IoT Edge runtime admite nombres de host de menos de 64 caracteres. Los equipos físicos normalmente no tienen nombres de host largos, pero si usa una máquina virtual como dispositivo de Azure IoT Edge, como el ejemplo de Inicio rápido, debe configurar manualmente el nombre de host.

Para solucionar problemas con un nombre de host no válido, consulte las resoluciones de errores comunes.

Siga estos pasos para configurar el nombre de host del dispositivo de Azure IoT Edge después de configurar el puerto MQTT en el Inicio rápido:

  1. Busque el nombre de dominio completo (FQDN) de la puerta de enlace de IoT Edge yendo a su dispositivo IoT Edge (VM de Linux) en azure Portal y copiando el valor del nombre DNS en la página de información general.

  2. Si es necesario, inicie sesión en el dispositivo de Azure IoT Edge.

  3. Abra el archivo config.toml en un editor de texto.

    /etc/aziot/config.toml

  4. Pegue el FQDN en la sección del nombre de host de config.toml. Asegúrese de que el nombre sea todo minúscula.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Nota

    Por diseño con Azure IoT Edge v1.2 y posteriores, el nombre de host DEBE ser un nombre FQDN (ya no se permite una dirección IP, como en v1.1); por tanto, es obligatorio un servidor DNS con el registro A adecuado en la misma red.

  5. Reinicie el iotedge demonio.

    sudo systemctl restart iotedge

  6. Si ve errores (texto de color con el prefijo "[ERROR]") en el estado, examine los registros del demonio para obtener información detallada sobre los errores.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Para evitar advertencias, configure el DNS para los módulos en el dispositivo de Azure IoT Edge para incluir un archivo de configuración en /etc/docker/daemon.json, por ejemplo:

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: Actualizar el nombre de host de la puerta de enlace en config.yaml

Azure IoT Edge runtime admite nombres de host de menos de 64 caracteres. Los equipos físicos normalmente no tienen nombres de host largos, pero si usa una máquina virtual como dispositivo de Azure IoT Edge, como el ejemplo de Inicio rápido, debe configurar manualmente el nombre de host.

Para solucionar problemas con un nombre de host no válido, consulte las resoluciones de errores comunes.

Siga estos pasos para configurar el nombre de host del dispositivo de Azure IoT Edge después de configurar el puerto MQTT en el Inicio rápido:

  1. En la Azure Portal, navega a la máquina virtual. Copie el valor del nombre DNS (FQDN del equipo) de la sección Información general .

  2. Si es necesario, inicie sesión en el dispositivo de Azure IoT Edge.

  3. Abra el archivo config.yaml en un editor de texto.

    /etc/iotedge/config.yaml

  4. Pegue el FQDN en la sección de nombre de host de config.yaml. Asegúrese de que el nombre sea todo minúscula.

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    Nota

    Es posible que tenga que usar el nombre del equipo desnudo para el nombre de host (la dirección IP o el nombre de host real) si hay un solucionador de DNS en la red, ya que Azure Sphere no admite netbios.

  5. Reinicie el iotedge demonio.

    sudo systemctl restart iotedge

  6. Si ve errores (texto de color con el prefijo "[ERROR]") en el estado, examine los registros del demonio para obtener información detallada sobre los errores.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Para evitar advertencias, configure el DNS para los módulos en el dispositivo de Azure IoT Edge para incluir un archivo de configuración en /etc/docker/daemon.json, por ejemplo:

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

Paso 5. Establecer el dispositivo de Azure IoT Edge como elemento principal del dispositivo Azure Sphere

Siga estos pasos para establecer el dispositivo de Azure IoT Edge como el elemento principal del dispositivo Azure Sphere:

  1. Vaya al dispositivo Azure Sphere que se ha aprovisionado manualmente anteriormente.
  2. Selecciona Id. de dispositivo.
  3. Selecciona el icono de engranaje en Sin dispositivo principal.
  4. Seleccione el dispositivo de Azure IoT Edge que desea establecer como elemento primario.
  5. Seleccione Aceptar y, después, Guardar.

El dispositivo Azure IoT Edge ahora se convierte en el padre del dispositivo Azure Sphere.

Paso 6. Proporcionar el certificado de CA del catálogo del dispositivo Azure Sphere al dispositivo IoT Edge

Para comprobar los certificados del dispositivo Azure Sphere, el dispositivo azure IoT Edge debe tener su propia copia de la CA del catálogo.

  1. Descargue el certificado de CA del catálogo, si aún no lo ha hecho. Nota: Ya debería haber completado esto como parte de la configuración del Azure IoT Hub.

    • Desde el símbolo del sistema, inicia sesión con el inicio de sesión de Azure:

      az login
      
    • Descargue el certificado de CA para su catálogo de Azure Sphere. Este comando descarga el certificado en un archivo denominado CAcertificate.cer en el directorio de trabajo actual. Asegúrese de descargar el archivo en un directorio en el que tenga permiso de escritura o se producirá un error en la operación de descarga. El archivo de salida debe tener una extensión .cer.

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. Convierta el certificado de CA del catálogo a formato PEM. Las instrucciones de ejemplo para convertir el formato en un equipo con Windows son las siguientes:

    • Busque la ruta de acceso del certificado en el equipo y haga doble clic en el certificado para abrirlo.
    • Abra la pestaña Detalles y seleccione Copiar al archivo.
    • En el Asistente para exportación de certificados , seleccione Siguiente.
    • Selecciona el formato X.509 (CER) codificado en Base 64 y, a continuación, selecciona Siguiente.
    • Escriba el nombre de archivo del certificado que desea exportar y, a continuación, seleccione Siguiente.
    • Seleccione Finalizar para completar el asistente.
    • Cambie el nombre del archivo de certificado descargado para que tenga la extensión de archivo .pem.
  3. Anexar el certificado del catálogo al certificado raíz de Azure IoT Edge. Recuerde que creó los certificados de Azure IoT Edge en el paso 2.

    • Si es necesario, inicie sesión en el dispositivo de Azure IoT Edge.
    • Busque la ruta de acceso del certificado de CA raíz de IoT Edge dispositivo y ábrala en un editor de texto. Si siguió el inicio rápido y después usó los scripts proporcionados en el repositorio git de Azure IoT Edge para crear certificados de demostración, el certificado de CA raíz se denomina azure-iot-test-only.root.ca.cert.pem.
    • Abra el certificado de CA del catálogo Azure Sphere (en formato PEM) en un editor de texto. Copie el contenido y péguelo al final del certificado de CA raíz de IoT Edge.
    • Guarde los cambios realizados en el certificado de CA raíz de Azure IoT Edge y cierre el archivo.
    • Reinicia el dispositivo de Azure IoT Edge. Para un dispositivo de IoT Edge De Azure de Linux, ejecute: sudo systemctl restart iotedge.
    • Compruebe que los módulos se están ejecutando en su dispositivo de Azure IoT Edge. Para un dispositivo de IoT Edge De Azure de Linux, ejecute: sudo iotedge list.

Paso 7. Proporcionar el certificado de CA raíz de Azure IoT Edge dispositivo al dispositivo Azure Sphere

Para comprobar los certificados de dispositivo de Azure IoT Edge, el dispositivo Azure Sphere (el dispositivo de bajada) debe tener su propia copia del certificado de CA raíz del dispositivo de Azure IoT Edge, que configuró en el paso 2.

Para obtener más información, vea Conectar un dispositivo de bajada a una puerta de enlace de Azure IoT Edge.

  1. Busque el certificado raíz del dispositivo de Azure IoT Edge original.

    • Recuerde que el certificado raíz del dispositivo de Azure IoT Edge original es el que creó en el paso 2.
    • Si siguió el inicio rápido y, a continuación, usó los scripts proporcionados en el repositorio de git IoT Edge para crear certificados de demostración, el certificado de CA raíz se denomina azure-iot-test-only.root.ca.cert.pem.
  2. Copie el certificado raíz de Azure IoT Edge al dispositivo Azure Sphere agregándolo al paquete de aplicación.

Paso 8. Copiar el certificado raíz de IoT en un equipo remoto

Sigue estos pasos para copiar el certificado raíz de Azure IoT Edge a una máquina virtual linux remota o a un equipo windows local:

  • Puede instalar la herramienta WinSCP para transferir los archivos. La herramienta proporciona una GUI para que sea más fácil de usar que un enfoque de línea de comandos.

  • Para utilizar la línea de comandos, utilice la herramienta de línea de comandos SCP (Copia segura).

  • Para transferir un archivo desde un equipo local de Windows a una máquina virtual linux remota, ejecute el siguiente comando en Windows PowerShell:

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    Sintaxis de ejemplo:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • Para transferir un archivo desde una VM de Linux remota a un equipo local de Windows, ejecute el siguiente comando en Windows PowerShell:

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    Sintaxis de ejemplo:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

Solución de problemas

Si experimenta problemas al ejecutar Azure IoT Edge en su entorno, use estos artículos para solucionar problemas y diagnósticos:

Pasos siguientes

  • Después de completar los pasos de este tema, puede ejecutar el ejemplo de Azure IoT siguiendo las instrucciones para conectarse con Azure IoT Edge.