Configuración de 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 el Azure Sphere genera una gran cantidad de datos o datos que requieren el procesamiento posterior.
En este tema se documenta los pasos para configurar un Azure IoT Edge con Azure Sphere. Azure Sphere admite las versiones 1.1 y 1.2 de Azure IoT Edge; hay diferencias significativas que se indican 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 nombre y una ubicación nuevos. 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 en la red.
Después de completar las tareas de este tema, el dispositivo Azure Sphere se configurará para enviar datos a un centro de Azure IoT a través de un dispositivo Azure IoT Edge que actúa como puerta de enlace transparente. Puede agregar procesamiento y filtrado de datos adicionales con un módulo en el dispositivo Azure IoT Edge siguiendo la guía del módulo Azure IoT Edge.
Antes de empezar
En los pasos de este tema se supone que:
- El Azure Sphere dispositivo está conectado al equipo mediante USB.
- Tiene una suscripción de Azure.
- Ha creado una instancia de Azure IoT Hub y ha aprovisionado manualmente un dispositivo.
Importante
Aunque puede crear una suscripción de Azure sin ningún cargo, 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 de servicio mensual, se selecciona al crear una instancia de Azure IoT Hub. Para evitar ese cargo mensual, seleccione el nivel Gratis. El nivel Gratis incluye los servicios necesarios para usar el dispositivo con una instancia de Azure IoT Hub, incluido el dispositivo gemelo. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar.
Información general
La configuración de un dispositivo Azure IoT Edge y su configuración para que funcione con un dispositivo Azure Sphere requiere un proceso de varios pasos y debe planear unas 8 horas para realizar 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 inquilino y dispositivo Azure IoT Edge; sin embargo, cada dispositivo Azure Sphere debe configurarse manualmente en Azure IoT Hub y el dispositivo Azure IoT Edge debe establecerse como el elemento primario del dispositivo Azure Sphere. Azure Sphere
Los pasos de configuración se pueden dividir en tres agrupaciones lógicas:
Creación y configuración del dispositivo IoT Edge como puerta de enlace transparente
- Paso 1. Crear un dispositivo Azure IoT Edge.
- Paso 2. Configure el dispositivo Azure IoT puerta de enlace de Edge como servidor.
- Paso 3. Abra los puertos Azure IoT dispositivo de puerta de enlace de Edge para la comunicación.
- Paso 4. Actualice el nombre de host de puerta de enlace en config.toml (Azure IoT Edge versión 1.2) o config.yaml (Azure IoT Edge versión 1.1).
Configuración del dispositivo Azure Sphere en Azure IoT Hub
- Paso 5. Establezca el Azure IoT Edge como elemento primario del Azure Sphere dispositivo.
Establecimiento de una conexión de confianza entre Azure Sphere dispositivo y el IoT Edge dispositivo
- Paso 6. Proporcione el certificado de entidad de certificación del Azure Sphere dispositivo al Azure IoT Edge.
- Paso 7. Proporcione el certificado de entidad de certificación raíz Azure IoT dispositivo Edge al Azure Sphere dispositivo.
Paso 1. Crear un dispositivo Azure IoT Edge
Debe configurar un dispositivo Azure IoT Edge y registrarlo en Azure IoT Hub, si aún no lo ha hecho.
Puede usar Device Provisioning Service (DPS) para aprovisionar el Azure IoT Edge. Sin embargo, no puede usar DPS para aprovisionar el Azure Sphere dispositivo. No se admite el aprovisionamiento automático de dispositivos de nivel inferior del Azure IoT Edge con Azure IoT Hub DPS.
Por ejemplo, puede seguir los pasos de esta guía de inicio rápido para configurar un dispositivo Azure IoT Edge que se ejecute en una máquina virtual Linux y registrarlo con Azure IoT Hub.
Siga los pasos del inicio rápido para:
- Registre un dispositivo Azure IoT Edge en la instancia de Azure IoT Hub. No cree un centro de IoT en este paso, solo tiene que registrar el dispositivo Azure IoT Edge en el centro de IoT que ya ha creado.
- Instale e inicie el entorno de Azure IoT Edge en el Azure IoT Edge.
Nota
Detenga antes de implementar un módulo.
Paso 2. Configuración del dispositivo IoT Edge puerta de enlace como servidor
Siga las instrucciones para configurar un dispositivo Azure IoT Edge para que actúe como puerta de enlace transparente (Azure IoT Edge 1.2) o Azure IoT Edge 1.1,pero deténguelo antes de la sección Abrir puertos en el dispositivo de puerta de enlace.
Como parte de los pasos que ha completado para configurar la puerta de enlace de dispositivos como servidor, ya tendrá:
- Configuró los certificados Azure IoT dispositivo Edge.
- Implementó el Azure IoT centro de Edge.
- Se ha configurado el enrutamiento de mensajes a través Azure IoT Edge.
Si sigue la guía de inicio rápido, use las instrucciones de Linux para configurar los certificados de demostración si la máquina en la que va a generar los certificados es un equipo basado en Linux. Use las Windows para generar los certificados de demostración si la máquina en la que va a generar los certificados es un Windows basado en certificados. Consulte la sección para copiar certificados raíz en una máquina virtual Linux o en un equipo Windows local.
El certificado de entidad de certificación raíz de Azure IoT Edge se modificará en el paso 7, pero necesitará el certificado original en el paso 8,por lo que debe conservar 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 los certificados: línea en el archivo config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1) no tienen espacios en blanco anteriores y que cada uno de los certificados anidados se aplica una sangría a dos espacios.
Una vez actualizado el archivo, compruebe que el módulo edgehub se ejecuta en el Azure IoT Edge.
Linux: sudo iotedge list
Para 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, detenga antes de generar el certificado de dispositivo de bajada, como se documenta en Creación de certificados de dispositivo de bajada (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.
Paso 3. Apertura de Azure IoT de dispositivo de puerta de enlace perimetral 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 de IoT Hub debe estar abierto para el tráfico entrante desde dispositivos de bajada.
Azure Sphere usa el protocolo MQTT. Este protocolo usa el puerto 8883.
Para obtener más información, vea Abrir puertos en el dispositivo de puerta de enlace (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.
Siga estos pasos para abrir el puerto 8883 en una máquina virtual Windows después de configurar un dispositivo Edge en el inicio rápido:
- Si es necesario, inicie sesión en el Azure Portal con su cuenta de Azure.
- Vaya a la máquina virtual que creó en la sección Paso 1: Crear un Azure IoT Edge.
- En el menú izquierdo debajo de Configuración, haga clic en Redes Agregar regla de puerto > de entrada.
- En el cuadro de diálogo Agregar regla de puerto de entrada, en Intervalos de puertos de destino , cambie el valor a 8883.
- En Protocolo , haga clic en TCP.
- En Nombre, cambie el valor a MQTT.
- Deje todas las demás opciones como predeterminadas y, a continuación, haga clic en Agregar.
Siga estos pasos para abrir el puerto 8883 en una máquina virtual Linux después de configurar un dispositivo Azure IoT Edge en el inicio rápido:
Ejecute el siguiente comando para comprobar si el puerto de MQTT está abierto:
sudo netstat -lptuSi es necesario, use 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 la puerta de enlace Azure IoT Edge.
Paso 4. Actualización del nombre de host de la puerta de enlace
En este paso se usan procedimientos diferentes en función de la versión de Azure IoT Edge que se use: Azure IoT Edge 1.2 o Azure IoT Edge 1.1.
Azure IoT Edge 1.2: actualización del nombre de host de puerta de enlace en config.toml
El runtime Azure IoT Edge admite nombres de host con menos de 64 caracteres. Normalmente, las máquinas físicas no tienen nombres de host largos, pero si usa una máquina virtual como dispositivo Azure IoT Edge, como en el ejemplo de inicio rápido, debe configurar manualmente el nombre de host.
Para solucionar problemas de un nombre de host no válido, consulte resoluciones de errores comunes.
Siga estos pasos para configurar el nombre de host del Azure IoT Edge después de configurar el puerto MQTT en el inicio rápido:
Para encontrar el nombre de dominio completo (FQDN) de la puerta de enlace perimetral, vaya al dispositivo Azure IoT Edge (máquina virtual Linux) en Azure Portal y copie el valor del nombre DNS de la página de información general.
Si es necesario, inicie sesión en el Azure IoT Edge.
Abra el archivo config.toml en un editor de texto.
- Linux:
/etc/aziot/config.toml
- Linux:
Pegue el FQDN en la sección hostname de config.toml. Asegúrese de que el nombre está escrito en minúsculas.
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 lo que es obligatorio un servidor DNS con los registros A adecuados en la misma red.
Reinicie el demonio de iotedge.
- Linux:
sudo systemctl restart iotedge
- Linux:
Si ve errores (texto coloreado con el prefijo "[ERROR]") en el estado, examine los registros de demonio para obtener información detallada sobre los errores.
- Linux:
sudo journalctl -u iotedge --no-pager --no-full
- Linux:
Para evitar advertencias, configure la configuración de DNS para los módulos en el dispositivo Azure IoT Edge para incluir un archivo de configuración en /etc/docker/daemon.json, como .
{ "dns": ["<IP address of your DNS server>"] }
Azure IoT Edge 1.1: actualización del nombre de host de puerta de enlace en config.yaml
El runtime Azure IoT Edge admite nombres de host con menos de 64 caracteres. Normalmente, las máquinas físicas no tienen nombres de host largos, pero si usa una máquina virtual como dispositivo Azure IoT Edge, como en el ejemplo de inicio rápido, debe configurar manualmente el nombre de host.
Para solucionar problemas de un nombre de host no válido, consulte resoluciones de errores comunes.
Siga estos pasos para configurar el nombre de host del Azure IoT Edge después de configurar el puerto MQTT en el inicio rápido:
En Azure Portal, navegue a la máquina virtual. Copie el nombre DNS (FQDN de la máquina) de la sección Introducción.
Si es necesario, inicie sesión en el Azure IoT Edge.
Abra el archivo config.yaml en un editor de texto.
- Linux:
/etc/iotedge/config.yaml
- Linux:
Pegue el FQDN en la sección de nombre de host del archivo config.yml. Asegúrese de que el nombre está escrito en minúsculas.
hostname: "<machinename>.<region>.cloudapp.azure.com"Nota
Es posible que tenga que usar el nombre de equipo sin sistema para el nombre de host, ya sea la dirección IP o el nombre de host real, si hay una resolución DNS en la red, ya que Azure Sphere no admite netbios.
Reinicie el demonio de iotedge.
- Linux:
sudo systemctl restart iotedge
- Linux:
Si ve errores (texto coloreado con el prefijo "[ERROR]") en el estado, examine los registros de demonio para obtener información detallada sobre los errores.
- Linux:
sudo journalctl -u iotedge --no-pager --no-full
- Linux:
Para evitar advertencias, configure la configuración de DNS para los módulos en el dispositivo Azure IoT Edge para incluir un archivo de configuración en /etc/docker/daemon.json, como .
{ "dns": ["<IP address of your DNS server>"] }
Paso 5. Establecer el Azure IoT Edge como elemento primario del Azure Sphere dispositivo
Siga estos pasos para establecer el Azure IoT Edge como el elemento primario del Azure Sphere dispositivo:
- Vaya al dispositivo Azure Sphere que se aprovisionó manualmente anteriormente.
- Haga clic en id. de dispositivo.
- Haga clic en el icono de engranaje en No parent device (Ningún dispositivo primario).
- Seleccione el Azure IoT Edge que desea establecer como primario.
- Haga clic en Aceptar y, a continuación, haga clic en Guardar.
Ahora verá que el dispositivo Azure IoT Edge es el elemento primario del Azure Sphere dispositivo.
Paso 6. Proporcione el certificado de ENTIDAD de certificación de Azure Sphere dispositivo al IoT Edge dispositivo.
Para comprobar Azure Sphere certificados de dispositivo, el Azure IoT Edge debe tener su propia copia de la CA del inquilino.
Descargue el certificado de entidad de certificación de inquilino, si aún no lo ha hecho. Nota: Ya debería haber completado esto como parte de la configuración de la Azure IoT Hub.
En el símbolo del sistema, inicie sesión con el Azure Sphere inicio de sesión:
azsphere loginDescargue el certificado de entidad de certificación para Azure Sphere inquilino. 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 donde tenga permisos de escritura o se producirá un error en la operación de descarga. Tenga en cuenta también que el archivo de salida debe tener la extensión .cer.
azsphere ca-certificate download --destination CAcertificate.cer
Convierta el certificado de entidad de certificación de inquilino al formato PEM. Las instrucciones de ejemplo para convertir el formato en Windows máquina 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 haga clic en Copiar en archivo.
- En el Asistente para exportar certificados, haga clic en Siguiente.
- Seleccione el X.509 codificado en Base 64 (. CER) y, a continuación, haga clic en Siguiente.
- Escriba el nombre de archivo para el certificado que se exportará y, a continuación, haga clic en Siguiente.
- Haga clic en Finalizar para completar el asistente.
- Cambie el nombre del archivo de certificado descargado para que tenga la extensión de archivo .pem.
Anexe el certificado de inquilino Azure IoT certificado raíz de Edge. Recuerde que creó los Azure IoT Edge en el paso 2.
- Si es necesario, inicie sesión en el Azure IoT Edge.
- Busque la ruta de acceso del certificado de entidad de certificación raíz IoT Edge dispositivo y ábralo en un editor de texto. Si siguió el inicio rápido y, a continuación, usó los scripts proporcionados en el repositorio git de Azure IoT Edge para crear certificados de demostración, el certificado de entidad de certificación raíz se denomina azure-iot-test-only.root.ca.cert.pem.
- Abra el Azure Sphere de entidad de certificación de inquilino (en formato PEM) en un editor de texto. Copie el contenido y péguelo al final del certificado de IoT Edge de entidad de certificación raíz.
- Guarde los cambios realizados en el certificado Azure IoT ca raíz de Edge y cierre el archivo.
- Reinicie el Azure IoT Edge. Para un dispositivo Linux Azure IoT Edge, ejecute:
sudo systemctl restart iotedge. - Compruebe que los módulos se ejecutan en el Azure IoT Edge. Para un dispositivo Linux Azure IoT Edge, ejecute:
sudo iotedge list.
Paso 7. Proporcione el certificado de entidad de certificación raíz Azure IoT edge al Azure Sphere dispositivo.
Para comprobar los certificados de dispositivo Azure IoT Edge, el dispositivo Azure Sphere (el dispositivo de bajada) debe tener su propia copia del certificado de entidad de certificación raíz del dispositivo Azure IoT Edge, que configuró en el paso 2.
Para obtener más información, Conectar un dispositivo de bajada auna puerta de enlace Azure IoT Edge.
Busque el certificado raíz Azure IoT dispositivo Edge original.
- Recuerde que el certificado raíz Azure IoT dispositivo 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 de IoT Edge para crear certificados de demostración, el certificado de entidad de certificación raíz se denomina azure-iot-test-only.root.ca.cert.pem.
Copie el Azure IoT raíz de Edge en Azure Sphere dispositivo mediante su adición al paquete de aplicación.
- Para obtener pasos detallados, consulte Creación de paquetes de imágenes.
- Consulte la sección para copiar certificados raíz en una máquina virtual Linux o en un equipo Windows local.
Paso 8. Copia del certificado raíz de IoT en un equipo remoto
Siga estos pasos para copiar el certificado raíz Azure IoT Edge en una máquina virtual Linux remota o en una máquina 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 usar la línea de comandos, use la herramienta de línea de comandos SCP (Copia segura).
Para transferir un archivo de una máquina Windows local a una máquina virtual Linux remota, ejecute el siguiente comando en 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 de una máquina virtual Linux remota a una máquina Windows local, ejecute el siguiente comando en 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 Azure IoTsiguiendo las instrucciones específicas para conectarse a través de Azure IoT Edge.