Tutorial: Creación de soluciones de un extremo a otro

En este tutorial de Azure Digital Twins se describe cómo crear una solución completa que muestra la funcionalidad del servicio. Para configurar una solución de un extremo a otro controlada por los datos en directo de su entorno, puede conectar su instancia de Azure Digital Twins a otros servicios de Azure para la administración tanto de los dispositivos como de los datos.

En este tutorial:

  • Configurará una instancia de Azure Digital Twins.
  • Obtendrá información acerca del escenario del edificio de ejemplo y creará instancias de los componentes que se han escrito previamente.
  • Usará una aplicación de Azure Functions para enrutar los datos de telemetría simulados de un dispositivo de IoT Hub en las propiedades de gemelos digitales.
  • Propagará los cambios con el grafo de gemelos, mediante el procesamiento de las notificaciones de los gemelos digitales con Azure Functions, puntos de conexión y rutas.

Requisitos previos

Antes de comenzar este tutorial, comience con estos requisitos previos:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
  • En este tutorial se usa .NET. Puede descargar la última versión del SDK de .NET para múltiples plataformas desde Descargar .NET.

Después, continúe con el resto de esta sección para configurar los requisitos previos restantes.

Obtención de recursos de ejemplo

El tutorial se basa en un proyecto de ejemplo completo de Azure Digital Twins escrito en C#. Para obtener el proyecto de ejemplo en la máquina, vaya al vínculo del ejemplo y seleccione el botón Browse code (Examinar código) situado debajo del título.

Esto le llevará al repositorio de GitHub de los ejemplos, que se pueden descargar como un archivo .zip si se selecciona el botón Código y después Descargar archivo ZIP.

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a zip.

Esta acción descargará una carpeta .zip en la máquina denominada digital-twins-samples-main.zip. Descomprima la carpeta y extraiga los archivos.

Preparación de una instancia de Azure Digital Twins

Para poder seguir los pasos que se describen en este artículo y trabajar con Azure Digital Twins, es preciso configurar una instancia de Azure Digital Twins y los permisos necesarios para usarla. Si ya tiene una instancia configurada de Azure Digital Twins, puede usarla y pasar a la sección siguiente. De lo contrario, siga las instrucciones que se indican en Configuración de una instancia y autenticación. Las instrucciones contienen información que le ayudará a comprobar que ha completado cada paso correctamente.

Una vez configurada la instancia, anote el nombre de host de esta. El nombre de host se encuentra en Azure Portal.

Preparación del entorno para la CLI de Azure

Configuración de la sesión de la CLI

Para empezar a trabajar con Azure Digital Twins en la CLI, primero es necesario iniciar sesión y establecer el contexto de la CLI en su suscripción para esta sesión. Ejecute estos comandos en la ventana de la CLI:

az login
az account set --subscription "<your-Azure-subscription-ID>"

Sugerencia

En el comando anterior, también puede utilizar el nombre de la suscripción en lugar del identificador.

Si esta es la primera vez que usa esta suscripción con Azure Digital Twins, ejecute este comando para registrarse con el espacio de nombres de Azure Digital Twins. (Si no está seguro, es correcto volver a ejecutarlo aunque lo haya hecho en algún momento del pasado).

az provider register --namespace 'Microsoft.DigitalTwins'

A continuación, agregará la Extensión de Microsoft Azure IoT para la CLI de Azure para habilitar los comandos e interactuar con Azure Digital Twins y otros servicios IoT. Ejecute este comando para asegurarse de que tiene la versión más reciente de la extensión:

az extension add --upgrade --name azure-iot

Ahora ya está listo para trabajar con Azure Digital Twins en la CLI de Azure.

Para comprobarlo, puede ejecutar az dt --help en cualquier momento para ver una lista de los comandos de nivel superior de Azure Digital Twins que están disponibles.

Configuración del proyecto de ejemplo

A continuación, configure una aplicación cliente de ejemplo que interactuará con su instancia de Azure Digital Twins.

En la máquina, vaya hasta la carpeta que descargó anteriormente de Ejemplos de un extremo a otro de Azure Digital Twins (y descomprímala si aún no lo ha hecho).

Una vez dentro de la carpeta, vaya al directorio digital-twins-samples-main\AdtSampleApp\SampleClientApp y abra el archivo appsettings.json. Este archivo JSON contiene una variable de configuración que se necesita para ejecutar el proyecto.

En el cuerpo del archivo, cambie el valor de instanceUrl por la dirección URL del nombre de host de su instancia de Azure Digital Twins (para ello, debe agregar https:// delante del nombre de host, como se muestra a continuación).

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

Guarde y cierre el archivo.

Configuración de credenciales locales de Azure

En este ejemplo se usa DefaultAzureCredential (parte de la biblioteca de Azure.Identity) para autenticar a los usuarios mediante la instancia de Azure Digital Twins cuando la ejecuta en la máquina local. Para más información sobre las distintas formas en que una aplicación cliente puede autenticarse con Azure Digital Twins, consulte Escritura de código de autenticación de aplicación.

Con DefaultAzureCredential, el ejemplo buscará las credenciales en el entorno local; por ejemplo, un inicio de sesión de Azure en una DefaultAzureCredential local o en Visual Studio o Visual Studio Code. Por este motivo, debe iniciar sesión en Azure localmente mediante uno de estos mecanismos para configurar las credenciales del ejemplo.

Si usa Visual Studio o Visual Studio Code para ejecutar códigos de ejemplo, asegúrese de que inicia sesión en ese editor con las mismas credenciales de Azure que quiere usar para acceder a la instancia de Azure Digital Twins. Si usa una ventana local de la CLI, ejecute el comando az login para iniciar sesión en la cuenta de Azure. Después de ejecutar el código de ejemplo, debería autenticarse automáticamente.

Primeros pasos con el escenario de compilación

El proyecto de ejemplo que se usa en este tutorial representa un escenario de un edificio real, que contiene una planta, una habitación y un dispositivo de termostato. Estos componentes se representarán digitalmente en una instancia de Azure Digital Twins, que posteriormente se conectará a IoT Hub, Event Grid y dos instancias de Azure Functions para permitir el movimiento de los datos.

El siguiente diagrama representa todo el escenario.

Primero creará la instancia de Azure Digital Twins (sección A del diagrama) y, a continuación, configurará el flujo de datos de telemetría del dispositivo en los gemelos digitales (flecha B) y, a continuación, configurará la propagación de datos a través del grafo gemelo (flecha C).

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

Para recorrer el escenario, interactuará con los componentes de la aplicación de ejemplo previamente escrita que descargó antes.

Estos son los complementos que implementa la aplicación de ejemplo AdtSampleApp del escenario del edificio:

  • Autenticación de dispositivos
  • Ejemplos de uso del SDK de .NET (C#) (se encuentran en CommandLoop.cs).
  • Interfaz de consola para llamar a la API de Azure Digital Twins.
  • SampleClientApp: una solución de Azure Digital Twins de ejemplo.
  • SampleFunctionsApp: una aplicación de Azure Functions que actualiza el grafo de Azure Digital Twins en función de la telemetría del dispositivo de IoT Hub y los eventos de Azure Digital Twins

Instanciación del grafo de gemelos creado previamente

En primer lugar, usará la solución AdtSampleApp del proyecto de ejemplo para crear la parte de Azure Digital Twins del escenario de un extremo a otro (sección A):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

Abra una ventana de consola local y vaya a la carpeta digital-twins-samples-main\AdtSampleApp\SampleClientApp. Ejecute el proyecto SampleClientApp con este comando dotnet:

dotnet run

El proyecto comenzará a ejecutarse, llevará a cabo la autenticación y esperará un comando. En esta consola, ejecute el siguiente comando para crear una instancia de la solución de Azure Digital Twins de ejemplo.

Importante

Si ya tiene gemelos digitales y relaciones en su instancia de Azure Digital Twins, la ejecución de este comando los eliminará y los sustituirá por los gemelos y relaciones del escenario de ejemplo.

SetupBuildingScenario

La salida de este comando es una serie de mensajes de confirmación cuando se crean y conectan tres gemelos digitales en su instancia de Azure Digital Twins: una planta llamada floor1, una habitación llamada room21 y un sensor de temperatura llamado thermostat67. Estos gemelos digitales representan las entidades que existirían en un entorno real.

Se conectan mediante relaciones en el siguiente grafo de gemelos. El grafo de gemelos representa el entorno como un todo, incluida la forma en que las entidades interactúan entre ellas y se relacionan entre sí.

Diagram showing that floor1 contains room21, and room21 contains thermostat67.

Para comprobar los gemelos que se crearon, ejecute el siguiente comando, que consulta la instancia de Azure Digital Twins conectada en todos los gemelos digitales que contiene:

Query

Ahora puede dejar de ejecutar el proyecto. Sin embargo, mantenga abierta la ventana de consola en esta ubicación, ya que volverá a usar esta aplicación más adelante en el tutorial.

Configuración de la aplicación de funciones de ejemplo

El siguiente paso es configurar una aplicación de Azure Functions que se usará en este tutorial para procesar los datos. La aplicación de funciones, SampleFunctionsApp, contiene dos funciones:

  • ProcessHubToDTEvents: procesa los datos entrantes de IoT Hub y actualiza Azure Digital Twins.
  • ProcessDTRoutedData: procesa los datos de gemelos digitales y actualiza los gemelos principales de Azure Digital Twins.

En esta sección, publicará la aplicación de funciones previamente escrita y se asegurará de que esta pueda acceder a Azure Digital Twins, asignándole una identidad de Microsoft Entra.

La aplicación de funciones forma parte del proyecto de ejemplo descargada, que se encuentra en la carpeta digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.

Publicar la aplicación

Para publicar la aplicación de funciones en Azure, debe crear una cuenta de almacenamiento, después crear la aplicación de funciones en Azure y, por último, publicar las funciones en la aplicación de funciones de Azure. En esta sección se completan estas acciones mediante la CLI de Azure. En cada comando, reemplace los marcadores de posición entre corchetes angulares por los detalles de sus propios recursos.

  1. Cree una cuenta de Azure Storage mediante la ejecución del comando siguiente:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Cree una aplicación de funciones de Azure mediante la ejecución del comando siguiente:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --runtime-version 7 --resource-group <resource-group>
    
  3. A continuación, comprimirá las funciones y las publicará en la nueva aplicación de funciones de Azure.

    1. Abra una ventana de consola en la máquina y vaya a la carpeta digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp dentro del proyecto de ejemplo descargado.

    2. En la consola, ejecute el siguiente comando para publicar el proyecto localmente:

      dotnet publish -c Release -o publish
      

      Este comando publica el proyecto en el directorio digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.

    3. Con el método que prefiera, cree un archivo .zip de los archivos publicados que se encuentran dentro del directorio digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish. Asigne el nombre publish.zip a la carpeta comprimida.

      Importante

      Asegúrese de que la carpeta comprimida no incluye una capa adicional para la propia carpeta Publicar. Solo debe contener el contenido que se encontraba dentro de la carpeta Publicar.

      Esta es una imagen de la apariencia del contenido del archivo ZIP (puede cambiar en función de la versión de .NET).

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

    Ahora puede cerrar la ventana de consola local que ha utilizado para preparar el proyecto. El último paso se realizará en la CLI de Azure.

  4. En la CLI de Azure, ejecute el siguiente comando para implementar las funciones publicadas y comprimidas en la aplicación de funciones de Azure:

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    Sugerencia

    Si usa la CLI de Azure localmente, puede acceder al archivo ZIP en el equipo directamente mediante su ruta de acceso de la máquina.

    Si usa el archivo Azure Cloud Shell, cargue el archivo ZIP en Cloud Shell con este botón antes de ejecutar el comando:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    En este caso, el archivo se cargará en el directorio raíz del almacenamiento de Cloud Shell, por lo que puede hacer referencia al archivo directamente por su nombre para el parámetro --src del comando (como en --src publish.zip).

    Una implementación correcta responderá con el código de estado 202 y generará un objeto JSON que contiene los detalles de la nueva función. Puede confirmar que la implementación es correcta buscando este campo en el resultado:

    "provisioningState": "Succeeded",
    

Las funciones ahora deben publicarse en una aplicación de funciones en Azure. Puede usar los siguientes comandos de la CLI para comprobar que ambas funciones se publicaron correctamente. Cada comando tiene marcadores de posición para el grupo de recursos y el nombre de la aplicación de funciones. Los comandos imprimirán información sobre las funciones ProcessDTRoutedData y ProcessHubToDTEvents que se han publicado.

az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessDTRoutedData
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessHubToDTEvents

A continuación, la aplicación de funciones deberá tener el permiso correcto para acceder a la instancia de Azure Digital Twins. Configurará este acceso en la sección siguiente.

Configuración de los permisos de la aplicación de funciones

Hay dos configuraciones que deben establecerse para que la aplicación de funciones acceda a la instancia de Azure Digital Twins, ambas se pueden realizar mediante la CLI de Azure.

Asignación de roles de acceso

La primera configuración proporciona a la aplicación de funciones el rol de Propietario de datos de Azure Digital Twins en la instancia de Azure Digital Twins. Este rol es necesario para cualquier usuario o función que desee realizar muchas actividades en el plano de datos en la instancia. Puede leer más sobre la seguridad y las asignaciones de roles en Seguridad para las soluciones de Azure Digital Twins.

  1. Use el siguiente comando para crear una identidad asignada por el sistema para la función. La salida mostrará los detalles de la identidad que se ha creado. Tome nota del campo principalId de la salida para usarlo en el paso siguiente.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Use el valor de principalId en el siguiente comando para asignar la identidad de la aplicación de funciones al rol Propietario de datos de Azure Digital Twins en la instancia de Azure Digital Twins.

    az dt role-assignment create --resource-group <your-resource-group> --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

El resultado de este comando es la información de salida acerca de la asignación de roles que ha creado. Ahora, la aplicación de funciones tiene los permisos necesarios para acceder a los datos de la instancia de Azure Digital Twins.

Configurar la configuración de la aplicación

El segundo valor crea una variable de entorno para la función con la dirección URL de la instancia de Azure Digital Twins. El código de la función usará el valor de esta variable para hacer referencia a la instancia. Para más información sobre las variables de entorno, consulte Administración de la aplicación de funciones.

Para ejecutar el siguiente comando, rellene los marcadores de posición con los detalles de los recursos.

az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"

La salida es la lista de valores de la función de Azure, que ahora debe contener una entrada denominada ADT_SERVICE_URL.

Procesamiento de datos de telemetría simulados de un dispositivo de IoT Hub

Los grafos de Azure Digital Twins los controlan los datos de telemetría de los dispositivos reales.

En este paso, conectará un dispositivo termostato simulado registrado en IoT Hub al gemelo digital que lo representa en Azure Digital Twins. Cuando el dispositivo simulado emita datos de telemetría, los datos pasarán por la función de Azure ProcessHubToDTEvents, que desencadenará la correspondiente actualización en el gemelo digital. De esta forma, el gemelo digital permanece actualizado con los datos del dispositivo real. En Azure Digital Twins, el proceso de dirigir datos de eventos de un lugar a otro se denomina enrutamiento de eventos.

El proceso de la telemetría simulada se produce en esta parte del escenario completo (flecha B):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

Estas son las acciones que se deben realizar para configurar la conexión de este dispositivo:

  1. Crear un centro de IoT que administrará el dispositivo simulado.
  2. Conectar el centro de IoT a la función de Azure apropiada mediante la configuración de una suscripción al evento.
  3. Registrar el dispositivo simulado en el centro de IoT.
  4. Ejecutar el dispositivo simulado y generar datos de telemetría.
  5. Consultar Azure Digital Twins para ver los resultados en directo

Creación de una instancia de IoT Hub

Azure Digital Twins está diseñado para trabajar con IoT Hub, un servicio de Azure para administrar dispositivos y sus datos. En este paso, configurará un centro de IoT que administrará el dispositivo de ejemplo en este tutorial.

En la CLI de Azure, use este comando para crear un centro de IoT:

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

La salida de este comando es información sobre el centro de IoT que se ha creado.

Guarde el nombre que asignó al centro de IoT. La usará más adelante.

Conexión del centro de IoT a la función de Azure

A continuación, conecte su centro de IoT a la función de Azure ProcessHubToDTEvents en la aplicación de funciones que publicó antes, con el fin de que los datos puedan fluir desde el dispositivo de IoT Hub a través de la función, que actualiza Azure Digital Twins.

Para ello, creara una suscripción de eventos en IoT Hub, con la función de Azure como punto de conexión. Así se "subscribe" la función a los eventos que suceden en IoT Hub.

Use el siguiente comando de la CLI para crear la suscripción de eventos. Hay un marcador de posición para que escriba un nombre para la suscripción de eventos y también hay marcadores de posición para que escriba el identificador de suscripción, el grupo de recursos, el nombre del centro de IoT y el nombre de la aplicación de funciones.

az eventgrid event-subscription create --name <name-for-hub-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Devices/IotHubs/<your-IoT-hub> --included-event-types Microsoft.Devices.DeviceTelemetry --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessHubToDTEvents

La salida mostrará información sobre la suscripción de eventos que se ha creado. Puede confirmar que la operación se ha completado correctamente mediante la comprobación del valor provisioningState en el resultado:

"provisioningState": "Succeeded",

Sugerencia

Si el comando devuelve un error de proveedor de recursos, agregue Microsoft.EventGrid como proveedor de recursos para la suscripción. Puede hacerlo en Azure Portal siguiendo las instrucciones de Registro del proveedor de recursos.

Registro del dispositivo simulado en el centro de IoT

En esta sección se crea una representación de un dispositivo en IoT Hub con el identificador thermostat67. El dispositivo simulado se conectará a esta representación, que es la forma en que los eventos de telemetría pasarán del dispositivo al IoT Hub. El centro de IoT es donde la función de Azure suscrita del paso anterior escucha, lista para seleccionar los eventos y continuar el procesamiento.

En la CLI de Azure, cree un dispositivo en IoT Hub con el siguiente comando:

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

La salida es información acerca del dispositivo creado.

Configuración y ejecución de la simulación

A continuación, configure el simulador de dispositivos para enviar datos a su instancia de IoT Hub.

Para empezar, obtenga la cadena de conexión de IoT Hub con el siguiente comando. El valor de la cadena de conexión comenzará por HostName=.

az iot hub connection-string show --hub-name <your-IoT-hub-name>

Luego, obtenga la cadena de conexión del dispositivo con este comando:

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

Luego, conectará estos valores al código de simulador de dispositivo en el proyecto local para conectar el simulador a este centro de IoT y este dispositivo de IoT Hub.

Vaya en la máquina local a la carpeta de ejemplo descargada y a la carpeta digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Abra el archivo AzureIoTHub.cs para editarlo. Cambie los siguientes valores de la cadena de conexión por los valores que recopiló anteriormente:

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

Guarde el archivo.

Ahora, para ver los resultados de la simulación de datos que ha configurado, abra una nueva ventana de la consola local y vaya a digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Nota:

Ahora debería tener dos ventanas de consola abiertas: una abierta en DeviceSimulator\DeviceSimulator y otra de las anteriores que siga abierta en la carpeta AdtSampleApp\SampleClientApp.

Use el siguiente comando dotnet para ejecutar el proyecto del simulador de dispositivos:

dotnet run

El proyecto comenzará a ejecutarse y a mostrar mensajes de telemetría de temperatura simulados. Estos mensajes se envían a IoT Hub, donde la función de Azure los recoge y procesa.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

En esta consola no es preciso hacer nada más, solo dejar que se ejecute mientras se completan los pasos siguientes.

Visualización de los resultados en Azure Digital Twins

La función ProcessHubToDTEvents que publicó anteriormente escucha los datos de IoT Hub y llama a una API de Azure Digital Twins para actualizar la propiedad Temperature en el gemelo thermostat67.

Para ver los datos del lado de Azure Digital Twins, cambie a la otra ventana de consola que está abierta en la carpeta AdtSampleApp\SampleClientApp. Ejecute el proyecto SampleClientApp con dotnet run.

dotnet run

Una vez que el proyecto esté abierto y acepte los comandos, ejecute el siguiente comando para obtener las temperaturas que se indican en el gemelo digital thermostat67:

ObserveProperties thermostat67 Temperature

Verá que las temperaturas se actualizan en directo desde la instancia de Azure Digital Twins y se registran en la consola cada 2 segundos. Deben reflejar los valores que está generando el simulador de datos (puede colocar las ventanas de consola una junto a otra para comprobar que los valores estén coordinados).

Nota

Es posible que los datos del dispositivo tarden unos segundos en propagarse en el gemelo. Las primeras lecturas de temperatura pueden aparecer como 0 antes de que los datos comiencen a llegar.

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

Una vez que haya comprobado el correcto funcionamiento del registro de temperaturas activo, puede dejar de ejecutar ambos proyectos. Mantenga abiertas las ventanas de consola, ya que las usará de nuevo más adelante en el tutorial.

Propagación de eventos de Azure Digital Twins a través del grafo

Hasta ahora, en este tutorial ha visto cómo se puede actualizar Azure Digital Twins a partir de datos de dispositivos externos. A continuación, verá cómo se pueden propagar los cambios que se realicen en un gemelo digital mediante el grafo de Azure Digital Twins (es decir, cómo actualizar los gemelos a partir de los datos internos del servicio).

Para hacerlo, usará la función de Azure ProcessDTRoutedData para actualizar un gemelo Room cuando el gemelo Thermostat conectado se actualice. La funcionalidad de actualización se produce en esta parte del escenario completo (flecha C):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

Estas son las acciones que realizará para configurar este flujo de datos:

  1. Creación de un tema de Event Grid para permitir el movimiento de datos entre servicios de Azure
  2. Creación de un punto de conexión en Azure Digital Twins que conecte la instancia al tema de Event Grid
  3. Configuración de una ruta en Azure Digital Twins que envíe los eventos de cambio de propiedades de los gemelos al punto de conexión.
  4. Configuración de una función de Azure que escuche en el tema de Event Grid en el punto de conexión, reciba los eventos de cambio de propiedad de los gemelos que se envían allí y actualice otros gemelos del gráfico adecuadamente

Creación del tema de Event Grid

Event Grid es un servicio de Azure que ayuda a enrutar y enviar eventos de los servicios de Azure a otros lugares de Azure. Puede crear un tema de Event Grid que recopile determinados eventos de un origen y, después, los suscriptores pueden escuchar el tema para recibir los eventos a medida que llegan.

En la CLI de Azure, ejecute el siguiente comando para crear un tema de Event Grid:

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

La salida de este comando es información sobre el tema de Event Grid que ha creado. Guarde el nombre que dio al tema de Event Grid, ya que lo usará más adelante.

Creación del punto de conexión

Luego, cree un punto de conexión de Event Grid en Azure Digital Twins, que conectará su instancia al tema de Event Grid. Use el comando siguiente y rellene el nombre del tema de Event Grid del paso anterior y los demás campos de marcadores de posición según sea necesario.

az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>

La salida de este comando es información sobre el punto de conexión que ha creado.

Busque el campo provisioningState en la salida y compruebe que el valor es "Succeeded" (Correcto).

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

El valor también puede ser "Provisioning" (En aprovisionamiento), lo que significa que el punto de conexión todavía se está creando. Si es así, espere unos segundos y ejecute el siguiente comando para comprobar el estado del punto de conexión. Repita hasta que provisioningState sea "Succeeded" (Correcto).

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

Guarde el nombre del punto de conexión, ya que lo usará más adelante.

Creación de la ruta

Luego, cree una ruta de Azure Digital Twins que envíe eventos al punto de conexión de Event Grid que ha creado.

Use el siguiente comando de la CLI y rellene el nombre del punto de conexión del paso anterior y los demás campos de marcador de posición según sea necesario. Este comando reenvía todos los eventos que se producen en el grafo de gemelos.

Sugerencia

Para limitar los eventos a solo los específicos si lo desea, use filtros.

az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>

La salida de este comando es información sobre la ruta que ha creado.

Nota

Los puntos de conexión (del paso anterior) deben finalizar el aprovisionamiento antes de poder configurar una ruta de eventos que los use. Si se produce un error en la creación de la ruta porque los puntos de conexión no están listos, espere unos minutos y vuelva a intentarlo.

Conexión a la función de Azure

A continuación, suscriba la función de Azure ProcessDTRoutedData al tema de Event Grid que creó anteriormente, con el fin de que los datos de telemetría puedan fluir desde el gemelo thermostat67 a través del tema de Event Grid hasta la función, que vuelve a Azure Digital Twins y actualiza el gemelo room21 en consecuencia.

Para hacerlo, creará una suscripción a Event Grid que envíe datos del tema de Event Grid que creó anteriormente a la función ProcessDTRoutedData de Azure.

Use el siguiente comando de la CLI para crear la suscripción de eventos. Hay un marcador de posición para que escriba un nombre para esta suscripción de eventos y también hay marcadores de posición para que escriba el identificador de suscripción, el grupo de recursos, el nombre del tema de Event Grid y el nombre de la aplicación de funciones.

az eventgrid event-subscription create --name <name-for-topic-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessDTRoutedData

Ejecución de la simulación y visualización de los resultados

Ahora, los eventos tienen la capacidad de fluir desde el dispositivo simulado a Azure Digital Twins y a través del grafo de Azure Digital Twins para actualizar los gemelos según corresponda. En esta sección, volverá a ejecutar el simulador de dispositivos para iniciar el flujo de eventos completo que ha configurado y consultará Azure Digital Twins para ver los resultados en directo.

Vaya a la ventana de consola que está abierta en la carpeta DeviceSimulator\DeviceSimulator y ejecute el proyecto del simulador de dispositivos con dotnet run.

Al igual que la primera vez que ejecutó el simulador de dispositivos, el proyecto comenzará a ejecutarse y mostrará mensajes de telemetría de temperatura simulados. Estos eventos atraviesan el flujo que configuró anteriormente para actualizar el gemelo thermostat67 y, después, atraviesan el flujo configurado recientemente para actualizar el gemelo room21 para que coincidan.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

En esta consola no es preciso hacer nada más, solo dejar que se ejecute mientras se completan los pasos siguientes.

Para ver los datos del lado de Azure Digital Twins, vaya a la otra ventana de consola que está abierta en la carpeta AdtSampleApp\SampleClientApp y ejecute el proyecto SampleClientApp con dotnet run.

Una vez que el proyecto esté abierto y acepte los comandos, ejecute el siguiente comando para obtener las temperaturas que se indican en los gemelos digitales thermostat67 y room21.

ObserveProperties thermostat67 Temperature room21 Temperature

Verá que las temperaturas se actualizan en directo desde la instancia de Azure Digital Twins y se registran en la consola cada 2 segundos. Tenga en cuenta que la temperatura de room21 se está actualizando para que coincida con las actualizaciones de thermostat67.

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

Una vez que haya comprobado el correcto funcionamiento del registro de temperaturas activo de la instancia, puede dejar de ejecutar ambos proyectos. También puede cerrar ambas ventanas de consola, ya que ahora se ha completado el tutorial.

Revisar

Esta es una revisión del escenario que se ha creado en este tutorial.

  1. Una instancia de Azure Digital Twins representa de forma digital una planta, una habitación y un termostato (representado por sección A en el diagrama siguiente)
  2. Los datos de telemetría del dispositivo simulados se envían a IoT Hub, donde la función de Azure ProcessHubToDTEvents escucha los eventos de telemetría. La función de Azure ProcessHubToDTEvents usa la información de estos eventos para establecer la propiedad Temperature en thermostat67 (la flecha B en el diagrama).
  3. Los eventos de cambio de propiedad de Azure Digital Twins se enrutan a un tema de Event Grid, donde la función de Azure ProcessDTRoutedData escucha los eventos. La función de Azure ProcessDTRoutedData usa la información de estos eventos para establecer la propiedad Temperature room21 (la flecha C en el diagrama).

Diagram from the beginning of the article showing the full building scenario.

Limpieza de recursos

Después de completar este tutorial, puede elegir los recursos que quiere quitar en función de lo que quiera hacer a continuación.

  • Si no necesita ninguno de los recursos que creó en este tutorial, puede eliminar la instancia de Azure Digital Twins y todos los demás recursos de este artículo con el comando de la CLI az group delete. Esto permite eliminar todos los recursos de Azure de un grupo de recursos, así como el grupo en sí.

    Importante

    La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos contenidos en él se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados.

    Abra Azure Cloud Shell o una ventana de la CLI local y ejecute el siguiente comando para eliminar el grupo de recursos y todo lo que contiene.

    az group delete --name <your-resource-group>
    
  • Si quiere seguir usando la instancia de Azure Digital Twins que ha configurado en este artículo, pero quiere borrar algunos de modelos, gemelos y relaciones, o todos ellos, puede usar los comandos az dt de la CLI para eliminar los elementos que desee quitar.

    Esta opción no quitará ninguno de los otros recursos de Azure creados en este tutorial (IoT Hub, aplicación de Azure Functions, etc.). Puede eliminarlos individualmente mediante los comandos dt adecuados para cada tipo de recurso.

También puede que desee eliminar la carpeta del proyecto de la máquina local.

Pasos siguientes

En este tutorial, ha creado un escenario de un extremo a otro que muestra la forma en que los datos de dispositivos activos controlan Azure Digital Twins.

A continuación, consulte la documentación sobre conceptos para más información sobre los elementos con los que ha trabajado en el tutorial: