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
Para realizar los pasos de este tutorial, debe completar primero los siguientes requisitos previos.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Obtención de los recursos necesarios
Para realizar este tutorial, instale Visual Studio 2019, versión 16.5 o posterior en la máquina de desarrollo. Si ya tiene instalada una versión anterior, puede abrir la aplicación Instalador de Visual Studio en la máquina y seguir las indicaciones para actualizar la instalación.
Nota
Asegúrese de que la instalación de Visual Studio 2019 incluye la carga de trabajo de desarrollo de Azure . Esta carga de trabajo permite a una aplicación publicar Azure Functions y realizar otras tareas de desarrollo de Azure.
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. Esta acción le llevará al repositorio de GitHub donde encontrará los ejemplos, que puede descargar como un archivo ZIP seleccionando el botón Código y Descargar archivo ZIP.
Esta acción descargará una carpeta ZIP en la máquina denominada digital-twins-samples-master.zip. Descomprima la carpeta y extraiga los archivos.
Preparación de una instancia de Azure Digital Twins
Para trabajar con Azure Digital Twins en este artículo, antes es preciso configurar una instancia de Azure Digital Twins y los permisos necesarios para usarla. Si ya tiene una instancia de Azure Digital Twins configurada, puede usarla.
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 los valores siguientes. Los necesitará para conectarse a la instancia más adelante:
- El nombre de host de la instancia. El nombre de host se encuentra en Azure Portal.
- La suscripción de Azure que usó para crear la instancia. Sirven tanto el nombre como el identificador. La suscripción se encuentra en la página Información general de la instancia en Azure Portal.
Preparación del entorno para la CLI de Azure
Use el entorno de Bash en Azure Cloud Shell.
Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.
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.
Cuando 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 una sesión de Cloud Shell
Para empezar a trabajar con Azure Digital Twins en una ventana abierta de Azure Cloud Shell, primero es necesario iniciar sesión y establecer el contexto de Shell en su suscripción para esta sesión. En Cloud Shell, ejecute estos comandos:
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 a la instancia de Cloud Shell, para habilitar los comandos para 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 Cloud Shell.
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.
Vaya en la máquina hasta el archivo que descargó anteriormente en el artículo con ejemplos de un extremo a otro de Azure Digital Twins (y descomprímalo si aún no lo ha hecho).
Una vez que esté dentro de la carpeta, vaya a AdtSampleApp. Abra AdtE2ESample.sln en Visual Studio 2019.
En Visual Studio, seleccione el archivo SampleClientApp > appsettings.json para abrirlo en la ventana de edición. Este servirá como archivo JSON predefinido con las variables de configuración necesarias para ejecutar el proyecto.
En el cuerpo del archivo, cambie el valor de instanceUrl por la dirección URL del nombre de host de la instancia de Azure Digital Twins (mediante la adición de https:// delante del nombre de host, tal y como se muestra a continuación).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
Guarde y cierre el archivo.
Después, configure el archivo appsettings.json para que se copie al directorio de salida cuando compile SampleClientApp. Para ello, seleccione el archivo appsettings.json con el botón derecho y elija Propiedades. . En el inspector de Propiedades, busque la propiedad Copiar en el directorio de resultados. Cambie el valor a Copiar si es posterior si tiene otro valor.
Mantenga el AdtE2ESample proyecto abierto en Visual Studio para seguir utilizándolo en el tutorial.
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 CLI de Azure 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 el ejemplo de código, 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 no, puede instalar la CLI de Azure local, iniciar un símbolo del sistema en la máquina y ejecutar el comando az login para iniciar sesión en su cuenta de Azure. Después de iniciar sesión, cuando ejecute el código de ejemplo, se debería iniciar sesión 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 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 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):
En la ventana de Visual Studio en la que está abierto el proyecto AdtE2ESample, ejecute el proyecto con este botón de la barra de herramientas:
Se abre una ventana de la consola, se lleva a cabo la autenticación y se espera 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
Nota
Después de realizar un cambio en los datos del gráfico, puede haber una latencia de hasta 10 segundos antes de que los cambios se reflejen en las consultas.
La API de DigitalTwins refleja los cambios inmediatamente, por lo que si necesita una respuesta instantánea, use una solicitud de API (DigitalTwins GetById) o una llamada SDK (GetDigitalTwin) para obtener datos gemelos en lugar de una consulta.
Ahora puede dejar de ejecutar el proyecto. No obstante, mantenga la solución abierta en Visual Studio, ya que la usará más veces 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 Azure Active Directory (Azure AD). Si se realizan estos pasos, el resto del tutorial podrá usar las funciones dentro de la aplicación de funciones.
De vuelta en la ventana de Visual Studio en la que está abierto el proyecto AdtE2ESample la aplicación de funciones se encuentra en el archivo del proyecto SampleFunctionsApp. Puede verla en el panel Explorador de soluciones.
Actualización de las dependencias
Antes de publicar la aplicación, se recomienda asegurarse de que las dependencias están actualizadas y de que tiene la versión más reciente de todos los paquetes incluidos.
En el panel Explorador de soluciones, expanda SampleFunctionsApp > Dependencias. Haga clic con el botón derecho en Paquetes y elija Administrar paquetes NuGet... .
Al hacerlo, se abrirá el administrador de paquetes NuGet. Seleccione la pestaña Actualizaciones y, si hay paquetes que actualizar, active la casilla Seleccionar todos los paquetes. Después, seleccione Actualizar.
Publicación de la aplicación
Para publicar la aplicación de funciones en Azure, primero 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.
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_LRSCree 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> --consumption-plan-location <location> --runtime dotnet --resource-group <resource-group>A continuación, comprimirá las funciones y las publicará en la nueva aplicación de funciones de Azure.
Abra un terminal como PowerShell en el equipo local y vaya al repositorio de ejemplos de Digital Twins que descargó anteriormente en el tutorial. Dentro de la carpeta del repositorio descargado, vaya a digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp.
En el terminal, ejecute el siguiente comando para publicar el proyecto:
dotnet publish -c ReleaseEste comando publica el proyecto en el directorio digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp\bin\Release\netcoreapp3.1\publish.
Cree un archivo .zip de los archivos publicados que se encuentran en el directorio digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp\bin\Release\netcoreapp3.1\publish.
Si usa PowerShell, puede crear el archivo zip copiando la ruta de acceso completa a ese directorio \publish y pegándola en el siguiente comando:
Compress-Archive -Path <full-path-to-publish-directory>\* -DestinationPath .\publish.zipEl cmdlet creará un archivo publish.zip en la ubicación del directorio del terminal que incluye un archivo host.json, así como los directorios bin, ProcessDTRoutedData y ProcessHubToDTEvents.
Si no usa PowerShell y no tiene acceso al cmdlet
Compress-Archive, deberá comprimir los archivos mediante el Explorador de archivos u otro método.
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>"Nota
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
--srcdel 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", ... }
Ahora ha publicado las funciones en una aplicación de funciones en Azure.
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 ver los detalles de la identidad administrada por el sistema de la función. Anote el valor del campo principalId de la salida.
az functionapp identity show --resource-group <your-resource-group> --name <your-function-app-name>Nota
Si el resultado está vacío en lugar de mostrar los detalles de una identidad, cree una nueva identidad administrada por el sistema para la función mediante este comando:
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>La salida mostrará los detalles de la identidad, incluido el valor de principalId requerido para el siguiente paso.
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 --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.
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 Azure Cloud Shell, 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 su centro de IoT, 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.
En Azure Portal, vaya al centro de IoT recién creado, para lo que debe buscar su nombre en la barra de búsqueda superior. Seleccione Eventos en el menú del centro y seleccione + Suscripción de eventos.
Al seleccionar esta opción, aparecerá la página Crear suscripción de eventos.
Rellene los campos como se indica a continuación (no se mencionan los campos rellenados de forma predeterminada):
- DETALLES DE SUSCRIPCIONES DE EVENTOS > Nombre: asigne un nombre a su suscripción de eventos.
- DETALLES DEL TEMA > Nombre del tema del sistema: asigne un nombre que se utilizará para el tema del sistema.
- TIPOS DE EVENTO > Filtro para tipos de evento: Seleccione Telemetría de dispositivo en las opciones de menú.
- DETALLES DE PUNTO DE CONEXIÓN > Tipo de punto de conexión: Seleccione Función de Azure en las opciones del menú.
- DETALLES DE PUNTO DE CONEXIÓN > Punto de conexión: seleccione el vínculo Seleccionar un extremo que abrirá una ventana Seleccionar la función de Azure:
- Rellene los campos Suscripción, Grupo de recursos, Aplicación de funciones y Función (ProcessHubToDTEvents). Es posible que algunos de estos valores se rellenen automáticamente después de seleccionar la suscripción.
- Seleccione Confirm Selection (Confirmar selección).
De nuevo en la página Crear suscripción de eventos, seleccione Crear.
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 Azure Cloud Shell, 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 este comando:
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>
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.
En una nueva ventana de Visual Studio, abra (desde la carpeta de la solución descargada) Device Simulator (Simulador de dispositivos) > DeviceSimulator.sln.
Nota
Ahora debería tener dos ventanas de Visual Studio, una con DeviceSimulator.sln y otra anterior con AdtE2ESample.sln.
En el panel del Explorador de soluciones de esta nueva ventana de Visual Studio, seleccione DeviceSimulator/AzureIoTHub.cs para abrirlo en la ventana de edición. Cambie los siguientes valores de la cadena de conexión por los valores que recopiló anteriormente:
iotHubConnectionString = <your-hub-connection-string>
deviceConnectionString = <your-device-connection-string>
Guarde el archivo.
Ahora, para ver los resultados de la simulación de datos que ha configurado, ejecute el proyecto DeviceSimulator con este botón en la barra de herramientas:
Se abrirá una ventana de la consola y se mostrarán los mensajes de los datos 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 de Azure Digital Twins, vaya a la ventana de Visual Studio donde está abierto el proyecto AdtE2ESample y ejecútelo.
En la ventana de la consola del proyecto que se abre, 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.
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 abierta la ventana de Visual Studio, ya que se utilizará durante el resto del 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 en consecuencia.
Creación del tema de Event Grid
Event Grid es un servicio de Azure que ayuda a enrutar y enviar eventos de Azure Services a otros lugares de Azure. Puede crear un tema de Event Grid para recopilar determinados eventos de un origen y, después, los suscriptores pueden escuchar el tema para recibir los eventos a medida que llegan.
En Azure Cloud Shell, ejecute el comando siguiente 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 proporcionó al tema de Event Grid, ya que lo usará más adelante.
Creación del punto de conexión
A continuación, cree en Azure Digital Twins un punto de conexión de Event Grid que conecte su instancia a su tema de Event Grid. Use el comando siguiente, rellenando el nombre del tema de Event Grid y los demás campos de marcador 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
A continuación, cree una ruta de Azure Digital Twins que envíe eventos al punto de conexión de Event Grid que acaba de crear.
Esto puede hacerse con el siguiente comando de la CLI (rellene el nombre del punto de conexión 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. 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.
En Azure Portal, busque el nombre de su tema de Event Grid en la barra de búsqueda superior para ir a él. Seleccione + Suscripción de eventos.
Los pasos para crear esta suscripción de eventos son similares a los que dio cuando suscribió la primera función de Azure a IoT Hub en este mismo tutorial. Esta vez no es preciso especificar Telemetría del dispositivo como el tipo de evento que hay que escuchar y que se conectará a otra función de Azure.
En la página Crear suscripción de eventos, rellene los campos como se indica a continuación (no se mencionan los campos rellenados de forma predeterminada):
- DETALLES DE SUSCRIPCIONES DE EVENTOS > Nombre: asigne un nombre a su suscripción de eventos.
- DETALLES DE PUNTO DE CONEXIÓN > Tipo de punto de conexión: Seleccione Función de Azure en las opciones del menú.
- DETALLES DE PUNTO DE CONEXIÓN > Punto de conexión: seleccione el vínculo Seleccionar un extremo que abrirá una ventana Seleccionar la función de Azure:
- Rellene los campos Suscripción, Grupo de recursos, Aplicación de funciones y Función (ProcessDTRoutedData). Es posible que algunos de estos valores se rellenen automáticamente después de seleccionar la suscripción.
- Seleccione Confirm Selection (Confirmar selección).
De nuevo en la página Crear suscripción de eventos, seleccione Crear.
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 Visual Studio en que esté abierto el proyecto DeviceSimulator y ejecútelo.
Igual que pasó cuando ejecutó el simulador de dispositivo, se abrirá una ventana de la consola y se mostrarán los mensajes de los datos 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 de Azure Digital Twins, vaya a la ventana de Visual Studio donde está abierto el proyecto AdtE2ESample y ejecútelo.
En la ventana de la consola del proyecto que se abre, ejecute el siguiente comando para obtener las temperaturas que se indican en ambos 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 las ventanas de Visual Studio, 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 (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 en room21 (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 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 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 o todos sus modelos, gemelos y relaciones, puede usar los comandos az dt de la CLI en una ventana de Azure Cloud Shell para eliminar los elementos que quiera 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:
