Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial do Azure Digital Twins descreve como criar uma solução de ponta a ponta que demonstra a funcionalidade do serviço. Para configurar uma solução completa de ponta a ponta orientada por dados em tempo real do seu ambiente, você pode conectar sua instância do Azure Digital Twins a outros serviços do Azure para gerenciamento de dispositivos e dados.
Neste tutorial, você irá...
- Configurar uma instância do Azure Digital Twins
- Conheça o cenário de construção de exemplo e instancie os componentes pré-escritos.
- Utilize uma aplicação Azure Functions para direcionar dados simulados de dispositivos de um dispositivo IoT Hub para propriedades de gêmeos digitais.
- Propagar alterações através do gráfico gêmeo processando notificações de gêmeos digitais com o Azure Functions, pontos de extremidade e rotas
Pré-requisitos
Antes de começar este tutorial, comece com estes pré-requisitos:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Este tutorial usa o .NET. Pode descarregar a versão mais recente do SDK do .NET para várias plataformas a partir de Download .NET.
Em seguida, continue pelo restante desta seção para configurar os pré-requisitos remanescentes.
Obter recursos de amostra
O tutorial é baseado num projeto de exemplo ponta a ponta do Azure Digital Twins escrito em C#. Obtenha o projeto de exemplo no seu computador acedendo ao link de exemplo e selecionando o botão Explorar código abaixo do título.
Esta ação leva-o ao repositório GitHub para os exemplos, que pode descarregar como um ficheiro .zip ao selecionar o botão Code, seguido de Download ZIP.
Esta ação transfere uma pasta .zip para a sua máquina como digital-twins-samples-main.zip. Descompacte a pasta e extraia os ficheiros.
Prepare uma instância do Azure Digital Twins
Para trabalhar com Gêmeos Digitais do Azure neste artigo, você precisa de uma instância de Gêmeos Digitais do Azure e as permissões necessárias para usá-la. Se já tiver uma instância do Azure Digital Twins configurada, pode usar essa instância e passar para a próxima secção. Caso contrário, siga as instruções em Configurar uma instância e autenticação. As instruções contêm informações para ajudá-lo a verificar se completou cada etapa com sucesso.
Após configurar a sua instância, anote o nome do host da instância. Pode encontrar o nome do anfitrião no portal Azure.
Prepare o seu ambiente para a Azure CLI
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência CLI localmente, instale o Azure CLI. Se estiver a usar Windows ou macOS, considere executar o Azure CLI num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a usar uma instalação local, inicie sessão no Azure CLI utilizando o comando az login. Para concluir o processo de autenticação, siga os passos exibidos no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão do Azure CLI na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para encontrar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
Configurar sessão CLI
Para começar a trabalhar com os Gêmeos Digitais do Azure na CLI, a primeira coisa a fazer é entrar e definir o contexto da CLI para sua assinatura para esta sessão. Execute estes comandos na sua janela de interface de linha de comando (CLI).
az login
az account set --subscription "<your-Azure-subscription-ID>"
Sugestão
Também pode utilizar o nome da sua subscrição em vez do ID no comando anterior.
Se estiver a utilizar esta subscrição com os Gêmeos Digitais do Azure pela primeira vez, execute o seguinte comando para se registar no espaço de nomes dos Gêmeos Digitais do Azure. (Se você não tiver certeza, não há problema em executá-lo novamente, mesmo que você o tenha executado em algum momento no passado.)
az provider register --namespace 'Microsoft.DigitalTwins'
Em seguida, adicione a Extensão IoT do Microsoft Azure para CLI do Azure para habilitar comandos para interagir com Gêmeos Digitais do Azure e outros serviços de IoT. Execute o seguinte comando para garantir que tem a versão mais recente da extensão.
az extension add --upgrade --name azure-iot
Agora você está pronto para trabalhar com os Gêmeos Digitais do Azure na CLI do Azure.
Você pode verificar esse status executando az dt --help a qualquer momento para ver uma lista dos comandos de nível superior do Azure Digital Twins que estão disponíveis.
Configure o projeto de exemplo
Em seguida, configure um aplicativo cliente de exemplo que interagirá com sua instância do Azure Digital Twins.
Navegue em sua máquina até a pasta que você baixou anteriormente dos exemplos de ponta a ponta do Azure Digital Twins (e descompacte-a se ainda não tiver feito).
Uma vez dentro da pasta, aceda a digital-twins-samples-main\AdtSampleApp\SampleClientApp e abra o ficheiro appsettings.json. Este arquivo JSON contém uma variável de configuração que é necessária para executar o projeto.
No corpo do ficheiro, altere o instanceUrl para o URL do nome de anfitrião da sua instância do Azure Digital Twins (adicionando https:// antes do nome de anfitrião, conforme mostrado abaixo).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
Guarde e feche o ficheiro.
Configurar credenciais locais do Azure
Este exemplo usa DefaultAzureCredential (parte da Azure.Identity biblioteca) para autenticar com a instância do Azure Digital Twins quando você executa o exemplo em sua máquina local.
DefaultAzureCredential é uma das muitas opções de autenticação. Para obter mais informações sobre as diferentes maneiras como um aplicativo cliente pode se autenticar com o Azure Digital Twins, consulte Escrever código de autenticação de aplicativo.
Com DefaultAzureCredential, o exemplo procura credenciais no seu ambiente local, como um início de sessão no Azure numa CLI do Azure local ou no Visual Studio ou Visual Studio Code. Por esse motivo, você deve entrar no Azure localmente por meio de um desses mecanismos para configurar credenciais para o exemplo.
Se estiver a usar o Visual Studio ou o Visual Studio Code para executar exemplos de código, certifique-se de que está autenticado nesse editor com as mesmas credenciais do Azure que pretende usar para aceder à sua instância do Azure Digital Twins. Se estiver a usar uma janela de CLI local, execute o comando az login para iniciar sessão na sua conta Azure. Depois de iniciar sessão, o exemplo de código autentica-o automaticamente quando é executado.
Comece com o cenário de construção
O projeto de exemplo usado neste tutorial representa um cenário de construção do mundo real, contendo um piso, uma sala e um dispositivo de termostato. Esses componentes são representados digitalmente em uma instância do Azure Digital Twins, que está conectada ao Hub IoT, à Grade de Eventos e a duas funções do Azure para habilitar a movimentação de dados.
O diagrama seguinte representa o cenário completo.
Primeiro, crie a instância dos Gêmeos Digitais do Azure (seção A no diagrama), configure o fluxo de dados do dispositivo para os gêmeos digitais (seta B) e, em seguida, configure a propagação de dados por meio do gráfico gêmeo (seta C).
Para trabalhar com o cenário, interaja com os componentes da aplicação de exemplo pré-escrita que descarregou anteriormente.
Aqui estão os componentes implementados pelo cenário de construção da aplicação de exemplo AdtSampleApp.
- Autenticação de dispositivo
- Exemplos de uso do SDK .NET (C#) (encontrados em CommandLoop.cs)
- Interface de console para chamar a API do Azure Digital Twins
- AplicaçãoClienteDeExemplo - Uma solução de exemplo para Azure Digital Twins
- SampleFunctionsApp - Uma aplicação Azure Functions que atualiza o seu gráfico Azure Digital Twins com base nos dados de dispositivos do IoT Hub e eventos do Azure Digital Twins.
Instanciar o gráfico gémeo criado previamente
Primeiro, utiliza a solução AdtSampleApp do projeto de exemplo para construir a componente Azure Digital Twins do cenário de ponta a ponta (secção A):
Abra uma janela de consola local e navegue até à pasta digital-twins-samples-main\AdtSampleApp\SampleClientApp. Execute o projeto SampleClientApp com este comando dotnet:
dotnet run
O projeto começa a correr, realiza a autenticação e aguarda um comando. Neste console, execute o próximo comando para instanciar a solução de exemplo Azure Digital Twins.
Importante
Se já tiver gémeos digitais e relações na sua instância do Azure Digital Twins, executar este comando elimina-os e substitui-os pelos gémeos e relações para o cenário de exemplo.
SetupBuildingScenario
A saída deste comando é uma série de mensagens de confirmação à medida que três gêmeos digitais são criados e conectados em sua instância de Gêmeos Digitais do Azure: um andar chamado floor1, uma sala chamada room21 e um sensor de temperatura chamado termostato67. Esses gêmeos digitais representam as entidades que existiriam em um ambiente do mundo real.
Eles estão ligados através de relações no seguinte grafo gêmeo. O gráfico gêmeo representa o ambiente como um todo, incluindo como as entidades interagem e se relacionam entre si.
Pode verificar os gémeos que foram criados ao executar o seguinte comando, que interroga a instância conectada do Azure Digital Twins por todos os gémeos digitais que contém.
Query
Agora você pode parar de executar o projeto. Mantenha a janela do console aberta neste local, no entanto, pois vai utilizar esta aplicação novamente mais tarde no tutorial.
Configurar o aplicativo de função de exemplo
O próximo passo é configurar uma Azure Functions app que será usada ao longo deste tutorial para processar dados. A aplicação de funções, SampleFunctionsApp, contém duas funções:
- ProcessHubToDTEvents: processa os dados recebidos pelo IoT Hub e atualiza os Azure Digital Twins de acordo.
- ProcessDTRoutedData: processa dados de gémeos digitais e atualiza os gémeos principais em Azure Digital Twins conforme necessário
Na secção seguinte, irá publicar a aplicação de função pré-escrita e garantir que a aplicação de função possa aceder ao Azure Digital Twins, atribuindo-lhe uma identidade Microsoft Entra.
A aplicação de funções faz parte do projeto de exemplo que você descarregou, localizado na pasta digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.
Publicar o aplicativo
Para publicar a app de funções no Azure, precisa criar uma conta de armazenamento, depois criar a app de funções no Azure, e finalmente publicar as funções na app de funções do Azure. Esta seção conclui essas ações usando a CLI do Azure. Em cada comando, substitua todos os espaços reservados entre parênteses angulares pelos detalhes dos seus próprios recursos.
Crie uma conta de armazenamento Azure executando o seguinte comando:
az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRSCrie uma aplicação de função do Azure executando o seguinte comando:
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>Em seguida, compacta as funções e publica-as na sua nova aplicação de funções Azure.
Abra uma janela de consola no seu computador (se estiver a usar o Azure CLI local, pode ser a mesma janela) e navegue para a pasta digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp dentro do seu projeto de exemplo descarregado.
Na consola, execute o seguinte comando para publicar o projeto localmente:
dotnet publish -c Release -o publishEste comando publica o projeto no diretório digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.
Usando seu método preferido, crie um zip dos arquivos publicados que estão localizados dentro do diretório digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publishing . Dê o nome publish.zip à pasta comprimida.
Importante
Certifique-se de que a pasta compactada não inclua uma camada extra para a própria pasta publish. Deve conter apenas os conteúdos que estavam dentro da pasta publish.
Eis uma imagem de como o conteúdo do arquivo zip pode parecer (pode variar dependendo da sua versão do .NET).
O último passo é feito no Azure CLI.
Na CLI do Azure, execute o comando seguinte para implantar as funções publicadas e compactadas na sua aplicação de funções do Azure:
az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"Sugestão
Se estiver a usar o Azure CLI localmente, pode aceder ao ficheiro ZIP no seu computador diretamente, utilizando o caminho no seu dispositivo.
Se estiver a usar o Azure Cloud Shell, carregue o ficheiro ZIP para o Cloud Shell com este botão antes de executar o comando:
Neste caso, o ficheiro é carregado no diretório raiz do armazenamento do seu Cloud Shell, pelo que pode referir-se ao ficheiro diretamente pelo seu nome para o parâmetro
--srcdo comando (como em,--src publish.zip).Uma implementação bem-sucedida responde com o código de estado 202 e emite um objeto JSON contendo os detalhes da sua nova função. Pode confirmar que a implementação foi bem-sucedida procurando este campo no resultado:
"provisioningState": "Succeeded",
As funções devem agora ser publicadas numa aplicação de função no Azure. Pode usar os seguintes comandos CLI para verificar se ambas as funções foram publicadas com sucesso. Cada comando tem espaços reservados para o seu grupo de recursos e o nome da sua aplicação de funções. Os comandos imprimem informações sobre as funções ProcessDTRoutedData e ProcessHubToDTEvents que você publicou.
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
Em seguida, a sua aplicação de funções necessita da permissão correta para aceder à sua instância do Azure Digital Twins. Configura este acesso na próxima secção.
Configure permissões para a aplicação de funções
Existem duas definições que precisam ser configuradas para que a aplicação de função possa aceder à sua instância do Azure Digital Twins, ambas podendo ser feitas usando o Azure CLI.
Atribuir função de acesso
A primeira definição atribui à app de função o papel de Proprietário de Dados do Azure Digital Twins na instância do Azure Digital Twins. Este papel é necessário para qualquer utilizador ou função que pretenda realizar muitas atividades no plano de dados na instância. Pode ler mais sobre segurança e atribuições de funções em Segurança para soluções Azure Digital Twins.
Use o comando a seguir para criar uma identidade atribuída ao sistema para a função. A saída apresenta os detalhes da identidade atribuída pelo sistema. Tome nota do campo principalId na saída para usar no próximo passo.
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>Utilize o valor de principalId no comando seguinte para atribuir a identidade da app de função ao papel de Azure Digital Twins Data Owner para o seu instância 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"
O resultado deste comando é a informação apresentada sobre a atribuição de função que você criou. O aplicativo de função agora tem permissões para acessar dados em sua instância do Azure Digital Twins.
Configure a definição da aplicação
A segunda configuração cria uma variável de ambiente para a função com a URL da sua instância do Azure Digital Twins. O código da função utiliza o valor desta variável para se referir à sua instância. Para mais informações sobre variáveis de ambiente, consulte Gerir a sua app de funções.
Execute o seguinte comando, preenchendo os espaços reservados com os detalhes dos seus 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>"
A saída é a lista de configurações para a Função do Azure, que agora deve conter uma entrada chamada ADT_SERVICE_URL.
Processar dados de dispositivo simulados de um dispositivo do Hub IoT
Tipicamente, os dados de dispositivos reais impulsionam um gráfico do Azure Digital Twins.
Neste passo, conecta um dispositivo termostático simulado registado em IoT Hub ao gémeo digital que o representa no Azure Digital Twins. À medida que o dispositivo simulado emite dados, os dados são direcionados através da função Azure ProcessHubToDTEvents, que aciona uma atualização correspondente no gêmeo digital. Desta forma, o gémeo digital mantém-se atualizado com os dados reais do dispositivo. Nos Gêmeos Digitais do Azure, o processo de direcionar dados de eventos de um local para outro é chamado de eventos de roteamento.
O processamento dos dados simulados do dispositivo acontece nesta parte do cenário de ponta a ponta (seta B):
Aqui estão as ações que você deve realizar para configurar a conexão deste dispositivo:
- Crie um hub de IoT que gere o dispositivo simulado
- Conecte o hub IoT à função apropriada do Azure configurando uma assinatura de evento
- Registrar o dispositivo simulado no hub IoT
- Execute o dispositivo simulado e gere dados do dispositivo
- Consulte os Gêmeos Digitais do Azure para ver os resultados ao vivo
Criar uma instância de IoT Hub
Azure Digital Twins foi concebido para funcionar em conjunto com o IoT Hub, um serviço Azure para gestão de dispositivos e os seus dados. Nesta etapa, configura-se um hub IoT que gere o dispositivo de exemplo deste tutorial.
Na CLI do Azure, use este comando para criar um novo hub IoT:
az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1
O resultado deste comando é a informação sobre o hub IoT que foi criado.
Guarde o nome do seu hub IoT para usar mais tarde.
Conectar o hub IoT à função do Azure
Em seguida, ligue o seu hub IoT à função Azure ProcessHubToDTEvents na aplicação de função que publicou anteriormente. Esta ligação permite que os dados fluam do dispositivo no IoT Hub através da função, que atualiza os Azure Digital Twins.
Para fazer isso, crie uma subscrição de eventos no seu IoT Hub, com a função Azure como ponto de extremidade. Isso "inscreve" a função em eventos ocorrendo no IoT Hub.
Utilize o seguinte comando CLI para criar a subscrição do evento. Existe um espaço reservado para inserir um nome para a subscrição do evento, e também existem espaços reservados para introduzir o seu ID de subscrição, grupo de recursos, nome de hub IoT, e o nome da sua aplicação de função.
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
A saída mostra informações sobre a assinatura de evento que você criou. Pode confirmar que a operação foi concluída com sucesso, verificando o valor de provisioningState no resultado.
"provisioningState": "Succeeded",
Sugestão
Se o comando retornar um erro do provedor de recursos, adicione Microsoft.EventGrid como um provedor de recursos à sua assinatura. Pode usar o portal do Azure para adicionar este fornecedor de recursos à sua subscrição seguindo as instruções em Registar fornecedor de recursos.
Registe o dispositivo simulado no IoT Hub
Esta secção cria uma representação de dispositivo no IoT Hub com o ID thermostat67. O dispositivo simulado liga-se a esta representação, o que descreve como os dados do dispositivo fluem para o IoT Hub a partir do dispositivo. O hub IoT é onde a função Azure subscrita no passo anterior está a escutar, pronta para captar os eventos e continuar o processamento.
No Azure CLI, crie um dispositivo no IoT Hub com o seguinte comando:
az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>
A saída é informação sobre o dispositivo que foi criado.
Configure e execute a simulação
Importante
Este artigo inclui etapas para conectar um dispositivo usando uma assinatura de acesso compartilhado, também chamada de autenticação de chave simétrica. Este método de autenticação é conveniente para testes e avaliação, mas autenticar um dispositivo usando certificados X.509 é uma abordagem mais segura. Para saber mais, consulte Práticas recomendadas de segurança para soluções > IoT Segurança de conexão.
Em seguida, configure o simulador de dispositivo para enviar dados para sua instância do Hub IoT.
Comece por obter a cadeia de conexão do IoT hub com o seguinte comando. O valor da cadeia de conexão começa com HostName=.
az iot hub connection-string show --hub-name <your-IoT-hub-name>
Em seguida, obtenha a string de conexão do dispositivo com este comando:
az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>
Em seguida, conecte esses valores ao código do simulador de dispositivo em seu projeto local para conectar o simulador a esse hub IoT e dispositivo de hub IoT.
Navegue na sua máquina local até a pasta de exemplo descarregada e entre na pasta digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Abra o ficheiro AzureIoTHub.cs para edição. Altere os seguintes valores de cadeia de conexão para os valores coletados anteriormente:
private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";
Guarde o ficheiro.
Agora, para ver os resultados da simulação de dados que configurou, abra uma nova janela de console local e navegue até digital-twins-samples-main\DeviceSimulator\DeviceSimulator.
Observação
Agora, deve ter duas janelas de consola abertas: uma que está aberta na pasta DeviceSimulator\DeviceSimulator e outra mais antiga que ainda está aberta na pasta AdtSampleApp\SampleClientApp.
Use o seguinte comando dotnet para executar o projeto de simulador de dispositivo:
dotnet run
O projeto começa a ser executado e começa a exibir mensagens de dados simuladas de temperatura do dispositivo. Essas mensagens estão sendo enviadas para o Hub IoT, onde são coletadas e processadas pela função do Azure.
Não tem que fazer mais nada neste console, apenas deixá-lo em execução enquanto conclui as próximas etapas.
Veja os resultados em Gêmeos Digitais do Azure
A função ProcessHubToDTEvents que publicou anteriormente escuta os dados do IoT Hub e chama uma API do Azure Digital Twins para atualizar a propriedade Temperature no twin do thermostat67.
Para ver os dados do lado do Azure Digital Twins, mude para a outra janela de consola que está aberta na pasta AdtSampleApp\SampleClientApp. Execute o projeto SampleClientApp com dotnet run.
dotnet run
Assim que o projeto estiver em execução e aceitando comandos, execute o seguinte comando para obter as temperaturas relatadas pelo termostato gêmeo digital 67:
ObserveProperties thermostat67 Temperature
Deve ver as temperaturas atualizadas em tempo real da sua instância do Azure Digital Twins a serem registadas na consola a cada dois segundos. Eles devem refletir os valores que o simulador de dados está gerando (você pode colocar as janelas do console lado a lado para verificar se os valores se coordenam).
Observação
Pode demorar alguns segundos para que os dados do dispositivo se propaguem até ao gémeo. As primeiras leituras de temperatura podem aparecer como 0 antes que os dados comecem a chegar.
Depois de verificar que o registo de temperatura ao vivo está a funcionar corretamente, podes parar de executar ambos os projetos. Mantenha as janelas do console abertas, pois você as usa novamente mais adiante no tutorial.
Propagar eventos do Azure Digital Twins através do gráfico
Até agora neste tutorial, vê como o Azure Digital Twins pode ser atualizado com dados de dispositivos externos. A seguir, verá como as alterações em um digital twin podem propagar-se através do grafo Azure Digital Twins — ou seja, como atualizar os gêmeos a partir dos dados internos do serviço.
Para fazer isso, use a função Azure ProcessDTRoutedData para atualizar um gémeo da Sala quando o gémeo do Termostato conectado for atualizado. A funcionalidade de atualização ocorre nesta parte do cenário de ponta a ponta (seta C):
Aqui estão as ações que deve realizar para configurar este fluxo de dados:
- Crie um tópico do Event Grid para permitir o movimento de dados entre serviços Azure.
- Crie um ponto de extremidade no Azure Digital Twins que conecta a instância ao tópico do Event Grid
- Configure uma rota dentro do Azure Digital Twins que envia eventos de alteração de propriedades gêmeas para o endpoint.
- Configure uma função do Azure que escuta o tópico Event Grid no endpoint, recebe os eventos de alteração de propriedade twins que são enviados para lá e atualiza outros twins no gráfico de acordo
Criar o tópico Grade de Eventos
Event Grid é um serviço da Azure que ajuda a encaminhar e entregar eventos de serviços da Azure para outros locais dentro da Azure. Você pode criar um tópico de Grade de Eventos para coletar determinados eventos de uma fonte e, em seguida, os assinantes podem ouvir o tópico para receber os eventos à medida que eles aparecem.
Na CLI do Azure, execute o seguinte comando para criar um tópico do Event Grid:
az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>
O resultado deste comando é informação sobre o tópico do Event Grid que você criou. Guarde o nome que deu ao seu tópico do Event Grid, pois irá usá-lo mais tarde.
Crie o ponto final
Em seguida, crie um ponto de extremidade de Event Grid no Azure Digital Twins, que conectará a sua instância ao tópico Event Grid. Use o comando abaixo, preenchendo o nome do tópico da Grade de Eventos da etapa anterior e os outros campos de espaço reservado, conforme necessário.
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>
A saída deste comando é informação sobre o endpoint que criou.
Procure o provisioningState campo na saída e verifique se o valor é "Êxito".
Pode também dizer "Provisioning", significando que o endpoint ainda está a ser criado. Em caso afirmativo, aguarde alguns segundos e execute o seguinte comando para verificar o estado do endpoint. Repita até que o provisioningState exiba "Succeeded".
az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint>
Salve o nome do seu ponto de extremidade, porque você o usará mais tarde.
Crie a rota
Em seguida, crie uma rota no Azure Digital Twins que envie eventos para o endpoint do Event Grid que criou.
Utilize o seguinte comando CLI, insira o nome do seu ponto final do passo anterior e os outros campos de preenchimento conforme necessário. Este comando encaminha todos os eventos que ocorrem no gráfico gêmeo.
Sugestão
Você pode limitar os eventos a apenas eventos específicos, se desejar, usando 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>
A saída deste comando é alguma informação sobre a rota que criou.
Observação
Os pontos de extremidade (da etapa anterior) devem ter o fornecimento concluído antes de se poder configurar uma rota de evento que os utilize. Se a criação da rota falhar porque os pontos de extremidade não estão prontos, aguarde alguns minutos e tente novamente.
Conectar a função Azure
Em seguida, subscreva a função Azure ProcessDTRoutedData ao tópico do Event Grid que criou anteriormente. Esta subscrição permite que os dados simulados do dispositivo fluam do gémeo termostato67 através do tópico Grelha de Eventos para a função, que volta para os Gêmeos Digitais do Azure e atualiza o gémeo room21 em conformidade.
Para fazer isso, crie uma subscrição no Event Grid que envie dados do tópico do Event Grid criado anteriormente para a sua função Azure ProcessDTRoutedData.
Utilize o seguinte comando CLI para criar a subscrição do evento. Há um espaço reservado para introduzir um nome para esta subscrição de evento, e também há espaços reservados para introduzir o seu ID de subscrição, grupo de recursos, o nome do seu tópico do Event Grid e o nome da sua aplicação de funções.
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
Execute a simulação e veja os resultados.
Agora, os eventos devem ter a capacidade de fluir do dispositivo simulado para o Azure Digital Twins e através do grafo do Azure Digital Twins para atualizar os gêmeos conforme apropriado. Nesta seção, você executa o simulador de dispositivo novamente para iniciar o fluxo de eventos completo configurado e consulta os Gêmeos Digitais do Azure para ver os resultados ao vivo
Vá para a janela do console que está aberta para a pasta DeviceSimulator\DeviceSimulator e execute o projeto de simulador de dispositivo com dotnet run.
Como na primeira vez que você executou o simulador de dispositivo, o projeto começa a ser executado e exibe mensagens de dados simuladas de temperatura do dispositivo. Esses eventos estão passando pelo fluxo que você configurou anteriormente para atualizar o gêmeo termostato67 e, em seguida, passando pelo fluxo que você configurou recentemente para atualizar o gêmeo room21 para que fiquem idênticos.
Não tem que fazer mais nada neste console, apenas deixá-lo em execução enquanto conclui as próximas etapas.
Para ver os dados do lado do Azure Digital Twins, vá para a outra janela do console que está aberta na pasta AdtSampleApp\SampleClientApp e execute o projeto SampleClientApp com dotnet run.
Uma vez que o projeto esteja em execução e a aceitar comandos, execute o seguinte comando para obter as temperaturas relatadas tanto pelo termostato digital gémeo67 quanto pela sala digital gémea21.
ObserveProperties thermostat67 Temperature room21 Temperature
Deve ver as temperaturas atualizadas em tempo real da sua instância do Azure Digital Twins a serem registadas na consola a cada dois segundos. Note que a temperatura para a sala21 está a ser atualizada para coincidir com as atualizações do termostato67.
Depois de verificar que o registo de temperaturas em tempo real da sua instância está a funcionar corretamente, pode parar de executar ambos os projetos. Pode também fechar ambas as janelas da consola, pois o tutorial está agora concluído.
Revisão
Aqui está uma revisão do cenário que você criou neste tutorial.
- Uma instância do Azure Digital Twins representa digitalmente um andar, uma sala e um termostato (representado pela seção A no diagrama a seguir)
- Dados de dispositivo simulados são enviados para o IoT Hub, onde a função Azure ProcessHubToDTEvents está a escutar eventos de dados do dispositivo. A função Azure ProcessHubToDTEvents utiliza a informação destes eventos para definir a propriedade
Temperatureno termostato67 (seta B no diagrama seguinte). - Os eventos de alteração de propriedade no Azure Digital Twins são encaminhados para um tópico do Event Grid, onde a função Azure ProcessDTRoutedData está à escuta de eventos. A função Azure ProcessDTRoutedData utiliza as informações destes eventos para definir a propriedade
Temperaturena sala21 (seta C no diagrama a seguir).
Limpar recursos
Depois de concluir este tutorial, pode escolher quais recursos deseja remover, dependendo do que pretende fazer a seguir.
Se não precisar de nenhum dos recursos criados neste tutorial, pode eliminar a instância do Azure Digital Twins e todos os outros recursos mencionados neste artigo com o comando CLI az group delete. Isto elimina todos os recursos do Azure num grupo de recursos, assim como o próprio grupo de recursos.
Importante
Eliminar um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são permanentemente eliminados. Certifique-se de que não elimina acidentalmente o grupo de recursos ou recursos errados.
Abra o Azure Cloud Shell ou uma janela CLI local e execute o seguinte comando para eliminar o grupo de recursos e tudo o que ele contém.
az group delete --name <your-resource-group>
Se quiser continuar usando a instância do Azure Digital Twins configurada neste artigo, mas limpar alguns ou todos os seus modelos, gêmeos e relacionamentos, você pode usar os comandos az dt CLI para excluir os elementos que deseja remover.
Essa opção não remove nenhum dos outros recursos do Azure criados neste tutorial (Hub IoT, aplicativo Azure Functions e assim por diante). Pode eliminar estes recursos individualmente utilizando os comandos dt apropriados para cada tipo de recurso.
Também pode eliminar a pasta do projeto do seu computador local.
Próximos passos
Neste tutorial, criaste um cenário de ponta a ponta que mostra os Gêmeos Digitais do Azure orientados por dados dinâmicos de dispositivos.
Em seguida, comece a examinar a documentação do conceito para saber mais sobre os elementos com os quais você trabalhou no tutorial: