Självstudie: Skapa en lösning från slutpunkt till slutpunkt

Den här självstudien om Azure Digital Twins beskriver hur du skapar en lösning från slutpunkt till slutpunkt som visar tjänstens funktioner. Om du vill konfigurera en fullständig lösning från slutpunkt till slutpunkt som drivs av livedata från din miljö kan du ansluta din Azure Digital Twins-instans till andra Azure-tjänster för hantering av enheter och data.

I den här självstudien kommer du...

  • Konfigurera en Azure Digital Twins-instans
  • Lär dig mer om exempelbyggscenariot och instansiera de förskrivna komponenterna
  • Använda en Azure Functions-app för att dirigera simulerad telemetri från en IoT Hub-enhet till egenskaper för digital tvilling
  • Sprida ändringar via tvillingdiagrammet genom att bearbeta digitala tvillingmeddelanden med Azure Functions, slutpunkter och vägar

Förutsättningar

Innan du påbörjar den här självstudien börjar du med följande krav:

  • Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
  • I den här självstudien används .NET. Du kan ladda ned den senaste versionen av .NET SDK för flera plattformar från Ladda ned .NET.

Fortsätt sedan med resten av det här avsnittet för att konfigurera de återstående förutsättningarna.

Hämta exempelresurser

Självstudien drivs av ett Azure Digital Twins-exempelprojekt från slutpunkt till slutpunkt som skrivits i C#. Hämta exempelprojektet på datorn genom att gå till exempellänken och välja knappen Bläddra kod under rubriken.

Detta tar dig till GitHub-lagringsplatsen för exemplen, som du kan ladda ned som en .zip genom att välja knappen Kod följt av Ladda ned ZIP.

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a zip.

Då laddas en .zip-mapp ned till datorn som digital-twins-samples-main.zip. Packa upp mappen och extrahera filerna.

Förbereda en Azure Digital Twins-instans

För att arbeta med Azure Digital Twins i den här artikeln behöver du en Azure Digital Twins-instans och de behörigheter som krävs för att använda den. Om du redan har konfigurerat en Azure Digital Twins-instans kan du använda den instansen och gå vidare till nästa avsnitt. Annars följer du anvisningarna i Konfigurera en instans och autentisering. Anvisningarna innehåller information som hjälper dig att kontrollera att du har slutfört varje steg.

När du har konfigurerat instansen antecknar du instansens värdnamn. Du hittar värdnamnet i Azure-portalen.

Förbereda din miljö för Azure CLI

Konfigurera CLI-session

För att börja arbeta med Azure Digital Twins i CLI är det första du behöver göra att logga in och ange CLI-kontexten till din prenumeration för den här sessionen. Kör följande kommandon i CLI-fönstret:

az login
az account set --subscription "<your-Azure-subscription-ID>"

Dricks

Du kan också använda ditt prenumerationsnamn i stället för ID:t i kommandot ovan.

Om det är första gången du använder den här prenumerationen med Azure Digital Twins kör du det här kommandot för att registrera dig med Azure Digital Twins-namnområdet. (Om du inte är säker är det ok att köra den igen även om du har gjort det någon gång tidigare.)

az provider register --namespace 'Microsoft.DigitalTwins'

Därefter lägger du till Microsoft Azure IoT-tillägget för Azure CLI för att aktivera kommandon för att interagera med Azure Digital Twins och andra IoT-tjänster. Kör det här kommandot för att kontrollera att du har den senaste versionen av tillägget:

az extension add --upgrade --name azure-iot

Nu är du redo att arbeta med Azure Digital Twins i Azure CLI.

Du kan kontrollera detta genom att köra az dt --help när som helst för att se en lista över de högsta Azure Digital Twins-kommandona som är tillgängliga.

Konfigurera exempelprojektet

Konfigurera sedan ett exempelklientprogram som interagerar med din Azure Digital Twins-instans.

Navigera på datorn till mappen som du laddade ned tidigare från Azure Digital Twins-exempel från slutpunkt till slutpunkt (och packa upp den om du inte redan har gjort det).

I mappen navigerar du till digital-twins-samples-main\AdtSampleApp\SampleClientApp och öppnar filen appsettings.json . Den här JSON-filen innehåller en konfigurationsvariabel som krävs för att köra projektet.

I filtexten ändrar du till webbadressen instanceUrl till azure Digital Twins-instansens värdnamn (genom att lägga till https:// framför värdnamnet enligt nedan).

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

Spara och stäng filen.

Konfigurera lokala Azure-autentiseringsuppgifter

Det här exemplet använder DefaultAzureCredential (en del av biblioteket) för att autentisera Azure.Identity användare med Azure Digital Twins-instansen när du kör den på den lokala datorn. Mer information om olika sätt som en klientapp kan autentisera med Azure Digital Twins finns i Skriva kod för appautentisering.

Med DefaultAzureCredentialsöker exemplet efter autentiseringsuppgifter i din lokala miljö, till exempel en Azure-inloggning i ett lokalt Azure CLI eller i Visual Studio eller Visual Studio Code. Därför bör du logga in på Azure lokalt via någon av dessa mekanismer för att konfigurera autentiseringsuppgifter för exemplet.

Om du använder Visual Studio eller Visual Studio Code för att köra kodexempel kontrollerar du att du är inloggad i redigeringsprogrammet med samma Azure-autentiseringsuppgifter som du vill använda för att komma åt din Azure Digital Twins-instans. Om du använder ett lokalt CLI-fönster kör az login du kommandot för att logga in på ditt Azure-konto. När du sedan kör kodexemplet bör du autentiseras automatiskt.

Kom igång med byggscenariot

Exempelprojektet som används i den här självstudien representerar ett verkligt byggscenario som innehåller en våning, ett rum och en termostatenhet. Dessa komponenter representeras digitalt i en Azure Digital Twins-instans som sedan ansluts till IoT Hub, Event Grid och två Azure-funktioner för att möjliggöra förflyttning av data.

Nedan visas ett diagram som representerar hela scenariot.

Först skapar du Azure Digital Twins-instansen (avsnitt A i diagrammet) och konfigurerar sedan enhetens telemetridataflöde till digitala tvillingar (pil B) och konfigurerar sedan dataspridningen via tvillingdiagrammet (pil C).

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

För att gå igenom scenariot interagerar du med komponenterna i den förskrivna exempelappen som du laddade ned tidigare.

Här är de komponenter som implementeras av exempelappen För byggscenariot AdtSampleApp:

  • Enhetsautentisering
  • Användningsexempel för .NET (C#) SDK (finns i CommandLoop.cs)
  • Konsolgränssnitt för att anropa Azure Digital Twins-API:et
  • SampleClientApp – Ett exempel på En Azure Digital Twins-lösning
  • SampleFunctionsApp – en Azure Functions-app som uppdaterar ditt Azure Digital Twins-diagram baserat på enhetstelemetri från IoT Hub- och Azure Digital Twins-händelser

Instansiera det förskapade tvillingdiagrammet

Först ska du använda AdtSampleApp-lösningen från exempelprojektet för att skapa Azure Digital Twins-delen av scenariot från slutpunkt till slutpunkt (avsnitt A):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

Öppna ett lokalt konsolfönster och navigera till mappen digital-twins-samples-main\AdtSampleApp\SampleClientApp . Kör SampleClientApp-projektet med det här dotnet-kommandot:

dotnet run

Projektet börjar köras, utföra autentisering och vänta på ett kommando. I den här konsolen kör du nästa kommando för att instansiera Azure Digital Twins-exempellösningen.

Viktigt!

Om du redan har digitala tvillingar och relationer i din Azure Digital Twins-instans kommer det här kommandot att ta bort dem och ersätta dem med tvillingarna och relationerna för exempelscenariot.

SetupBuildingScenario

Utdata från det här kommandot är en serie bekräftelsemeddelanden när tre digitala tvillingar skapas och ansluts i din Azure Digital Twins-instans: en våning med namnet floor1, ett rum med namnet room21 och en temperatursensor med namnet thermostat67. Dessa digitala tvillingar representerar de entiteter som skulle finnas i en verklig miljö.

De är anslutna via relationer till följande tvillingdiagram. Tvillingdiagrammet representerar miljön som helhet, inklusive hur entiteterna interagerar med och relaterar till varandra.

Diagram showing that floor1 contains room21, and room21 contains thermostat67.

Du kan kontrollera tvillingarna som skapades genom att köra följande kommando, som frågar den anslutna Azure Digital Twins-instansen för alla digitala tvillingar som den innehåller:

Query

Nu kan du sluta köra projektet. Låt dock konsolfönstret vara öppet på den här platsen, eftersom du kommer att använda den här appen igen senare i självstudien.

Konfigurera exempelfunktionsappen

Nästa steg är att konfigurera en Azure Functions-app som ska användas i den här självstudien för att bearbeta data. Funktionsappen SampleFunctionsApp innehåller två funktioner:

  • ProcessHubToDTEvents: bearbetar inkommande IoT Hub-data och uppdaterar Azure Digital Twins i enlighet med detta
  • ProcessDTRoutedData: bearbetar data från digitala tvillingar och uppdaterar de överordnade tvillingarna i Azure Digital Twins i enlighet med detta

I det här avsnittet publicerar du den förskrivna funktionsappen och ser till att funktionsappen kan komma åt Azure Digital Twins genom att tilldela den en Microsoft Entra-identitet.

Funktionsappen är en del av exempelprojektet som du laddade ned, som finns i mappen digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp .

Publicera appen

Om du vill publicera funktionsappen till Azure måste du skapa ett lagringskonto, sedan skapa funktionsappen i Azure och slutligen publicera funktionerna i Azure-funktionsappen. Det här avsnittet slutför dessa åtgärder med hjälp av Azure CLI. I varje kommando ersätter du alla platshållare inom vinkelparenteser med information om dina egna resurser.

  1. Skapa ett Azure Storage-konto genom att köra följande kommando:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Skapa en Azure-funktionsapp genom att köra följande kommando:

    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 --runtime-version 7 --resource-group <resource-group>
    
  3. Därefter ska du zippa upp funktionerna och publicera dem till din nya Azure-funktionsapp.

    1. Öppna ett konsolfönster på datorn och navigera till mappen digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp i det nedladdade exempelprojektet.

    2. I -konsolen kör du följande kommando för att publicera projektet lokalt:

      dotnet publish -c Release -o publish
      

      Det här kommandot publicerar projektet till katalogen digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .

    3. Skapa en zip med de publicerade filer som finns ikatalogen digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish med önskad metod. Ge den zippade mappen namnet publish.zip.

      Viktigt!

      Kontrollera att den zippade mappen inte innehåller ett extra lager för själva publiceringsmappen. Den bör endast innehålla innehållet som fanns i publiceringsmappen.

      Här är en bild av hur zip-innehållet kan se ut (det kan ändras beroende på din version av .NET).

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

    Nu kan du stänga det lokala konsolfönstret som du använde för att förbereda projektet. Det sista steget görs i Azure CLI.

  4. I Azure CLI kör du följande kommando för att distribuera de publicerade och zippade funktionerna till din Azure-funktionsapp:

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    Dricks

    Om du använder Azure CLI lokalt kan du komma åt ZIP-filen på datorn direkt med hjälp av dess sökväg på datorn.

    Om du använder Azure Cloud Shell laddar du upp ZIP-filen till Cloud Shell med den här knappen innan du kör kommandot:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    I det här fallet laddas filen upp till rotkatalogen för Cloud Shell-lagringen, så du kan referera till filen direkt med dess namn för parametern --src för kommandot (som i , --src publish.zip).

    En lyckad distribution svarar med statuskod 202 och matar ut ett JSON-objekt som innehåller information om den nya funktionen. Du kan bekräfta att distributionen lyckades genom att leta efter det här fältet i resultatet:

    "provisioningState": "Succeeded",
    

Funktionerna bör nu publiceras till en funktionsapp i Azure. Du kan använda följande CLI-kommandon för att kontrollera att båda funktionerna har publicerats. Varje kommando har platshållare för resursgruppen och namnet på funktionsappen. Kommandona skriver ut information om funktionerna ProcessDTRoutedData och ProcessHubToDTEvents som har publicerats .

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

Därefter måste din funktionsapp ha rätt behörighet att komma åt din Azure Digital Twins-instans. Du konfigurerar den här åtkomsten i nästa avsnitt.

Konfigurera behörigheter för funktionsappen

Det finns två inställningar som måste anges för att funktionsappen ska få åtkomst till din Azure Digital Twins-instans, som båda kan göras med hjälp av Azure CLI.

Tilldela åtkomstroll

Den första inställningen ger funktionsappen rollen Azure Digital Twins-dataägare i Azure Digital Twins-instansen. Den här rollen krävs för alla användare eller funktioner som vill utföra många dataplansaktiviteter på instansen. Du kan läsa mer om säkerhets- och rolltilldelningar i Security for Azure Digital Twins-lösningar.

  1. Använd följande kommando för att skapa en systemtilldelad identitet för funktionen. Utdata visar information om den identitet som har skapats. Anteckna fältet principalId i utdata som ska användas i nästa steg.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Använd principalId-värdet i följande kommando för att tilldela funktionsappens identitet till Azure Digital Twins-dataägarrollen för Azure Digital-instansen.

    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"
    

Resultatet av det här kommandot matas ut information om rolltilldelningen som du har skapat. Funktionsappen har nu behörighet att komma åt data i din Azure Digital Twins-instans.

Konfigurera programinställning

Den andra inställningen skapar en miljövariabel för funktionen med URL:en för din Azure Digital Twins-instans. Funktionskoden använder värdet för den här variabeln för att referera till din instans. Mer information om miljövariabler finns i Hantera din funktionsapp.

Kör kommandot nedan och fyll i platshållarna med information om dina resurser.

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>"

Utdata är en lista över inställningar för Azure-funktionen, som nu ska innehålla en post med namnet ADT_SERVICE_URL.

Bearbeta simulerad telemetri från en IoT Hub-enhet

Ett Azure Digital Twins-diagram är tänkt att drivas av telemetri från verkliga enheter.

I det här steget ansluter du en simulerad termostatenhet som är registrerad i IoT Hub till den digitala tvilling som representerar den i Azure Digital Twins. När den simulerade enheten genererar telemetri dirigeras data via Azure-funktionen ProcessHubToDTEvents som utlöser en motsvarande uppdatering i den digitala tvillingen. På så sätt håller sig den digitala tvillingen uppdaterad med den verkliga enhetens data. I Azure Digital Twins kallas processen för att dirigera händelsedata från en plats till en annan routningshändelser.

Bearbetning av den simulerade telemetrin sker i den här delen av scenariot från slutpunkt till slutpunkt (pil B):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

Här är de åtgärder som du ska utföra för att konfigurera den här enhetsanslutningen:

  1. Skapa en IoT-hubb som hanterar den simulerade enheten
  2. Anslut IoT-hubben till rätt Azure-funktion genom att konfigurera en händelseprenumeration
  3. Registrera den simulerade enheten i IoT Hub
  4. Kör den simulerade enheten och generera telemetri
  5. Fråga Azure Digital Twins om du vill se liveresultatet

Skapa en IoT Hub-instans

Azure Digital Twins är utformat för att fungera tillsammans med IoT Hub, en Azure-tjänst för hantering av enheter och deras data. I det här steget konfigurerar du en IoT-hubb som hanterar exempelenheten i den här självstudien.

I Azure CLI använder du det här kommandot för att skapa en ny IoT-hubb:

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

Utdata från det här kommandot är information om IoT-hubben som skapades.

Spara namnet som du gav till din IoT-hubb. Du kommer att använda det senare.

Anslut IoT-hubben till Azure-funktionen

Anslut sedan din IoT-hubb till funktionen ProcessHubToDTEvents Azure i funktionsappen som du publicerade tidigare, så att data kan flöda från enheten i IoT Hub via funktionen, som uppdaterar Azure Digital Twins.

För att göra det skapar du en händelseprenumeration på din IoT Hub med Azure-funktionen som slutpunkt. Detta "prenumererar" funktionen på händelser som händer i IoT Hub.

Använd följande CLI-kommando för att skapa händelseprenumerationen. Det finns en platshållare där du kan ange ett namn för händelseprenumerationen och det finns även platshållare där du kan ange ditt prenumerations-ID, resursgrupp, IoT Hub-namn och namnet på din funktionsapp.

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

Utdata visar information om händelseprenumerationen som har skapats. Du kan bekräfta att åtgärden har slutförts genom att provisioningState verifiera värdet i resultatet:

"provisioningState": "Succeeded",

Dricks

Om kommandot returnerar ett resursproviderfel lägger du till Microsoft.EventGrid som resursprovider i din prenumeration. Du kan göra detta i Azure-portalen genom att följa anvisningarna i Registrera resursprovider.

Registrera den simulerade enheten med IoT Hub

Det här avsnittet skapar en enhetsrepresentation i IoT Hub med ID-termostaten67. Den simulerade enheten ansluter till den här representationen, vilket är hur telemetrihändelser kommer att gå från enheten till IoT Hub. IoT-hubben är den plats där den prenumerationsprenumererade Azure-funktionen från föregående steg lyssnar, redo att hämta händelserna och fortsätta bearbetningen.

I Azure CLI skapar du en enhet i IoT Hub med följande kommando:

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

Utdata är information om enheten som skapades.

Konfigurera och kör simuleringen

Konfigurera sedan enhetssimulatorn för att skicka data till IoT Hub-instansen.

Börja med att hämta IoT Hub-anslutningssträng med följande kommando. Värdet anslutningssträng börjar med HostName=.

az iot hub connection-string show --hub-name <your-IoT-hub-name>

Hämta sedan enhetens anslutningssträng med det här kommandot:

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

Anslut sedan dessa värden till enhetssimulatorkoden i ditt lokala projekt för att ansluta simulatorn till den här IoT-hubben och IoT Hub-enheten.

Navigera på den lokala datorn till den nedladdade exempelmappen och till mappen digital-twins-samples-main\DeviceSimulator\DeviceSimulator . Öppna filen AzureIoTHub.cs för redigering. Ändra följande anslutningssträng värden till de värden som du samlade in ovan:

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

Spara filen.

Om du nu vill se resultatet av den datasimulering som du har konfigurerat öppnar du ett nytt lokalt konsolfönster och navigerar till digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Kommentar

Du bör nu ha två öppna konsolfönster: ett som är öppet för mappen DeviceSimulator\DeviceSimulator och ett från tidigare som fortfarande är öppet för mappen AdtSampleApp\SampleClientApp .

Använd följande dotnet-kommando för att köra enhetssimulatorprojektet:

dotnet run

Projektet börjar köras och börjar visa telemetrimeddelanden för simulerad temperatur. Dessa meddelanden skickas till IoT Hub, där de sedan hämtas och bearbetas av Azure-funktionen.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

Du behöver inte göra något annat i den här konsolen, men låt det vara igång medan du slutför nästa steg.

Se resultatet i Azure Digital Twins

Funktionen ProcessHubToDTEvents som du publicerade tidigare lyssnar på IoT Hub-data och anropar ett Azure Digital Twins-API för att uppdatera Temperature egenskapen på termostat67-tvillingen.

Om du vill se data från Azure Digital Twins-sidan växlar du till det andra konsolfönstret som är öppet till mappen AdtSampleApp\SampleClientApp . Kör SampleClientApp-projektet med dotnet run.

dotnet run

När projektet har kört och accepterat kommandon kör du följande kommando för att få temperaturerna som rapporteras av den digitala tvillingtermostaten67:

ObserveProperties thermostat67 Temperature

Du bör se de liveuppdaterade temperaturerna från din Azure Digital Twins-instans loggas till konsolen varannan sekund. De bör återspegla de värden som datasimulatorn genererar (du kan placera konsolfönstren sida vid sida för att kontrollera att värdena samordnas).

Kommentar

Det kan ta några sekunder innan data från enheten sprids till tvillingen. De första temperaturavläsningarna kan visas som 0 innan data börjar tas emot.

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

När du har kontrollerat att loggningen för livetemperatur fungerar kan du sluta köra båda projekten. Håll konsolfönstren öppna eftersom du använder dem igen senare i självstudien.

Sprida Azure Digital Twins-händelser via diagrammet

Hittills i den här självstudien har du sett hur Azure Digital Twins kan uppdateras från externa enhetsdata. Härnäst får du se hur ändringar i en digital tvilling kan spridas via Azure Digital Twins-grafen – med andra ord hur du uppdaterar tvillingar från tjänstinterna data.

För att göra det använder du funktionen ProcessDTRoutedData Azure för att uppdatera en Rumstvilling när den anslutna termostattvillingen uppdateras. Uppdateringsfunktionen sker i den här delen av scenariot från slutpunkt till slutpunkt (pil C):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

Här är de åtgärder som du ska utföra för att konfigurera det här dataflödet:

  1. Skapa ett Event Grid-ämne för att möjliggöra förflyttning av data mellan Azure-tjänster
  2. Skapa en slutpunkt i Azure Digital Twins som ansluter instansen till Event Grid-ämnet
  3. Konfigurera en väg i Azure Digital Twins som skickar ändringshändelser för tvillingegenskaper till slutpunkten
  4. Konfigurera en Azure-funktion som lyssnar på Event Grid-ämnet vid slutpunkten, tar emot tvillingegenskapens ändringshändelser som skickas dit och uppdaterar andra tvillingar i diagrammet i enlighet med detta

Skapa Event Grid-ämnet

Event Grid är en Azure-tjänst som hjälper till att dirigera och leverera händelser från Azure-tjänster till andra platser i Azure. Du kan skapa ett Event Grid-ämne för att samla in vissa händelser från en källa och sedan kan prenumeranter lyssna på ämnet för att ta emot händelserna när de kommer igenom.

I Azure CLI kör du följande kommando för att skapa ett Event Grid-ämne:

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

Utdata från det här kommandot är information om det Event Grid-ämne som du har skapat. Spara namnet som du gav till event grid-ämnet eftersom du kommer att använda det senare.

Skapa slutpunkten

Skapa sedan en Event Grid-slutpunkt i Azure Digital Twins, som ansluter din instans till event grid-ämnet. Använd kommandot nedan och fyll i namnet på eventrutnätet från föregående steg och de andra platshållarfälten efter behov.

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>

Utdata från det här kommandot är information om slutpunkten som du har skapat.

Leta efter fältet provisioningState i utdata och kontrollera att värdet är "Lyckades".

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

Det kan också stå "Etablering", vilket innebär att slutpunkten fortfarande skapas. I så fall väntar du några sekunder och kör följande kommando för att kontrollera slutpunktens status. Upprepa tills visar provisioningState "Lyckades".

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

Spara namnetslutpunkten eftersom du kommer att använda den senare.

Skapa vägen

Skapa sedan en Azure Digital Twins-väg som skickar händelser till Event Grid-slutpunkten som du skapade.

Använd följande CLI-kommando och fyll i namnet på slutpunkten från föregående steg och de andra platshållarfälten efter behov. Det här kommandot vidarebefordrar alla händelser som inträffar i tvillingdiagrammet.

Dricks

Du kan begränsa händelserna till endast specifika händelser om du vill med hjälp av filter.

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>

Utdata från det här kommandot är viss information om den väg som du har skapat.

Kommentar

Slutpunkter (från föregående steg) måste vara slutförda etablering innan du kan konfigurera en händelseväg som använder dem. Om vägen inte kan skapas på grund av att slutpunkterna inte är klara väntar du några minuter och försöker sedan igen.

Anslut Azure-funktionen

Prenumerera sedan på funktionen ProcessDTRoutedData Azure till det Event Grid-ämne som du skapade tidigare, så att telemetridata kan flöda från termostat67-tvillingen via Event Grid-ämnet till funktionen, som går tillbaka till Azure Digital Twins och uppdaterar room21-tvillingen därefter.

För att göra det skapar du en Event Grid-prenumeration som skickar data från Event Grid-ämnet som du skapade tidigare till din ProcessDTRoutedData Azure-funktion.

Använd följande CLI-kommando för att skapa händelseprenumerationen. Det finns en platshållare där du kan ange ett namn för den här händelseprenumerationen och det finns även platshållare där du kan ange ditt prenumerations-ID, resursgrupp, namnet på event grid-ämnet och namnet på funktionsappen.

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

Kör simuleringen och se resultatet

Nu bör händelser ha möjlighet att flöda från den simulerade enheten till Azure Digital Twins och genom Azure Digital Twins-grafen för att uppdatera tvillingar efter behov. I det här avsnittet kör du enhetssimulatorn igen för att starta det fullständiga händelseflödet som du har konfigurerat och fråga Azure Digital Twins om du vill se liveresultatet

Gå till konsolfönstret som är öppet till mappen DeviceSimulator\DeviceSimulator och kör enhetssimulatorprojektet med dotnet run.

Precis som första gången du körde enhetssimulatorn börjar projektet köra och visa simulerade telemetrimeddelanden för temperatur. Dessa händelser går igenom det flöde som du konfigurerade tidigare för att uppdatera termostat 67-tvillingen och går sedan igenom flödet som du nyligen konfigurerade för att uppdatera tvillingen room21 så att den matchar.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

Du behöver inte göra något annat i den här konsolen, men låt det vara igång medan du slutför nästa steg.

Om du vill se data från Azure Digital Twins-sidan går du till det andra konsolfönstret som är öppet för mappen AdtSampleApp\SampleClientApp och kör SampleClientApp-projektet med dotnet run.

När projektet har kört och accepterat kommandon kör du följande kommando för att få temperaturerna rapporterade av både den digitala tvillingtermostaten67 och det digitala tvillingrummet21.

ObserveProperties thermostat67 Temperature room21 Temperature

Du bör se de liveuppdaterade temperaturerna från din Azure Digital Twins-instans loggas till konsolen varannan sekund. Observera att temperaturen för room21 uppdateras för att matcha uppdateringarna till termostat 67.

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

När du har kontrollerat att livetemperaturloggningen från din instans fungerar kan du sluta köra båda projekten. Du kan också stänga båda konsolfönstren eftersom självstudien nu är klar.

Granskning

Här är en genomgång av scenariot som du skapade i den här självstudien.

  1. En Azure Digital Twins-instans representerar digitalt en våning, ett rum och en termostat (representeras av avsnitt A i diagrammet nedan)
  2. Simulerad enhetstelemetri skickas till IoT Hub, där Azure-funktionen ProcessHubToDTEvents lyssnar efter telemetrihändelser. Funktionen ProcessHubToDTEvents Azure använder informationen i dessa händelser för att ange Temperature egenskapen på thermostat67 (pil B i diagrammet).
  3. Egenskapsändringshändelser i Azure Digital Twins dirigeras till ett Event Grid-ämne, där Funktionen ProcessDTRoutedData Azure lyssnar efter händelser. Funktionen ProcessDTRoutedData Azure använder informationen i dessa händelser för att ange Temperature egenskapen på room21 (pil C i diagrammet).

Diagram from the beginning of the article showing the full building scenario.

Rensa resurser

När du har slutfört den här självstudien kan du välja vilka resurser du vill ta bort, beroende på vad du vill göra härnäst.

  • Om du inte behöver någon av de resurser som du skapade i den här självstudien kan du ta bort Azure Digital Twins-instansen och alla andra resurser från den här artikeln med kommandot az group delete CLI. Detta tar bort alla Azure-resurser i en resursgrupp samt själva resursgruppen.

    Viktigt!

    Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser som ingår i den tas bort permanent. Var noga så att du inte tar bort fel resursgrupp eller resurser av misstag.

    Öppna Azure Cloud Shell eller ett lokalt CLI-fönster och kör följande kommando för att ta bort resursgruppen och allt den innehåller.

    az group delete --name <your-resource-group>
    
  • Om du vill fortsätta att använda Azure Digital Twins-instansen som du har konfigurerat i den här artikeln, men rensa bort några eller alla dess modeller, tvillingar och relationer, kan du använda az dt CLI-kommandona för att ta bort de element som du vill ta bort.

    Det här alternativet tar inte bort någon av de andra Azure-resurser som skapats i den här självstudien (IoT Hub, Azure Functions-appen och så vidare). Du kan ta bort dessa individuellt med hjälp av de dt-kommandon som är lämpliga för varje resurstyp.

Du kanske också vill ta bort projektmappen från den lokala datorn.

Nästa steg

I den här självstudien skapade du ett scenario från slutpunkt till slutpunkt som visar hur Azure Digital Twins drivs av realtidsdata för enheter.

Börja sedan titta på konceptdokumentationen för att lära dig mer om element som du arbetade med i självstudien: