Transformar datos de forma externa para IoT Central

Los dispositivos IoT envían datos en varios formatos. Para usar los datos del dispositivo con la aplicación IoT Central, es posible que tenga que usar 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 los datos internamente. Para 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 las 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 Cargas de telemetría, propiedades y comandos.
Cálculos Funciones matemáticas que puede ejecutar Azure Functions. 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 obtener 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: 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.

  • puente de dispositivos de IoT Central: el puente de dispositivos de IoT Central conecta otras nubes de dispositivos de 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 de IoT Edge: instale y aprovisione un dispositivo de IoT Edge como puerta de enlace y conéctela a la aplicación IoT Central.

  2. Conexión del dispositivo de bajada al dispositivo de IoT Edge: conecte los dispositivos de bajada al dispositivo de IoT Edge y aprovisiónelos a la aplicación IoT Central.

  3. Transformación de los datos del 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. Comprobación: envíe datos desde un dispositivo de bajada a la puerta de enlace y compruebe que los datos del dispositivo transformados llegan a la aplicación 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 el 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 de un registro de contenedor, como un registro de contenedor de Azure o Docker Hub. La instancia de Azure Cloud Shell tiene todas las herramientas necesarias para crear un registro de contenedor, compilar el módulo y cargarlo 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 .
    

    La ejecución de estos comandos puede llevar varios minutos.

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 de IoT Edge transforma los datos, toda la telemetría del dispositivo de bajada llega a IoT Central como si lo enviara el dispositivo de IoT Edge.

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 moduledeployment.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 IoT Central, vaya a la página de manifiestos perimetrales.

  6. Seleccione + Nuevo. Escriba un nombre como Transformador 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 transformmodule.

  7. Seleccione Siguiente y, después, Crear.

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

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

  10. Escriba dispositivo de puerta de enlace de IoT Edge como el nombre de la plantilla de dispositivo. Seleccione This is a gateway device (Este es un dispositivo de puerta de enlace).

  11. Seleccione Siguiente: Revisar y, después, 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 Transformador 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 Módulo transformmodule la sección Módulos de la plantilla del dispositivo de puerta de enlace IoT Edge.

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

    Configuración Value
    Display name Dispositivo
    Nombre device
    Tipo de funcionalidad Telemetría
    Tipo semántico None
    Esquema Object

    Definición del objeto:

    Nombre para mostrar Nombre Esquema
    Id. de dispositivo deviceId 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 Value
    Display name Medidas
    Nombre medidas
    Tipo de funcionalidad Telemetría
    Tipo semántico None
    Esquema Object

    Definición del objeto:

    Nombre para mostrar Nombre Esquema
    Temperatura temperatura Doble
    Presión presión Doble
    Humedad humedad Doble
    Escala scale 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 Downstream Sensor (Sensor de bajada) como nombre para mostrar, sensor como nombre y seleccione Cualquiera como destino. Seleccione Guardar.

  7. A continuación, seleccione Publicar para publicar la plantilla del dispositivo.

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

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

  2. Seleccione Dispositivo de puerta de enlace IoT Edge y + 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 Transformador como manifiesto perimetral. Seleccione Crear.

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

  4. Tome nota de los valores del ámbito de id., el id. de dispositivo y la 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 IoT Central, vaya a la página Dispositivos.

  2. No seleccione una plantilla de dispositivo. Seleccione + Nuevo. Escriba Downstream 01 como nombre del dispositivo, downstream-01 como id. del dispositivo, y asegúrese de que la plantilla del dispositivo se muestre como Sin asignar y de que No esté seleccionado como ¿Quiere simular este dispositivo? Seleccione Crear.

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

  4. En el cuadro de diálogo Attach to a gateway (Asociar a una puerta de enlace), seleccione la plantilla de dispositivo denominada Dispositivo de puerta de enlace IoT Edge y la instancia de dispositivo denominada Dispositivo de puerta de enlace IoT Edge. Seleccione Adjuntar.

  5. En el dispositivo Downstream 01, seleccione Conectar.

  6. Tome nota de los valores del ámbito de id., el id. de dispositivo y la 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 de Implementación personalizada:

Campo Value
Resource group 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 AzureUser en ambas máquinas virtuales.

Botón Implementar en Azure

Seleccione Revisar y crear y, a continuación, Crear. Se necesitan un par de minutos para 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 de puerta de enlace de IoT Edge en la lista de dispositivos en 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 de 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 de 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 se hace referencia desde 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 con el certificado de 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 de 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 presupone que inició sesión como AzureUser y creó un certificado de CA de dispositivo denominado "mycacert".

  5. Guarde los cambios y ejecute el comando siguiente 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 Azure IoT Edge se inicia correctamente después de los cambios, el estado de los módulos $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 que realizó 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 hasta 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 obtener más información, consulte Conexión de dispositivos a través de una puerta de enlace transparente IoT Edge.

Comprobar

Para comprobar que el escenario se esté ejecutando, vaya hasta su dispositivo de puerta de enlace de 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":"farenheit"}
    

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, es posible que use más mensajes que la asignación mensual y que por ello aumente 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. Configuración del motor de proceso: cree un puente de dispositivos de IoT Central para que actúe como motor de proceso 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; para ello, debe modificar el código de función del puente de dispositivos para el caso de uso de transformación de datos.

  3. Habilitación del flujo de datos de 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. Comprobación: conecte su dispositivo a la aplicación IoT Central y compruebe tanto los datos sin procesar del dispositivo como los 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.
  • Realizando el enriquecimiento de los datos del dispositivo con los datos meteorológicos que extrajo del servicio Open Weather para obtener 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": <logitude>,
  "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 conexión 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 de Implementación personalizada:

Campo Value
Resource group Cree un nuevo grupo de recursos denominado egress-scenario.
Region 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 necesitan un par de minutos para crear la función de Azure y los recursos relacionados en el grupo de recursos 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 menú de navegación de la izquierda, en Herramientas de desarrollo, seleccione Editor de App Service (versión preliminar).

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

    1. Abra el archivo wwwroot/IoTCIntegration/index.js. Reemplace todo el código de este archivo con 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 completo del archivo engine.js.

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

    cd IoTCIntegration
    npm install
    

    Este comando puede tardar varios 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 Functions en el menú de navegación de la izquierda. 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 del modelo de dispositivo en el equipo 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 IoT Central y vaya a la página Plantillas de dispositivo.

  2. Seleccione + Nuevo, Dispositivo de IoT, Siguiente: personalizar y escriba Modelo de proceso como nombre de la plantilla. Seleccione Siguiente: Review (Siguiente: revisar). Seleccione Crear.

  3. Seleccione Importar un modelo y busque el 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 al destino Función de proceso, y 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 opción Autorización como Sin autorización.

  3. Guarde los cambios.

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

  5. Agregue un filtro para exportar solo los datos del dispositivo para la plantilla de dispositivos que esté usando. Seleccione + Filtro, el elemento Plantilla de dispositivo, el operador Igual a y la plantilla de dispositivo Modelo de proceso que creó.

  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 del mensaje y escriba el valor del nombre procesado; 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 de proceso que creó anteriormente.

  8. Guarde los cambios. Después de aproximadamente un minuto, el Estado de exportación se muestra como Correcto.

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 quiere instalar estos requisitos previos, use Azure Cloud Shell, que los tiene preinstalados.

Para ejecutar un dispositivo de ejemplo que pruebe el escenario:

  1. Clone el repositorio de GitHub que contiene el código fuente del módulo y ejecute el siguiente comando:

    git clone https://github.com/Azure/iot-central-compute
    
  2. Para conectar el dispositivo de ejemplo a la aplicación 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 IoT Central, vaya al dispositivo denominado computeDevice. En la vista Datos sin procesar, tiene dos flujos de telemetría diferentes que aparecen cada cinco segundos. La secuencia con datos sin modelar es la telemetría original, y la secuencia con datos modelados son los datos que transformó la función:

    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ó al seguir los pasos de esta guía, elimine los grupos de recursos de Azure Portal.

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

Pasos siguientes

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.

Ahora que ha aprendido a transformar los datos del dispositivo fuera de la aplicación Azure IoT Central, puede aprender a usar el explorador de datos para analizar los datos del dispositivo en IoT Central.