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.
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
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
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.
En primer lugar, creará la instancia de Azure Digital Twins (la sección A del diagrama) y configurará el flujo de datos de telemetría del dispositivo en los gemelos digitales (flecha B); después, configurará la propagación de los datos con el grafo de gemelos (flecha C).
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 su grafo de Azure Digital Twins según los datos de telemetría del dispositivo de los eventos de IoT Hub y 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):
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í.
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.
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
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 --resource-group <resource-group>
A continuación, comprimirá las funciones y las publicará en la nueva aplicación de funciones de Azure.
Abra una ventana de consola en la máquina (si usa la CLI de Azure local, puede ser la misma ventana) y vaya a la carpeta digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp dentro del proyecto de ejemplo descargado.
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.
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).
El último paso se realizará en la CLI de Azure.
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:
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.
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>
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):
Estas son las acciones que se deben realizar para configurar la conexión de este dispositivo:
- Crear un centro de IoT que administrará el dispositivo simulado.
- Conectar el centro de IoT a la función de Azure apropiada mediante la configuración de una suscripción al evento.
- Registrar el dispositivo simulado en el centro de IoT.
- Ejecutar el dispositivo simulado y generar datos de telemetría.
- 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
Importante
En este artículo se incluyen los pasos para conectar un dispositivo mediante una firma de acceso compartido, también denominada autenticación de clave simétrica. Este método de autenticación es cómodo para probar y evaluar, pero autenticar un dispositivo mediante certificados X.509 es un enfoque más seguro. Para obtener más información, consulte Procedimientos recomendados de > Seguridad de la conexió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.
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.
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):
Estas son las acciones que realizará para configurar este flujo de datos:
- Creación de un tema de Event Grid para permitir el movimiento de datos entre servicios de Azure
- Creación de un punto de conexión en Azure Digital Twins que conecte la instancia al tema de Event Grid
- 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.
- 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).
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.
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.
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.
- 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)
- 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). - 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).
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: