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 del gemello elaborando le notifiche di 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.

Screenshot del repository digital-twins-samples in GitHub, con evidenziati i passaggi per il download come file 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

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 hub IoT, Griglia di eventi e due funzioni di Azure per abilitare lo spostamento dei dati.

Di seguito è riportato un diagramma che rappresenta lo scenario completo.

Si creerà prima di tutto l'istanza di Gemelli digitali di Azure (sezione A nel diagramma), quindi si configurerà il flusso dei dati di telemetria del dispositivo nei gemelli digitali (freccia B), quindi si configurerà la propagazione dei dati tramite il grafico gemello (freccia C).

Diagramma dello scenario di compilazione completo, che mostra il flusso di dati da un dispositivo in e in uscita da Gemelli digitali di Azure tramite vari servizi di Azure.

Per eseguire lo scenario, si interagirà con i componenti dell'app di esempio scritta precedentemente scaricata.

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 Funzioni di Azure che aggiorna il grafo di Gemelli digitali di Azure in base ai dati di telemetria dei dispositivi da eventi di hub IoT e Gemelli digitali di Azure

Creare un'istanza del grafo dei gemelli creato in precedenza

Prima di tutto, si userà la soluzione AdtSampleApp del progetto di esempio per compilare la parte di Gemelli digitali di Azure dello scenario end-to-end (sezione A):

Diagramma di un estratto del diagramma dello scenario di compilazione completo che evidenzia la sezione Istanza di Gemelli digitali di Azure.

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 in quanto vengono creati e connessi tre gemelli digitali nell'istanza di Gemelli digitali di Azure: un piano denominato floor1, una stanza denominata room21 e un sensore di temperatura denominato thermostat67. Questi gemelli digitali rappresentano le entità che esisterebbero in un ambiente reale.

Sono connessi tramite relazioni nel grafico dei gemelli seguente. Il grafo dei gemelli rappresenta l'ambiente nel suo complesso, incluso il modo in cui le entità interagiscono e sono correlate tra loro.

Diagramma che mostra che floor1 contiene room21 e room21 contiene termostato67.

È 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.

  1. 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
    
  2. 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>
    
  3. Successivamente, si comprimeranno le funzioni e le si pubblicherà nella nuova app per le funzioni di Azure.

    1. 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.

    2. 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 .

    3. 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).

      Screenshot di Esplora file in Windows che mostra il contenuto della cartella zip di pubblicazione.

    L'ultimo passaggio verrà eseguito nell'interfaccia della riga di comando di Azure.

  4. 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 :

    Screenshot di Azure Cloud Shell che evidenzia come caricare i file.

    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 --src parametro del comando (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 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 Sicurezza per Gemelli digitali di Azure.

  1. 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>
    
  2. 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 si connetterà un dispositivo termostato simulato registrato in hub IoT 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):

Diagramma di un estratto del diagramma dello scenario di compilazione completo che evidenzia la sezione che mostra gli elementi prima di Gemelli digitali di Azure.

Ecco le azioni che verranno completate per configurare questa connessione al dispositivo:

  1. Creare un hub IoT che gestirà il dispositivo simulato
  2. Connettere l'hub IoT alla funzione di Azure appropriata configurando una sottoscrizione di eventi
  3. Registrare il dispositivo simulato nell'hub IoT
  4. Eseguire il dispositivo simulato e generare dati di telemetria
  5. 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 in 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, si creerà una sottoscrizione di eventi nel 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 provisioningState valore 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 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 a 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 in 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

Configurare quindi il simulatore del dispositivo per inviare dati all'istanza dell'hub IoT.

Per iniziare, ottenere l'hub IoT stringa di connessione con il comando seguente. Il valore 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>

Collegare quindi questi valori al codice del simulatore di dispositivi nel progetto locale per connettere il simulatore a questo hub IoT e al dispositivo dell'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 a hub IoT, dove vengono quindi prelevati ed elaborati dalla funzione di Azure.

Screenshot dell'output della console del simulatore di dispositivi che mostra i dati di telemetria relativi alla temperatura inviati.

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 è in ascolto dei dati hub IoT e chiama un'API di Gemelli digitali di Azure per aggiornare la Temperature proprietà 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

Le temperature aggiornate in tempo reale dell'istanza di Gemelli digitali di Azure verranno 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.

Screenshot dell'output della console che mostra il log dei messaggi di temperatura dal termostato del gemello digitale67.

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):

Diagramma di un estratto del diagramma dello scenario di compilazione completo che evidenzia la sezione che mostra gli elementi dopo Gemelli digitali di Azure.

Ecco le azioni che verranno completate per configurare questo flusso di dati:

  1. Creare un argomento di Griglia di eventi per abilitare lo spostamento dei dati tra i servizi di Azure
  2. Creare un endpoint in Gemelli digitali di Azure che connette l'istanza all'argomento griglia di eventi
  3. Configurare una route all'interno di Gemelli digitali di Azure che invia eventi di modifica delle proprietà del dispositivo gemello all'endpoint
  4. Configurare una funzione di Azure in ascolto sull'argomento griglia di eventi nell'endpoint, riceve gli eventi di modifica delle proprietà del dispositivo gemello 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 distribuire eventi dai 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 e quindi i sottoscrittori possono restare in ascolto sull'argomento per ricevere gli eventi man mano che arrivano.

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 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 provisioningState campo nell'output e verificare che il valore sia "Succeeded".

Screenshot del risultato della query dell'endpoint in Cloud Shell del portale di Azure, che mostra l'endpoint con provisioningState 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 non provisioningState viene visualizzato il messaggio "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 dispositivo gemello thermostat67 tramite l'argomento Griglia di eventi alla funzione, che torna a 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.

Screenshot dell'output della console del simulatore di dispositivi che mostra i dati di telemetria relativi alla temperatura inviati.

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

Le temperature aggiornate in tempo reale dell'istanza di Gemelli digitali di Azure verranno registrate nella console ogni due secondi. Si noti che la temperatura per room21 viene aggiornata in base agli aggiornamenti di thermostat67.

Screenshot dell'output della console che mostra un log dei messaggi di temperatura, da un termostato e da una stanza.

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.

  1. Un'istanza di Gemelli digitali di Azure rappresenta digitalmente un piano, una stanza e un termostato (rappresentati dalla sezione A nel diagramma seguente)
  2. 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 di Azure ProcessHubToDTEvents usa le informazioni contenute in questi eventi per impostare la Temperature proprietà su thermostat67 (freccia B nel diagramma).
  3. Gli eventi di modifica delle proprietà in Gemelli digitali di Azure vengono indirizzati a un argomento di Griglia di eventi, in cui la funzione di Azure ProcessDTRoutedData è in ascolto degli eventi. La funzione di Azure ProcessDTRoutedData usa le informazioni contenute in questi eventi per impostare la Temperature proprietà in room21 (freccia C nel diagramma).

Diagramma dall'inizio dell'articolo che mostra lo scenario di compilazione completo.

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 az dt CLI per eliminare gli elementi da rimuovere.

    Questa opzione non rimuoverà alcuna delle altre risorse di Azure create in questa esercitazione (hub IoT, Funzioni di Azure'app 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: