Esercitazione: Creare una soluzione end-to-end
Questa esercitazione su Gemelli digitali di Azure descrive come creare una soluzione end-to-end che illustra le funzionalità del servizio. Per configurare una soluzione end-to-end completa basata su dati in tempo reale dell'ambiente, è possibile connettere l'istanza di Gemelli digitali di Azure ad altri servizi di Azure per la gestione di dispositivi e dati.
In questa esercitazione si apprenderà come:
- Configurare un'istanza di Gemelli digitali di Azure
- Seguire l'esempio di scenario edilizio e creare un'istanza di componenti scritti in precedenza
- Usare un'app di Funzioni di Azure per instradare i dati di telemetria simulati da un dispositivo hub IoT alle proprietà dei gemelli digitali
- Propagare le modifiche tramite il grafo dei gemelli elaborando le notifiche dei gemelli digitali con Funzioni di Azure, endpoint e route
Prerequisiti
Prima di iniziare questa esercitazione, iniziare con questi prerequisiti:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- In questa esercitazione viene usato .NET. È possibile scaricare la versione più recente di .NET SDK da diverse piattaforme da Download .NET.
Continuare quindi con il resto di questa sezione per configurare i prerequisiti rimanenti.
Ottenere risorse di esempio
L'esercitazione è basata su un progetto end-to-end di Gemelli digitali di Azure scritto in C#. Scaricare il progetto di esempio nel computer passando al link dell'esempio e selezionando il pulsante Esplora codice sotto il titolo.
Verrà visualizzato il repository GitHub per gli esempi, che è possibile scaricare come .zip selezionando il pulsante Codice seguito da Scarica ZIP.
Verrà scaricata una cartella .zip nel computer denominata digital-twins-samples-main.zip. Decomprimere la cartella ed estrarre i file.
Preparare un'istanza di Gemelli digitali di Azure
Per usare Gemelli digitali di Azure come descritto in questo articolo, è necessaria un'istanza di Gemelli digitali di Azure e le autorizzazioni necessarie per l'utilizzo. Se in precedenza è stata già configurata un'istanza di Gemelli digitali di Azure, è possibile usare tale istanza e passare alla sezione successiva. In caso contrario, seguire le istruzioni riportate in Configurare un'istanza e l'autenticazione. Le istruzioni contengono informazioni che consentono di verificare che ogni passaggio sia stato completato correttamente.
Dopo aver configurato l'istanza, prendere nota del nome host dell'istanza. È possibile trovare il nome host nel portale di Azure.
Preparare l'ambiente per l'interfaccia della riga di comando di Azure
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Configurare la sessione dell'interfaccia della riga di comando
Per iniziare a usare Gemelli digitali di Azure nell'interfaccia della riga di comando, è prima di tutto necessario accedere e impostare il contesto dell'interfaccia della riga di comando sulla sottoscrizione per questa sessione. Eseguire questi comandi nella finestra Interfaccia della riga di comando:
az login
az account set --subscription "<your-Azure-subscription-ID>"
Suggerimento
Nel comando riportato sopra si può anche usare il nome della sottoscrizione invece dell'ID.
Se è la prima volta che si usa questa sottoscrizione con Gemelli digitali di Azure, eseguire questo comando per registrarsi con lo spazio dei nomi di Gemelli digitali di Azure. In caso di dubbi, è possibile eseguirlo di nuovo anche se è stato già completato nel passato.
az provider register --namespace 'Microsoft.DigitalTwins'
A questo punto, si aggiungerà l'estensione Microsoft Azure IoT per l'interfaccia della riga di comando di Azure, per abilitare i comandi per l'interazione con Gemelli digitali di Azure e altri servizi IoT. Eseguire questo comando per assicurarsi di avere la versione più recente dell'estensione:
az extension add --upgrade --name azure-iot
A questo punto si è pronti per usare Gemelli digitali di Azure nell’interfaccia della riga di comando di Azure.
Per verificarlo, è possibile eseguire az dt --help
in qualsiasi momento per visualizzare un elenco dei comandi di Gemelli digitali di Azure di primo livello disponibili.
Configurare il progetto di esempio
Configurare quindi un'applicazione client di esempio che interagirà con l'istanza di Gemelli digitali di Azure.
Nel computer passare alla cartella scaricata in precedenza dagli esempi end-to-end di Gemelli digitali di Azure (e decomprimerla se non è già stato fatto).
Una volta all'interno della cartella, andare a digital-twins-samples-main\AdtSampleApp\SampleClientApp e aprire il file appsettings.json. Questo file JSON contiene una variabile di configurazione necessaria per eseguire il progetto.
Nel corpo del file sostituire instanceUrl
con l'URL del nome host dell'istanza di Gemelli digitali di Azure (aggiungendo https:// prima del nome host, come illustrato di seguito).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
Salva e chiudi il file.
Configurare le credenziali di Azure locali
Questo esempio usa DefaultAzureCredential (parte della libreria Azure.Identity
) per l'autenticazione degli utenti con l'istanza di Gemelli digitali di Azure eseguita nel computer locale. Per altre informazioni sui diversi modi con cui un'app client può eseguire l'autenticazione con Gemelli digitali di Azure, vedere Scrivere il codice di autenticazione dell'app.
Con DefaultAzureCredential
, l'esempio cercherà le credenziali nell'ambiente locale, ad esempio un account di accesso di Azure nell'interfaccia della riga di comando di Azure locale o in Visual Studio o Visual Studio Code. Per questo motivo è necessario accedere ad Azure in locale tramite uno di questi meccanismi per configurare le credenziali per l'esempio.
Se si usa Visual Studio o Visual Studio Code per eseguire esempi di codice, assicurarsi di aver eseguito l'accesso a tale editor con le stesse credenziali di Azure che si vogliono usare per accedere all'istanza di Gemelli digitali di Azure. Se si usa una finestra dell'interfaccia della riga di comando locale, eseguire il comando az login
per accedere all'account Azure. In seguito, quando si esegue l'esempio di codice, si dovrebbe essere autenticati automaticamente.
Introduzione allo scenario edilizio
Il progetto di esempio usato in questa esercitazione rappresenta uno scenario edilizio reale, che contiene un piano, una stanza e un termostato. Questi componenti verranno rappresentati digitalmente in un'istanza di Gemelli digitali di Azure, che verrà quindi connessa a un hub IoT, a Griglia di eventi e a due funzioni di Azure per abilitare lo spostamento dei dati.
Di seguito è riportato un diagramma che rappresenta lo scenario completo.
Si crea prima di tutto un'istanza di Gemelli digitali di Azure (sezione A nel diagramma), quindi si configurerà il flusso di dati di telemetria del dispositivo nei gemelli digitali (freccia B), infine si configurerà la propagazione dei dati tramite il grafo dei gemelli (freccia C).
Per completare lo scenario, si dovrà interagire con i componenti dell'app di esempio scritta e scaricata in precedenza.
Ecco i componenti implementati dall'app di esempio AdtSampleApp dello scenario edilizio:
- Autenticazione del dispositivo
- Esempi di utilizzo di .NET (C#) SDK (disponibili in CommandLoop.cs)
- Interfaccia console per chiamare l'API di Gemelli digitali di Azure
- SampleClientApp: una soluzione di esempio di Gemelli digitali di Azure
- SampleFunctionsApp: un'app di Funzioni di Azure che aggiorna il grafo di Gemelli digitali di Azure in base ai dati di telemetria provenienti da eventi dell'hub IoT e di Gemelli digitali di Azure
Creare un'istanza del grafo dei gemelli creato in precedenza
Prima di tutto, si userà la soluzione AdtSampleApp dal progetto di esempio per creare il componente Gemelli digitali di Azure dello scenario end-to-end (sezione A):
Aprire una finestra della console locale e passare alla cartella digital-twins-samples-main\AdtSampleApp\SampleClientApp. Eseguire il progetto SampleClientApp con questo comando dotnet:
dotnet run
Il progetto inizierà l'esecuzione, eseguirà l'autenticazione e attenderà un comando. In questa console eseguire il comando successivo per creare un'istanza della soluzione Gemelli digitali di Azure di esempio.
Importante
Se nell'istanza di Gemelli digitali di Azure sono già presenti gemelli digitali e relazioni, questo comando li eliminerà e li sostituirà con i gemelli e le relazioni dello scenario di esempio.
SetupBuildingScenario
L'output di questo comando è una serie di messaggi di conferma che vengono creati tre gemelli digitali vengono creati e connessi nell'istanza di Gemelli digitali di Azure: un piano denominato floor1, una stanza denominata room21 e un sensore di temperatura denominato termostato67. Questi gemelli digitali rappresentano le entità che esisterebbero in un ambiente reale.
Sono connessi tramite relazioni nel seguente grafo gemello. Il grafo dei gemelli rappresenta l'ambiente nel suo complesso, incluso il modo in cui le entità interagiscono e sono correlate tra loro.
È possibile verificare che i gemelli sono stati creati con il comando seguente, che esegue una query sull'istanza di Gemelli digitali di Azure connessa per recuperare tutti i gemelli digitali che contiene:
Query
È ora possibile interrompere l'esecuzione del progetto. Mantenere aperta la finestra della console in questa posizione, tuttavia, perché l'app verrà usata di nuovo più avanti nell'esercitazione.
Configurare l'app per le funzioni di esempio
Il passaggio successivo prevede la configurazione di un'app di Funzioni di Azure che verrà usata in questa esercitazione per elaborare i dati. L'app, SampleFunctionsApp, contiene due funzioni:
- ProcessHubToDTEvents: elabora i dati dell'hub IoT in ingresso e aggiorna di conseguenza l'istanza di Gemelli digitali di Azure
- ProcessDTRoutedData: elabora i dati provenienti dai gemelli digitali e aggiorna di conseguenza i gemelli padre nell'istanza di Gemelli digitali di Azure
In questa sezione si pubblicherà l'app per le funzioni già scritta e si verificherà che l'app per le funzioni possa accedere a Gemelli digitali di Azure assegnandole un'identità Microsoft Entra.
L'app per le funzioni fa parte del progetto di esempio scaricato, che si trova nella cartella digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.
Pubblicazione dell'app
Per pubblicare l'app per le funzioni in Azure, è necessario creare un account di archiviazione, quindi creare l'app per le funzioni in Azure e infine pubblicare le funzioni nell'app per le funzioni di Azure. Questa sezione completa queste azioni usando l'interfaccia della riga di comando di Azure. In ogni comando sostituire i segnaposto tra parentesi angolari con i dettagli per le proprie risorse.
Creare un account di archiviazione di Azure eseguendo il comando seguente:
az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
Creare un'app per le funzioni di Azure eseguendo il comando seguente:
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>
Successivamente, si comprimeranno le funzioni e le si pubblicherà nella nuova app per le funzioni di Azure.
Aprire una finestra della console nel computer (se si usa l'interfaccia della riga di comando di Azure locale, può essere la stessa finestra) e passare alla cartella digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp all'interno del progetto di esempio scaricato.
Nella console eseguire il comando seguente per pubblicare il progetto in locale:
dotnet publish -c Release -o publish
Questo comando pubblica il progetto nella directory digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.
Usando il metodo preferito, creare un file ZIP dei file pubblicati che si trovano all'interno della directory digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish. Denominare la cartella compressa publish.zip.
Importante
Assicurarsi che la cartella compressa non includa un livello aggiuntivo per la cartella di pubblicazione stessa. Deve contenere solo il contenuto all'interno della cartella di pubblicazione.
Di seguito è riportata un'immagine dell'aspetto del contenuto zip (può cambiare a seconda della versione di .NET).
L'ultimo passaggio verrà eseguito nell'interfaccia della riga di comando di Azure.
Nell'interfaccia della riga di comando di Azure eseguire il comando seguente per distribuire le funzioni pubblicate e compresse nell'app per le funzioni di Azure:
az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
Suggerimento
Se si usa l'interfaccia della riga di comando di Azure in locale, è possibile accedere al file ZIP nel computer direttamente usando il relativo percorso nel computer.
Se si usa Azure Cloud Shell, caricare il file ZIP in Cloud Shell con questo pulsante prima di eseguire il comando:
In questo caso, il file verrà caricato nella directory radice dell'archiviazione di Cloud Shell, quindi è possibile fare riferimento al file direttamente in base al relativo nome per il parametro del comando
--src
(come in--src publish.zip
).Una distribuzione riuscita risponderà con il codice di stato 202 e restituirà un oggetto JSON contenente i dettagli della nuova funzione. È possibile verificare che la distribuzione sia riuscita cercando questo campo nel risultato:
"provisioningState": "Succeeded",
Le funzioni dovrebbero ora essere pubblicate in un'app per le funzioni in Azure. È possibile usare i comandi dell'interfaccia della riga di comando seguenti per verificare che entrambe le funzioni siano state pubblicate correttamente. Ogni comando include segnaposto per il gruppo di risorse e il nome dell'app per le funzioni. I comandi visualizzeranno informazioni sulle funzioni ProcessDTRoutedData e ProcessHubToDTEvents pubblicate.
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
L'app per le funzioni dovrà quindi disporre delle autorizzazioni appropriate per accedere all'istanza di Gemelli digitali di Azure. Questo accesso verrà configurato nella sezione successiva.
Configurare le autorizzazioni per l'app per le funzioni
È necessario impostare due impostazioni per consentire all'app per le funzioni di accedere all'istanza di Gemelli digitali di Azure, entrambe le quali possono essere eseguite usando l'interfaccia della riga di comando di Azure.
Assegnare il ruolo di accesso
La prima impostazione fornisce all'app per le funzioni il ruolo proprietario dei dati di Gemelli digitali di Azure nell'istanza di Gemelli digitali di Azure. Questo ruolo è necessario per qualsiasi utente o funzione che vuole eseguire molte attività del piano dati nell'istanza. Altre informazioni sulle assegnazioni di sicurezza e ruolo sono disponibili nelle Soluzioni di sicurezza per Gemelli digitali di Azure.
Usare il comando seguente per creare un’identità assegnata dal sistema per la funzione. L'output visualizzerà i dettagli dell'identità creata. Prendere nota del campo principalId nell'output da usare nel passaggio successivo.
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
Usare il valore principalId nel comando seguente per assegnare l'identità dell'app per le funzioni al ruolo Azure Digital Twins Owner (Proprietario di Gemelli digitali di Azure) per l'istanza di Gemelli digitali di Azure.
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"
Il risultato di questo comando è costituito dalle informazioni sull'assegnazione di ruolo creata. L'app per le funzioni dispone ora delle autorizzazioni per accedere ai dati nell'istanza di Gemelli digitali di Azure.
Configurare l'impostazione dell'applicazione
La seconda impostazione crea una variabile di ambiente per la funzione con l'URL dell'istanza di Gemelli digitali di Azure. Il codice della funzione userà il valore di questa variabile per fare riferimento all'istanza. Per altre informazioni sulle variabili di ambiente, vedere Gestire l'app per le funzioni.
Eseguire il comando seguente, inserendo i segnaposto con i dettagli delle risorse.
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>"
L'output è l'elenco delle impostazioni per la funzione di Azure, che ora dovrebbe contenere una voce denominata ADT_SERVICE_URL
.
Elaborare i dati di telemetria simulati da un dispositivo hub IoT
Un grafo di Gemelli digitali di Azure è progettato per essere basato sui dati di telemetria di dispositivi reali.
In questo passaggio un termostato simulato registrato nell'hub IoT verrà connesso al gemello digitale che lo rappresenta in Gemelli digitali di Azure. I dati di telemetria emessi dal dispositivo simulato verranno instradati tramite la funzione di Azure ProcessHubToDTEvents che attiva un aggiornamento corrispondente nel gemello digitale. In questo modo, il gemello digitale rimane aggiornato con i dati del dispositivo reale. In Gemelli digitali di Azure il processo di instradamento dei dati degli eventi da una posizione a un'altra è detto routing di eventi.
L'elaborazione dei dati di telemetria simulati avviene in questa parte dello scenario end-to-end (freccia B):
Ecco le azioni che verranno completate per configurare la connessione del dispositivo:
- Creare un hub IoT che gestirà il dispositivo simulato
- Connettere l'hub IoT alla funzione di Azure appropriata configurando una sottoscrizione di eventi
- Registrare il dispositivo simulato nell'hub IoT
- Eseguire il dispositivo simulato e generare dati di telemetria
- Eseguire query su Gemelli digitali di Azure per visualizzare i risultati in tempo reale
Creare un'istanza dell'hub IoT
Gemelli digitali di Azure è un servizio progettato per funzionare insieme all'hub IoT, un servizio di Azure per la gestione dei dispositivi e dei relativi dati. In questo passaggio verrà configurato un hub IoT che gestirà il dispositivo di esempio di questa esercitazione.
Nell'interfaccia della riga di comando di Azure usare questo comando per creare un nuovo hub IoT:
az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1
L'output di questo comando è costituito da informazioni sull'hub IoT creato.
Salvare il nome assegnato all'hub IoT. Verrà usato più avanti.
Connettere l'hub IoT alla funzione di Azure
Connettere quindi l'hub IoT alla funzione di Azure ProcessHubToDTEvents nell'app per le funzioni pubblicata in precedenza, in modo che i dati possano essere trasmessi dal dispositivo nell'hub IoT tramite la funzione, che aggiorna Gemelli digitali di Azure.
A tale scopo, creare una sottoscrizione di eventi nell'hub IoT, con la funzione di Azure come endpoint. In questo modo si "sottoscrive" la funzione agli eventi che si verificano nell'hub IoT.
Usare il comando dell'interfaccia della riga di comando seguente per creare la sottoscrizione di eventi. È disponibile un segnaposto per immettere un nome per la sottoscrizione di eventi e sono disponibili anche segnaposto per immettere l'ID sottoscrizione, il gruppo di risorse, il nome dell'hub IoT e il nome dell'app per le funzioni.
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
L'output mostrerà informazioni sulla sottoscrizione di eventi creata. È possibile verificare che l'operazione sia stata completata correttamente verificando il valore provisioningState
nel risultato:
"provisioningState": "Succeeded",
Suggerimento
Se il comando restituisce un errore del provider di risorse, aggiungere Microsoft.EventGrid come provider di risorse alla sottoscrizione. È possibile eseguire questa operazione nel portale di Azure seguendo le istruzioni riportate in Registrare il provider di risorse.
Registrare il dispositivo simulato con l'hub IoT
In questa sezione viene creata una rappresentazione del dispositivo nell'hub IoT con l'ID thermostat67. Il dispositivo simulato si connetterà a questa rappresentazione, ovvero il modo in cui gli eventi di telemetria passeranno dal dispositivo all'hub IoT. L'hub IoT è il punto in cui la funzione di Azure sottoscritta dal passaggio precedente è in ascolto, pronta per raccogliere gli eventi e continuare l'elaborazione.
Nell'interfaccia della riga di comando di Azure creare un dispositivo nell'hub IoT con il comando seguente:
az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>
L'output è costituito da informazioni sul dispositivo creato.
Configurare ed eseguire la simulazione
Importante
Questo articolo include la procedura per connettere un dispositivo usando una firma di accesso condiviso, altrimenti chiamata autenticazione con chiave simmetrica. Questo metodo di autenticazione è comodo per i test e le valutazioni, ma l'autenticazione tramite certificati X.509 rappresenta un approccio più sicuro. Per scoprire di più, vedere Procedure consigliate per la sicurezza > Sicurezza della connessione.
Configurare quindi il simulatore del dispositivo per inviare dati all'istanza dell'hub IoT.
Per iniziare, ottenere la stringa di connessione dell'hub IoT con il comando seguente. Il valore della stringa di connessione inizierà con HostName=
.
az iot hub connection-string show --hub-name <your-IoT-hub-name>
Quindi, ottenere la stringa di connessione del dispositivo con questo comando:
az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>
Questi valori verranno quindi inseriti nel codice del simulatore del dispositivo nel progetto locale per connettere il simulatore a questo hub IoT e al dispositivo hub IoT.
Passare al computer locale alla cartella di esempio scaricata e alla cartella digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Aprire il file AzureIoTHub.cs per la modifica. Sostituire i valori della stringa di connessione seguente con quelli raccolti prima:
private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";
Salvare il file.
A questo punto, per visualizzare i risultati della simulazione dei dati configurata, aprire una nuova finestra della console locale e passare a digital-twins-samples-main\DeviceSimulator\DeviceSimulator.
Nota
A questo punto dovrebbero essere presenti due finestre della console aperte: una aperta alla cartella DeviceSimulator\DeviceSimulator e una precedente ancora aperta alla cartella AdtSampleApp\SampleClientApp.
Usare il comando dotnet seguente per eseguire il progetto simulatore di dispositivi:
dotnet run
Il progetto inizierà a eseguire e inizierà a visualizzare messaggi di telemetria della temperatura simulati. Questi messaggi vengono inviati all'hub IoT, dove vengono quindi prelevati ed elaborati dalla funzione di Azure.
Non è necessario eseguire altre operazioni in questa console, ma lasciarla in esecuzione mentre si completano i passaggi successivi.
Visualizzare i risultati in Gemelli digitali di Azure
La funzione ProcessHubToDTEvents pubblicata in precedenza resta in ascolto dei dati dell'hub IoT e chiama un'API di Gemelli digitali di Azure per aggiornare la proprietà Temperature
nel gemello thermostat67.
Per visualizzare i dati dal lato Gemelli digitali di Azure, passare alla finestra della console aperta alla cartella AdtSampleApp\SampleClientApp. Eseguire il progetto SampleClientApp con dotnet run
.
dotnet run
Quando il progetto è in esecuzione e accetta i comandi, eseguire il comando seguente per ottenere le temperature segnalate dal termostato del gemello digitale67:
ObserveProperties thermostat67 Temperature
Verranno visualizzate le temperature aggiornate in tempo reale dall'istanza di Gemelli digitali di Azure registrate nella console ogni due secondi. Devono riflettere i valori generati dal simulatore di dati (è possibile posizionare le finestre della console affiancate per verificare che i valori siano coordinati).
Nota
La propagazione dei dati dal dispositivo al gemello potrebbe richiedere alcuni secondi. Le prime letture di temperatura possono essere visualizzate come 0 prima dell'arrivo dei dati.
Dopo aver verificato che la registrazione della temperatura in tempo reale funziona correttamente, è possibile interrompere l'esecuzione di entrambi i progetti. Mantenere aperte le finestre della console, perché verranno usate di nuovo più avanti nell'esercitazione.
Propagare gli eventi di Gemelli digitali di Azure tramite il grafo
Finora in questa esercitazione è stato illustrato come aggiornare Gemelli digitali di Azure da dati di dispositivi esterni. Successivamente, si vedrà come propagare le modifiche apportate a un gemello digitale tramite il grafo di Gemelli digitali di Azure, in altri termini come aggiornare i gemelli da dati interni al servizio.
A tale scopo, si userà la funzione di Azure ProcessDTRoutedData per aggiornare un gemello Room quando viene aggiornato il gemello Termostato connesso. La funzionalità di aggiornamento si verifica in questa parte dello scenario end-to-end (freccia C):
Ecco le azioni che verranno completate per configurare questo flusso di dati:
- Creare un argomento di Griglia di eventi per abilitare lo spostamento dei dati tra i servizi di Azure
- Creare un endpoint in Gemelli digitali di Azure che connette l'istanza all'argomento Griglia di eventi
- Configurare una route all'interno di Gemelli digitali di Azure che invia eventi di modifica delle proprietà gemelle all'endpoint
- Configurare una funzione di Azure in ascolto sull'argomento griglia di eventi nell'endpoint, riceve gli eventi di modifica delle proprietà gemelli inviati e aggiorna di conseguenza altri gemelli nel grafico
Creare l'argomento Griglia di eventi
Griglia di eventi è un servizio di Azure che consente di instradare e recapitare gli eventi provenienti da servizi di Azure ad altre posizioni all'interno di Azure. È possibile creare un argomento di Griglia di eventi per raccogliere determinati eventi da un'origine. Quindi, i sottoscrittori possono restare in ascolto sull'argomento per ricevere gli eventi non appena vengono inviati.
Nell'interfaccia della riga di comando di Azure eseguire il comando seguente per creare un argomento di Griglia di eventi:
az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>
L'output di questo comando è costituito da informazioni sull'argomento di Griglia di eventi creato. Salvare il nome assegnato all'argomento di Griglia di eventi perché verrà usato in un secondo momento.
Creare l'endpoint
Creare quindi un endpoint di Griglia di eventi in Gemelli digitali di Azure che connetterà l'istanza all'argomento di Griglia di eventi. Usare il comando seguente, specificando il nome dell'argomento di Griglia di eventi del passaggio precedente e gli altri campi segnaposto in base alle esigenze.
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>
L'output di questo comando è costituito da informazioni sull'endpoint creato.
Cercare il campo provisioningState
nell'output e verificare che il valore sia "Succeeded".
Si può anche pronunciare "Provisioning", a indicare che l'endpoint è ancora in fase di creazione. In tal caso, attendere alcuni secondi ed eseguire il comando seguente per controllare lo stato dell'endpoint. Ripetere fino a quando provisioningState
non visualizza "Succeeded".
az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint>
Salvare il nome dell'endpoint perché verrà usato in un secondo momento.
Creare la route
Creare quindi una route di Gemelli digitali di Azure che invia eventi all'endpoint di Griglia di eventi creato.
Usare il comando dell'interfaccia della riga di comando seguente, specificando il nome dell'endpoint del passaggio precedente e gli altri campi segnaposto in base alle esigenze. Questo comando inoltra tutti gli eventi che si verificano nel grafico dei gemelli.
Suggerimento
È possibile limitare gli eventi solo a quelli specifici, se necessario, usando i filtri.
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>
L'output di questo comando è costituito da alcune informazioni sulla route creata.
Nota
È necessario completare il provisioning degli endpoint (del passaggio precedente) prima di poter configurare una route di eventi che li usi. Se la creazione della route non riesce perché gli endpoint non sono pronti, attendere qualche minuto e riprovare.
Connettere la funzione di Azure
Successivamente, sottoscrivere la funzione di Azure ProcessDTRoutedData all'argomento griglia di eventi creato in precedenza, in modo che i dati di telemetria possano essere trasmessi dal termostato67 tramite l'argomento Griglia di eventi alla funzione, che torna in Gemelli digitali di Azure e aggiorna di conseguenza il gemello room21.
A tale scopo, si creerà una sottoscrizione di Griglia di eventi che invia i dati dall'argomento griglia di eventi creato in precedenza alla funzione di Azure ProcessDTRoutedData.
Usare il comando dell'interfaccia della riga di comando seguente per creare la sottoscrizione di eventi. È disponibile un segnaposto per immettere un nome per questa sottoscrizione di eventi e sono disponibili anche segnaposto per immettere l'ID sottoscrizione, il gruppo di risorse, il nome dell'argomento di Griglia di eventi e il nome dell'app per le funzioni.
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
Eseguire la simulazione e visualizzare i risultati
Ora, gli eventi devono avere la possibilità di passare dal dispositivo simulato in Gemelli digitali di Azure e tramite il grafo di Gemelli digitali di Azure per aggiornare i gemelli in base alle esigenze. In questa sezione si eseguirà di nuovo il simulatore di dispositivi per avviare il flusso di eventi completo configurato ed eseguire una query su Gemelli digitali di Azure per visualizzare i risultati live
Passare alla finestra della console aperta alla cartella DeviceSimulator\DeviceSimulator ed eseguire il progetto del simulatore di dispositivi con dotnet run
.
Come la prima volta che è stato eseguito il simulatore di dispositivi, il progetto inizierà a eseguire e visualizzerà messaggi di telemetria della temperatura simulati. Questi eventi passano attraverso il flusso configurato in precedenza per aggiornare il gemello thermostat67 e quindi continuano a seguire il flusso configurato di recente per aggiornare il gemello room21 di conseguenza.
Non è necessario eseguire altre operazioni in questa console, ma lasciarla in esecuzione mentre si completano i passaggi successivi.
Per visualizzare i dati dal lato Gemelli digitali di Azure, passare alla finestra della console aperta alla cartella AdtSampleApp\SampleClientApp ed eseguire il progetto SampleClientApp con dotnet run
.
Quando il progetto è in esecuzione e accetta i comandi, eseguire il comando seguente per ottenere le temperature segnalate sia dal termostato del gemello digitale67 che dal gemello digitale room21.
ObserveProperties thermostat67 Temperature room21 Temperature
Verranno visualizzate le temperature aggiornate in tempo reale dall'istanza di Gemelli digitali di Azure registrate nella console ogni due secondi. Si noti che la temperatura per room21 viene aggiornata in base agli aggiornamenti di thermostat67.
Dopo aver verificato che la registrazione delle temperature in tempo reale dall'istanza funziona correttamente, è possibile interrompere l'esecuzione di entrambi i progetti. È anche possibile chiudere entrambe le finestre della console, perché l'esercitazione è stata completata.
Revisione
Ecco una revisione dello scenario compilato in questa esercitazione.
- Un'istanza di Gemelli digitali di Azure rappresenta digitalmente un piano, una stanza e un termostato (rappresentati dalla sezione A nel diagramma seguente)
- I dati di telemetria del dispositivo simulato vengono inviati all'hub IoT, dove la funzione di Azure ProcessHubToDTEvents resta in ascolto di eventi di telemetria. La funzione ProcessHubToDTEvents di Azure usa le informazioni contenute in questi eventi per impostare la proprietà
Temperature
su thermostat67 (freccia B nel diagramma). - Gli eventi di modifica delle proprietà in Gemelli digitali di Azure vengono instradati a un argomento di Griglia di eventi, dove la funzione di Azure ProcessDTRoutedData resta in ascolto di eventi. La funzione ProcessDTRoutedData di Azure usa le informazioni contenute in questi eventi per impostare la proprietà
Temperature
su room21 (freccia C nel diagramma).
Pulire le risorse
Dopo aver completato questa esercitazione, è possibile scegliere le risorse da rimuovere, a seconda delle operazioni da eseguire successivamente.
Se non sono necessarie risorse create in questa esercitazione, è possibile eliminare l'istanza di Gemelli digitali di Azure e tutte le altre risorse di questo articolo con il comando az group delete dell'interfaccia della riga di comando. In questo modo vengono eliminate tutte le risorse di Azure in un gruppo di risorse, nonché il gruppo di risorse stesso.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate.
Aprire Azure Cloud Shell o una finestra dell’interfaccia della riga di comando locale ed eseguire il comando seguente per eliminare il gruppo di risorse e tutti gli elementi contenuti al suo interno.
az group delete --name <your-resource-group>
Per continuare a usare l'istanza di Gemelli digitali di Azure configurata in questo articolo, ma cancellare alcuni o tutti i relativi modelli, gemelli e relazioni, è possibile usare i comandi dell'interfaccia della riga di comando di az dt per eliminare gli elementi da rimuovere.
Questa opzione non rimuoverà alcuna delle altre risorse di Azure create in questa esercitazione (hub IoT, app Funzioni di Azure e così via). È possibile eliminarli singolarmente usando i comandi dt appropriati per ogni tipo di risorsa.
È anche possibile eliminare la cartella del progetto dal computer locale.
Passaggi successivi
In questa esercitazione è stato creato uno scenario end-to-end che mostra un'istanza di Gemelli digitali di Azure basata su dati di dispositivo in tempo reale.
Quindi, iniziare a esaminare la documentazione concettuale per altre informazioni sugli elementi usati nell'esercitazione: