Compartir a través de


Transformar datos de forma externa para IoT Central

Los dispositivos IoT envían datos en varios formatos. Para utilizar los datos del dispositivo con su aplicación de IoT Central, es posible que necesite utilizar una transformación para:

  • Hacer que el formato de los datos sea compatible con la aplicación IoT Central.
  • Convertir unidades.
  • Procesar métricas nuevas.
  • Enriquecer los datos de otros orígenes.

En este artículo se muestra cómo transformar los datos del dispositivo fuera de IoT Central, ya sea a la entrada o la salida.

Nota:

IoT Central también puede transformar datos internamente para obtener más información, consulte Asignación de telemetría en la entrada a IoT Central y Transformación de datos dentro de la aplicación de IoT Central para su exportación.

En el diagrama siguiente se muestran tres rutas para los datos que incluyen transformaciones:

Resumen de rutas de transformación de datos tanto de entrada como de salida

En la tabla siguiente se muestran tres tipos de transformaciones de ejemplo:

Transformación Descripción Ejemplo Notas
Formato de los mensajes Convierta o manipule mensajes JSON. CSV a JSON En la entrada. IoT Central solo acepta mensajes JSON de valor. Para más información, consulte Telemetría, propiedad y cargas de comandos.
Cálculos Funciones matemáticas que Azure Functions puede ejecutar. Conversión de unidades de Fahrenheit a Celsius. Realice la transformación mediante el patrón de salida para aprovechar las ventajas de la entrada de dispositivo escalable a través de la conexión directa a IoT Central. La transformación de los datos le permite usar las características de IoT Central como visualizaciones y trabajos.
Enriquecimiento de mensajes Los enriquecimientos de orígenes de datos externos no se encuentran en las propiedades o la telemetría del dispositivo. Para más información sobre los enriquecimientos internos, consulte Exportación de datos de IoT a destinos en la nube mediante Blob Storage. Agregue información meteorológica a los mensajes mediante los datos de ubicación de los dispositivos. Realice la transformación mediante el patrón de salida para aprovechar las ventajas de la entrada de dispositivo escalable a través de la conexión directa a IoT Central.

Requisitos previos

Necesitará lo siguiente para completar los pasos de esta guía:

Transformación de datos en la entrada

Para transformar los datos del dispositivo en la entrada, hay dos opciones:

  • IoT Edge: Utiliza un módulo de IoT Edge para transformar datos de dispositivos aguas abajo antes de enviar los datos a tu aplicación de IoT Central.

  • Puente de dispositivos de IoT Central: el puente de dispositivos de IoT Central conecta otras nubes de dispositivos IoT, como Sigfox, Particle y The Things Network, a IoT Central. El puente de dispositivos usa una función de Azure para reenviar los datos y puede personalizar esta función para transformar los datos del dispositivo.

Uso de IoT Edge para transformar los datos del dispositivo

Transformación de datos en la entrada mediante IoT Edge

En este escenario, un módulo de IoT Edge transforma los datos de los dispositivos de bajada antes de reenviarlos a la aplicación IoT Central. Estos son los pasos de alto nivel que se deben realizar para configurar este escenario:

  1. Configuración de un dispositivo IoT Edge: instale y aprovisione un dispositivo IoT Edge como puerta de enlace y conecte la puerta de enlace a la aplicación de IoT Central.

  2. Conecte el dispositivo de bajada al dispositivo IoT Edge: Conecte los dispositivos de bajada al dispositivo IoT Edge y aprovisionelos en la aplicación de IoT Central.

  3. Transformación de datos de dispositivo en IoT Edge: Cree un módulo de IoT Edge para transformar los datos. Implemente el módulo en el dispositivo de puerta de enlace IoT Edge que reenvía los datos del dispositivo transformados a la aplicación IoT Central.

  4. Comprobar: envíe datos desde un dispositivo de bajada a la puerta de enlace y compruebe que los datos del dispositivo transformado llegan a la aplicación de IoT Central.

En el ejemplo de las secciones siguientes, el dispositivo de bajada envía datos JSON en el formato siguiente al dispositivo de puerta de enlace IoT Edge:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "celsius",
  }
}

Use un módulo de IoT Edge para transformar los datos y convertir el valor de temperatura de Celsius a Fahrenheit antes de enviarlo a IoT Central:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "fahrenheit"
  }
}

Examinar código

En los pasos siguientes se muestra cómo instalar y configurar este escenario:

Compilación del módulo personalizado

En este escenario, el dispositivo de IoT Edge ejecuta un módulo personalizado que transforma los datos del dispositivo de bajada. Antes de implementar y configurar el dispositivo de IoT Edge, debe:

  • Compilar el módulo personalizado.
  • Agregar el módulo personalizado a un registro de contenedor.

El entorno de ejecución de IoT Edge descarga módulos personalizados desde un registro de contenedor, como Azure Container Registry o Docker Hub. Azure Cloud Shell tiene todas las herramientas necesarias para crear un registro de contenedor, compilar el módulo y cargar el módulo en el registro:

Para crear un registro de contenedor:

  1. Abra Azure Cloud Shell e inicie sesión en su suscripción de Azure.

  2. Seleccione el shell de Bash.

  3. Ejecute los siguientes comandos para crear un registro de contenedor de Azure.

    REGISTRY_NAME="{your unique container registry name}"
    az group create --name ingress-scenario --location eastus
    az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true
    az acr credential show -n $REGISTRY_NAME
    

    Tome nota de los valores username y password, puesto que los usará más adelante. Solo necesita una de las contraseñas que se muestran en la salida del comando.

Para compilar el módulo personalizado en Azure Cloud Shell:

  1. En Azure Cloud Shell, clone el repositorio de GitHub que contiene el código fuente del módulo:

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. Para compilar el módulo personalizado, ejecute los siguientes comandos en Azure Cloud Shell:

    cd iot-central-transform-with-iot-edge/custommodule/transformmodule
    az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
    

    Los comandos anteriores pueden tardar varios minutos en ejecutarse.

Configuración de un dispositivo de IoT Edge

En este escenario se usa un dispositivo de puerta de enlace IoT Edge para transformar los datos de cualquier dispositivo de bajada. En esta sección se describe cómo crear plantillas de dispositivos de IoT Central para la puerta de enlace y los dispositivos de bajada en la aplicación de IoT Central. Los dispositivos de IoT Edge usan un manifiesto de implementación para configurar sus módulos.

En este ejemplo, el dispositivo de bajada no necesita una plantilla de dispositivo. El dispositivo de bajada está registrado en IoT Central para que pueda generar las credenciales que necesita para conectar el dispositivo de IoT Edge. Dado que el módulo ioT Edge transforma los datos, toda la telemetría del dispositivo de bajada llega a IoT Central como si el dispositivo IoT Edge lo enviara.

Para crear una plantilla de dispositivo para un dispositivo de puerta de enlace IoT Edge:

  1. Guarde una copia del manifiesto de implementación en la máquina de desarrollo local: moduledeployment.json.

  2. Abra la copia local del archivo de manifiesto demoduledeployment.json en un editor de texto.

  3. Busque la sección registryCredentials y reemplace los marcadores de posición por los valores que anotó al crear el registro de contenedor de Azure. El valor address es similar a {your username}.azurecr.io.

  4. Busque la sección settings para transformmodule. Reemplace {your username} por el mismo valor que usó en el paso anterior. Guarde los cambios.

  5. En la aplicación de IoT Central, vaya a la página Manifiestos de Edge .

  6. Seleccione + Nuevo. Escriba un nombre como Transformer para el manifiesto de implementación y cargue el archivo moduledeployment.json que descargó anteriormente. El manifiesto de implementación incluye un módulo personalizado denominado módulo de transformación.

  7. Seleccione Siguiente y, a continuación, Crear.

  8. En la aplicación de IoT Central, vaya a la página Plantillas de dispositivo .

  9. Seleccione + Nuevo, Seleccione Azure IoT Edge y, a continuación, seleccione Siguiente: Personalizar.

  10. Escriba dispositivo de puerta de enlace de IoT Edge como nombre de la plantilla de dispositivo. Seleccione Este es un dispositivo de puerta de enlace.

  11. Seleccione Siguiente: Revisar y, a continuación, seleccione Crear.

  12. En la página Crear un modelo , seleccione Modelo personalizado.

  13. En el modelo, seleccione Módulos y, a continuación, Importar módulos desde el manifiesto. Seleccione el manifiesto de implementación de Transformer y, a continuación, seleccione Importar.

El manifiesto de implementación no especifica la telemetría que envía el módulo. Para agregar las definiciones de telemetría a la plantilla de dispositivo:

  1. Seleccione Module transformmodule en la sección Módulos de la plantilla de dispositivo de IoT Edge gateway.

  2. Seleccione Agregar funcionalidad y use la información de las tablas siguientes para agregar un nuevo tipo de telemetría:

    Configuración Importancia
    Nombre para mostrar Dispositivo
    Nombre dispositivo
    Tipo de funcionalidad Telemetría
    Tipo semántico Ninguno
    Esquema Objeto

    Definición del objeto:

    Nombre para mostrar Nombre Esquema
    Id. de dispositivo ID del dispositivo Cadena

    Guarde los cambios.

  3. Seleccione Agregar funcionalidad y use la información de las tablas siguientes para agregar un nuevo tipo de telemetría:

    Configuración Importancia
    Nombre para mostrar Medidas
    Nombre medidas
    Tipo de funcionalidad Telemetría
    Tipo semántico Ninguno
    Esquema Objeto

    Definición del objeto:

    Nombre para mostrar Nombre Esquema
    Temperatura temperatura Doble
    Presión presión Doble
    Humedad humedad Doble
    Escala escala Cadena

    Guarde los cambios.

  4. En el modelo, seleccione Relaciones. No seleccione Relaciones en el módulo transformmodule .

  5. Seleccione Agregar relación.

  6. Escriba Sensor de bajada como nombre para mostrar, sensor como nombre y seleccione Cualquiera como destino. Seleccione Guardar.

  7. Seleccione Publicar para publicar la plantilla de dispositivo.

Para registrar un dispositivo de puerta de enlace en IoT Central:

  1. En la aplicación de IoT Central, vaya a la página Dispositivos .

  2. Seleccione Dispositivo de puerta de enlace de IoT Edge y seleccione + Nuevo. Escriba Dispositivo de puerta de enlace IoT Edge como nombre del dispositivo, gateway-01 como id. del dispositivo, y asegúrese de que Dispositivo de puerta de enlace IoT Edge esté seleccionado como plantilla de dispositivo y No como ¿Quiere simular este dispositivo?. Seleccione Transformer como manifiesto de borde. Seleccione Crear.

  3. En la lista de dispositivos, haga clic en el dispositivo de puerta de enlace de IoT Edge y seleccione Conectar.

  4. Anote los valores de ámbito de identificador, Id. de dispositivo y Clave principal para el dispositivo de puerta de enlace de IoT Edge. Los usará más adelante.

Para registrar un dispositivo de bajada en IoT Central:

  1. En la aplicación de IoT Central, vaya a la página Dispositivos .

  2. No seleccione una plantilla de dispositivo. Seleccione + Nuevo. Escriba Downstream 01 como nombre del dispositivo, escriba downstream-01 como id. de dispositivo, asegúrese de que la plantilla de dispositivo está Sin asignar y No está seleccionada como Simulate this device?. Seleccione Crear.

  3. En la lista de dispositivos, haga clic en el dispositivo Downstream 01 y seleccione Administrar dispositivo > Asociar a la puerta de enlace.

  4. En el cuadro de diálogo Asociar a una puerta de enlace, seleccione la plantilla de dispositivo de puerta de enlace IoT Edge y la instancia de dispositivo de puerta de enlace IoT Edge. Seleccione Adjuntar.

  5. En el dispositivo Downstream 01, seleccione Conectar.

  6. Anote los valores de ámbito de ID, ID de dispositivo y Clave principal para el dispositivo Downstream 01. Los usará más adelante.

Implementación de la puerta de enlace y los dispositivos

Para mayor comodidad, en este artículo se usan máquinas virtuales de Azure para ejecutar la puerta de enlace y los dispositivos de bajada. Para crear las dos máquinas virtuales de Azure, seleccione el botón Implementar en Azure que se muestra después de la tabla siguiente. Use la información de la tabla para completar el formulario implementación personalizada :

Campo Importancia
Grupo de recursos ingress-scenario
Puerta de enlace de prefijo de etiqueta DNS Un nombre DNS único para esta máquina, como <your name>edgegateway.
Valor de bajada del prefijo de etiqueta DNS Un nombre DNS único para esta máquina, como <your name>downstream.
Id. de ámbito El ámbito del identificador que anotó anteriormente.
Id. de dispositivo en la Puerta de enlace de IoT Edge gateway-01
Clave de dispositivo en la puerta de enlace de IoT Edge El valor de la clave principal que anotó anteriormente.
Tipo de autenticación Contraseña
Contraseña o clave de administrador Su elección de contraseña para la cuenta de AzureUser en ambas máquinas virtuales.

Botón Implementar en Azure

Seleccione Revisar y crear y, a continuación, Crear. Se tarda un par de minutos en crear las máquinas virtuales en el grupo de recursos del escenario de entrada .

Para comprobar que el dispositivo de puerta de enlace IoT Edge esté funcionando correctamente:

  1. Abra la aplicación IoT Central. A continuación, vaya al dispositivo puerta de enlace IoT Edge en la lista de dispositivos de la página Dispositivos.

  2. Seleccione la pestaña Módulos y compruebe el estado de los tres módulos. El entorno de ejecución de IoT Edge tarda unos minutos en iniciarse en la máquina virtual. Cuando se ejecuta la máquina virtual, el estado de los tres módulos es En ejecución. Si el entorno de ejecución de IoT Edge no se inicia, consulte Solución de problemas del dispositivo IoT Edge.

Para que el dispositivo de IoT Edge funcione como puerta de enlace, necesita algunos certificados para demostrar su identidad en cualquier dispositivo de nivel inferior. En este artículo se utilizan certificados de demostración. En un entorno de producción, use certificados de su entidad de certificación.

Para generar los certificados de demostración e instalarlos en el dispositivo de puerta de enlace, haga lo siguiente:

  1. Use SSH para conectarse e iniciar sesión en la máquina virtual del dispositivo de puerta de enlace. Puede encontrar el nombre DNS de esta máquina virtual en Azure Portal. Vaya a la máquina virtual edgegateway en el grupo de recursos del escenario de entrada.

    Sugerencia

    Es posible que deba abrir el puerto 22 para obtener acceso SSH en ambas máquinas virtuales antes de poder usar SSH para conectarse desde su máquina local o Azure Cloud Shell.

  2. Ejecute los comandos siguientes para clonar el repositorio de IoT Edge y generar los certificados de demostración:

    # Clone the repo
    cd ~
    git clone https://github.com/Azure/iotedge.git
    
    # Generate the demo certificates
    mkdir certs
    cd certs
    cp ~/iotedge/tools/CACertificates/*.cnf .
    cp ~/iotedge/tools/CACertificates/certGen.sh .
    ./certGen.sh create_root_and_intermediate
    ./certGen.sh create_edge_device_ca_certificate "mycacert"
    

    Después de ejecutar los comandos anteriores, estos archivos están listos para usarse en los pasos siguientes:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem: el certificado CA raíz que se usa para crear todos los demás certificados de demostración con el fin de probar un escenario de IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem : un certificado de CA de dispositivo al que hace referencia el archivo config.yaml . En un escenario de puerta de enlace, este certificado de CA es la forma en que el dispositivo IoT Edge comprueba su identidad en los dispositivos de nivel inferior.
    • ~/certs/private/iot-edge-device-mycacert.key.pem - La clave privada asociada al certificado CA del dispositivo.

    Para más información sobre estos certificados de demostración, consulte Creación de certificados de demostración para probar las características del dispositivo IoT Edge.

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

    sudo nano /etc/aziot/config.toml
    
  4. Quite la marca de comentario y modifique la configuración del certificado como se indica a continuación:

    trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem"
    
    ...
    
    [edge_ca]
    cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem"
    pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
    

    En el ejemplo anterior se da por supuesto que ha iniciado sesión como AzureUser y ha creado un certificado de CA de dispositivo denominado "mycacert".

  5. Guarde los cambios y ejecute el siguiente comando para comprobar que el archivo config.toml es correcto:

    sudo iotedge check
    
  6. Reinicio del entorno de ejecución de Azure IoT Edge:

    sudo iotedge config apply
    

Si el entorno de ejecución de IoT Edge se inicia correctamente después de los cambios, el estado de los módulos de $edgeAgent y $edgeHub cambia a En ejecución. Puede ver estos valores de estado en la página Módulos del dispositivo de puerta de enlace en IoT Central.

Si el entorno de ejecución no se inicia, compruebe los cambios realizados en config.toml y consulte Solución de problemas del dispositivo IoT Edge.

Conexión del dispositivo de bajada al dispositivo de IoT Edge

Para conectar un dispositivo de bajada al dispositivo de puerta de enlace de IoT Edge:

  1. Use SSH para conectarse e iniciar sesión en la máquina virtual del dispositivo de bajada. Puede encontrar el nombre DNS de esta máquina virtual en Azure Portal. Vaya a la máquina virtual leafdevice en el grupo de recursos del escenario de entrada.

    Sugerencia

    Es posible que deba abrir el puerto 22 para obtener acceso SSH en ambas máquinas virtuales antes de poder usar SSH para conectarse desde su máquina local o Azure Cloud Shell.

  2. Para clonar el repositorio de GitHub con el código fuente del dispositivo de bajada de ejemplo, ejecute el siguiente comando:

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. Para copiar el certificado necesario desde el dispositivo de puerta de enlace, ejecute los siguientes scp comandos. Este comando scp usa el nombre de host edgegateway para identificar la máquina virtual de la puerta de enlace. Se le pedirá la contraseña:

    cd ~/iot-central-transform-with-iot-edge
    scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
    
  4. Vaya a la carpeta leafdevice e instale los paquetes necesarios. A continuación, ejecute los scripts build y start para aprovisionar y conectar el dispositivo a la puerta de enlace:

    cd ~/iot-central-transform-with-iot-edge/leafdevice
    sudo apt update
    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install nodejs
    npm install
    npm run-script build
    npm run-script start
    

    Durante la ejecución de los comandos sudo apt-get install nodejs, se le podría pedir que permita instalaciones: presione Y si es así.

  5. Escriba el id. de dispositivo, el id. de ámbito y la clave SAS del dispositivo de bajada que creó anteriormente. Para el nombre de host, escriba edgegateway. La salida de este comando tiene un aspecto similar al siguiente:

    Registering device downstream-01 with scope 0ne00284FD9
    Registered device downstream-01.
    Connecting device downstream-01
    Connected device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    

Por motivos de simplicidad, el código del dispositivo de bajada aprovisiona el dispositivo en IoT Central. Normalmente, los dispositivos de bajada se conectan a través de una puerta de enlace porque no se pueden conectar a Internet y, por tanto, no se pueden conectar al punto de conexión del servicio de aprovisionamiento de dispositivos. Para más información, consulte Conexión de dispositivos a través de una puerta de enlace transparente de IoT Edge.

Comprobar

Para verificar que el escenario está en ejecución, dirígete a tu dispositivo de puerta de enlace IoT Edge en IoT Central.

Captura de pantalla que muestra los datos transformados en la página de dispositivos.

  • Seleccione Módulos. Compruebe que los tres módulos de IoT Edge $edgeAgent, $edgeHub y transformmodule se estén ejecutando.

  • Seleccione Datos sin procesar. Los datos de telemetría de la columna Dispositivo tienen el siguiente aspecto:

    {"deviceId":"downstream-01"}
    

    Los datos de telemetría de la columna Medidas tienen el siguiente aspecto:

    {"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"fahrenheit"}
    

La temperatura se envía en grados Fahrenheit. Dado que el dispositivo IoT Edge está transformando los datos del dispositivo de bajada, la telemetría está asociada al dispositivo de puerta de enlace en IoT Central. Para visualizar la telemetría transformada, cree una vista en la plantilla de dispositivo de puerta de enlace de IoT Edge y vuelva a publicarla.

Transformación de datos en la salida

Puede conectar los dispositivos a IoT Central, exportar los datos del dispositivo a un motor de proceso para transformarlos y luego enviar los datos transformados a IoT Central para poder realizar la administración y el análisis del dispositivo. Por ejemplo:

  • Los dispositivos envían datos de ubicación a IoT Central.
  • IoT Central exporta esos datos a un motor de proceso que mejora los datos de ubicación con información meteorológica.
  • El motor de proceso devuelve los datos mejorados a IoT Central.

Puede usar el puente de dispositivos de IoT Central como motor de proceso para transformar los datos exportados desde IoT Central.

Una ventaja de transformar los datos en la salida es que los dispositivos se conectan directamente a IoT Central, lo que facilita el envío de comandos a los dispositivos o la actualización de las propiedades del dispositivo. Sin embargo, con este método, puede usar más mensajes que la asignación mensual y aumentar el costo de usar Azure IoT Central.

Uso del puente de dispositivos de IoT Central para transformar los datos del dispositivo

Transformación de datos en la salida mediante IoT Edge

En este escenario, un motor de proceso transforma los datos del dispositivo exportados de IoT Central antes de enviarlos de vuelta a la aplicación de IoT Central. Estos son los pasos de alto nivel que se deben realizar para configurar este escenario:

  1. Configura el motor de cálculo: Crea un puente de dispositivo de IoT Central para actuar como un motor de cálculo para la transformación de datos.

  2. Transformación de los datos del dispositivo en el puente de dispositivos: transforme los datos en el puente de dispositivos modificando el código de función del puente de dispositivos para su caso de uso de transformación de datos.

  3. Habilite el flujo de datos desde IoT Central al puente de dispositivos: Exporte los datos de IoT Central al puente de dispositivos para su transformación. A continuación, reenvíe los datos transformados a IoT Central. Al crear la exportación de datos, use filtros de propiedades de mensaje para exportar solo los datos que no se hayan exportado.

  4. Compruebe: conecte el dispositivo a la aplicación de IoT Central y compruebe si hay datos de dispositivo sin procesar y datos transformados en IoT Central.

En el ejemplo descrito en las secciones siguientes, el dispositivo de bajada envía datos CSV con el formato siguiente al dispositivo de puerta de enlace de IoT Edge:

"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"

Use el puente de dispositivos para transformar los datos del dispositivo mediante:

  • El cambio de la unidad de temperatura de centígrados a Fahrenheit.
  • Enriquecer los datos del dispositivo con datos meteorológicos extraídos del servicio Open Weather para los valores de latitud y longitud.

A continuación, el puente de dispositivos envía los datos transformados a IoT Central con el siguiente formato:

{
  "temp": <temperature in degrees F>,
  "humidity": <humidity>,
  "lat": <latitude>,
  "lon": <longitude>,
  "weather": {
    "weather_temp": <temperature at lat/lon>,
    "weather_humidity": <humidity at lat/lon>,
    "weather_pressure": <pressure at lat/lon>,
    "weather_windspeed": <wind speed at lat/lon>,
    "weather_clouds": <cloud cover at lat/lon>,
    "weather_uvi": <UVI at lat/lon>
  }
}

En los pasos siguientes se muestra cómo instalar y configurar este escenario:

Recuperación de la configuración de conexión de IoT Central

Antes de configurar este escenario, debe obtener algunas configuraciones de conexión de la aplicación de IoT Central:

  1. Inicie sesión en su aplicación de IoT Central.

  2. Vaya a Permisos > Grupos de conexiones de dispositivos.

  3. Anote el ámbito del id.. Necesitará este valor más adelante.

  4. Seleccione el grupo de inscripción SaS-IoT-Devices . Anote la clave principal de la firma de acceso compartido. Necesitará este valor más adelante.

Configuración de un motor de proceso

En este escenario se usa la misma implementación de Azure Functions que el puente de dispositivos de IoT Central. Para implementar el puente de dispositivos, seleccione el botón Implementar en Azure que se muestra después de la tabla siguiente. Use la información de la tabla para completar el formulario implementación personalizada :

Campo Importancia
Grupo de recursos Cree un nuevo grupo de recursos denominado egress-scenario.
Región Seleccione la región más cercana a la suya.
Id. de ámbito Use el ámbito del id. que anotó anteriormente.
Clave SAS de IoT Central Use la clave principal de la firma de acceso compartido para el grupo de inscripción SaS-IoT-Devices. Anotó este valor anteriormente.

Implementación en Azure .

Seleccione Revisar y crear y, a continuación, Crear. Se tarda un par de minutos en crear la función de Azure y los recursos relacionados en el grupo de recursos del escenario de salida .

Transformación de los datos del dispositivo en el puente de dispositivos

Para configurar el puente de dispositivos para transformar los datos exportados del dispositivo:

  1. Obtenga una clave de API de aplicación del servicio Open Weather. La cuenta es gratuita, pero tiene un uso limitado del servicio. Para crear una clave de API de aplicación, cree una cuenta en el portal del servicio Open Weather y siga las instrucciones. Deberá usar la clave de API de Open Weather más adelante.

  2. En Azure Portal, vaya hasta la aplicación de funciones en el grupo de recursos del escenario de salida.

  3. En el panel de navegación izquierdo, en Herramientas de desarrollo, seleccione Editor de App Service (versión preliminar).

  4. Seleccione Ir → para abrir la página App Service Editor. Haga los siguientes cambios:

    1. Abra el archivo wwwroot/IoTCIntegration/index.js . Reemplace todo el código de este archivo por el código de index.js.

    2. En el nuevo archivo index.js, actualice el archivo de variable openWeatherAppId con la clave de API de Open Weather que obtuvo anteriormente.

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. Agregue una propiedad de mensaje a los datos que envió la función a IoT Central. IoT Central usa esta propiedad para evitar la exportación de los datos transformados. Para realizar este cambio, abra el archivo wwwroot/IoTCIntegration/lib/engine.js . Busque el siguiente código:

      if (timestamp) {
        message.properties.add('iothub-creation-time-utc', timestamp);
      }
      

      Agregue el siguiente código justo después del código del fragmento anterior:

      // add a message property that we can look for in data export to not re-compute computed telemetry
      message.properties.add('computed', true);
      

      Como referencia, puede ver un ejemplo completado del archivo engine.js .

  5. En el Editor de App Service, seleccione Consola en el panel de navegación izquierdo. Ejecute los comandos siguientes para instalar los paquetes necesarios:

    cd IoTCIntegration
    npm install
    

    Este comando puede tardar unos minutos en ejecutarse.

  6. Vuelva a la página Información general de la función de Azure y reinicie la función:

    Reinicio de la función

  7. Seleccione Funciones en el panel de navegación izquierdo. A continuación, seleccione IoTCIntegration. Seleccione Código y prueba.

  8. Anote la dirección URL de la función, ya que necesitará este valor más adelante:

    Obtención de la dirección URL de la función

Habilitación del flujo de datos de IoT Central al puente de dispositivos

En esta sección se describe cómo configurar la aplicación Azure IoT Central.

En primer lugar, guarde el archivo de modelo de dispositivo en la máquina local.

Para agregar una plantilla de dispositivo a la aplicación de IoT Central, vaya hasta la aplicación de IoT Central y a continuación:

  1. Inicie sesión en la aplicación de IoT Central y vaya a la página Plantillas de dispositivo .

  2. Seleccione + Nuevo, seleccione Dispositivo IoT, seleccione Siguiente: Personalizar, escriba Modelo de proceso como nombre de plantilla. Seleccione Siguiente: Revisar. A continuación, seleccione Crear.

  3. Seleccione Importar un modelo y vaya al archivo model.json que descargó anteriormente.

  4. Una vez importado el modelo, seleccione Publicar para publicar la plantilla de dispositivo modelo de proceso .

Configure la exportación de datos para enviarlos al puente de dispositivos:

  1. En la aplicación de IoT Central, seleccione Exportación de datos.

  2. Seleccione + Nuevo destino para crear un destino que se usará con el puente de dispositivos. Llame a la función Compute de destino, en Tipo de destino, seleccione Webhook. Para la dirección URL de devolución de llamada, seleccione Pegar en la URL de función que anotó anteriormente. Deje la autorización como Sin autenticación.

  3. Guarde los cambios.

  4. Seleccione + Nueva exportación y cree una exportación de datos denominada Exportación de proceso.

  5. Agregue un filtro para exportar solo los datos del dispositivo para la plantilla de dispositivos que esté usando. Seleccione + Filtro, seleccione plantilla de dispositivo, seleccione el operador Igual, y seleccione la plantilla de dispositivo modelo de cálculo que ha creado.

  6. Agregue un filtro de mensaje para diferenciar entre los datos transformados y los no transformados. Este filtro impide que los valores transformados se envíen de nuevo al puente del dispositivo. Seleccione + Filtro de propiedad Message y escriba el nombre del valor calculado; a continuación, seleccione el operador No existe. La cadena computed se usa como palabra clave en el código de ejemplo del puente de dispositivos.

  7. Para el destino, seleccione el destino de la función Compute que creó anteriormente.

  8. Guarde los cambios. Después de un minuto más o menos, el estado de exportación se muestra como Saludable.

Comprobar

El dispositivo de ejemplo que se usa para probar el escenario se escribe en Node.js. Asegúrese de que tiene Node.js y npm instalados en su máquina local. Si no desea instalar estos requisitos previos, use Azure Cloud Shell donde ya vienen preinstalados.

Para ejecutar un dispositivo de ejemplo que pruebe el escenario:

  1. Clone el repositorio de GitHub que contiene el código de ejemplo y luego ejecute el siguiente comando:

    git clone https://github.com/Azure/iot-central-compute
    
  2. Para conectar el dispositivo de ejemplo a la aplicación de IoT Central, edite la configuración de conexión en el archivo iot-central-compute/device/device.js . Reemplace el id. de ámbito y la clave SAS de grupo con los valores que anotó anteriormente:

    // These values need to be filled in from your Azure IoT Central application
    //
    const scopeId = "<IoT Central Scope Id value>";
    const groupSasKey = "<IoT Central Group SAS key>";
    //
    

    Guarde los cambios.

  3. Use los siguientes comandos para instalar los paquetes necesarios y ejecutar el dispositivo:

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. El resultado de este comando es similar al siguiente resultado:

    registration succeeded
    assigned hub=iotc-2bd611b0....azure-devices.net
    deviceId=computeDevice
    Client connected
    send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}]
    send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}]
    send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}]
    send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}]
    send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
    
  5. En la aplicación de IoT Central, vaya al dispositivo denominado computeDevice. En la vista Datos en bruto, hay dos flujos de telemetría diferentes que se muestran aproximadamente cada cinco segundos. La secuencia sin modelados es la telemetría original. La secuencia con modelados son los datos que la función transformó:

    Captura de pantalla que muestra los datos sin procesar originales y transformados.

Limpieza de recursos

Si ya no necesita los recursos de Azure que creó mientras sigue los pasos descritos en esta guía, elimine los grupos de recursos en Azure Portal.

Los dos grupos de recursos que usó en esta guía son el escenario de entrada y el escenario de salida.

Resumen

En este artículo obtuvo información sobre las diferentes opciones para transformar los datos del dispositivo para IoT Central, tanto en la entrada como en la salida. En el artículo se incluyen tutoriales para dos escenarios específicos:

  • Use un módulo de IoT Edge para transformar los datos de los dispositivos de bajada antes de enviar los datos a la aplicación IoT Central.
  • Use Azure Functions para transformar los datos fuera de IoT Central. En este escenario, IoT Central usa una exportación de datos para enviar datos entrantes a una función de Azure que se va a transformar. La función devuelve los datos transformados a la aplicación IoT Central.