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

Den Azure Digital Twins självstudien beskriver hur du skapar en lösning från end-to-end som visar tjänstens funktioner. Om du vill konfigurera en komplett lösning 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 att...

  • Konfigurera en Azure Digital Twins instans
  • Lär dig mer om exempelscenariot för att skapa en instans av de färdiga komponenterna
  • Använda en Azure Functions för att dirigera simulerad telemetri från en IoT Hub-enhet till egenskaper för digitala tvillingar
  • Sprida ändringar via tvillingdiagrammet genom att bearbeta meddelanden från digitala tvillingar med Azure Functions, slutpunkter och vägar

Förutsättningar

För att slutföra stegen i den här självstudien måste du först slutföra följande krav.

Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Hämta nödvändiga resurser

För att slutföra den här självstudien Visual Studio 2019, version 16.5 eller senare på utvecklingsdatorn. Om du redan har en äldre version installerad kan du öppna Visual Studio Installer-appen på datorn och följa anvisningarna för att uppdatera installationen.

Anteckning

Se till att installationen Visual Studio 2019 innehåller arbetsbelastningen Azure Development. Med den här arbetsbelastningen kan ett program publicera Azure-funktioner och utföra andra Azure-utvecklingsuppgifter.

Självstudien drivs av ett Azure Digital Twins exempelprojekt från slutet till slut som skrivits i C#. Hämta exempelprojektet på datorn genom att gå till exempellänken och välja knappen Bläddra efter kod under rubriken. Då kommer du till lagringsplatsen GitHub för exemplen, som du kan ladda ned som en .zip genom att välja knappen Kod följt av Ladda ned ZIP.

Skärmbild av lagringsplatsen digital-twins-samples GitHub lagringsplatsen med stegen för att ladda ned den som en zip-fil.

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

Förbereda en Azure Digital Twins instans

Om du vill Azure Digital Twins den här artikeln måste du först konfigurera en Azure Digital Twins instans. Du behöver också de behörigheter som krävs för att använda den. Om du redan har Azure Digital Twins en instans kan du använda den i stället.

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 ställt in din instans anteckning du följande värden. Du behöver dessa värden för att ansluta till instansen senare:

  • Instansens värdnamn. Du hittar värdnamnet i Azure Portal.
  • Den Azure-prenumeration som du använde för att skapa instansen. Antingen dess namn eller dess ID fungerar. Du hittar prenumerationen på sidan Översikt för din instans i Azure Portal.

Förbereda din miljö för Azure CLI

  • Använd bash-miljön i Azure Cloud Shell.

    Starta Cloud Shell i ett nytt fönster

  • Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.

    • Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.

    • När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.

    • Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.

Konfigurera Cloud Shell session

Om du vill Azure Digital Twins i ett öppet Azure Cloud Shell-fönster är det första du ska göra att logga in och ange gränssnittskontexten till din prenumeration för den här sessionen. Kör följande kommandon i Cloud Shell:

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

Tips

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

Nu ska du lägga till Microsoft Azure IoT-tillägget för Azure CLI i din Cloud Shell 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 Cloud Shell.

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

Konfigurera exempelprojektet

Konfigurera sedan ett exempelklientprogram som ska interagera med din Azure Digital Twins instans.

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

När du är i mappen navigerar du till AdtSampleApp. Öppna AdtE2ESample.sln i Visual Studio 2019.

I Visual Studio väljer du filen SampleClientApp > appsettings.jsför att öppna den i redigeringsfönstret. Detta fungerar som en förinställt JSON-fil med de konfigurationsvariabler som krävs för att köra projektet.

I filens brödtext ändrar du till din Azure Digital Twins-instansens instanceUrl värdnamns-URL (genom att lägga https:// framför värdnamnet, enligt nedan).

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

Spara och stäng filen.

Konfigurera sedan filen appsettings.jssom ska kopieras till utdatakatalogen när du skapar SampleClientApp. Det gör du genom att högerklicka appsettings.jspå filen och välja Egenskaper. I egenskapskontrollen letar du upp egenskapen Kopiera till utdatakatalog. Ändra värdet till Kopiera om det är nyare om det inte redan har angetts till det.

Skärmbild av Solution Explorer i Visual Studio med appsettings.jspå och egenskapen Kopiera till utdatakatalog markerad i Egenskaper.

Håll projektet AdtE2ESample öppet i Visual Studio att fortsätta använda det i självstudien.

Konfigurera lokala Azure-autentiseringsuppgifter

I det här exemplet används DefaultAzureCredential (en del av biblioteket) för att autentisera användare med Azure Digital Twins-instansen när du kör Azure.Identity 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 DefaultAzureCredential söker exemplet efter autentiseringsuppgifter i din lokala miljö, t. ex. 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 metoder för att ställa in autentiseringsuppgifter för exemplet.

Om du använder Visual Studio eller Visual Studio Code för att köra kod exemplet måste du kontrol lera att du är inloggad i redigeraren med samma Azure-autentiseringsuppgifter som du vill använda för att få åtkomst till Azure Digitals-instansen.

Annars kan du installera den lokala Azure CLI, starta en kommando tolk på datorn och köra az login kommandot för att logga in på ditt Azure-konto. När du har loggat in när du kör kod exemplet ska du logga in 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 ochtvå Azure-funktioner för att möjliggöra dataförflyttning.

Nedan visas ett diagram som representerar det fullständiga scenariot.

Först ska du skapa Azure Digital Twins-instansen ( avsnitt A i diagrammet) och sedan konfigurera telemetridataflödet till digitaltvillingarna (pil B) och sedan konfigurera dataspridningen via tvillingdiagrammet (pil C).

Diagram över hela byggscenariot, som visar data som flödar från en enhet till och från en Azure Digital Twins olika Azure-tjänster.

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

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

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

Instansiera den färdiga tvillinggrafen

Först använder du AdtSampleApp-lösningen från exempelprojektet för att skapa Azure Digital Twins del av scenariot från början till slut (avsnitt A):

Diagram över ett utdrag från det fullständiga scenariodiagrammet för byggnaden som visar Azure Digital Twins instansavsnittet.

I ditt Visual Studio där AdtE2ESample-projektet är öppet kör du projektet med den här knappen i verktygsfältet:

Skärmbild av Visual Studio startknappen med SampleClientApp-projektet öppet.

Ett konsolfönster öppnas, utför autentisering och väntar på ett kommando. I den här konsolen kör du nästa kommando för att skapa en instans av Azure Digital Twins lösning.

Viktigt

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

SetupBuildingScenario

Resultatet av 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 termostat67. 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 som visar att floor1 innehåller room21 och room21 innehåller termostat67.

Du kan verifiera tvillingarna som skapades genom att köra följande kommando, som frågar den anslutna Azure Digital Twins instansen efter alla digital twins som den innehåller:

Query

Anteckning

När du har gjort en ändring av data i diagrammet kan det ta upp till 10 sekunder innan ändringarna återspeglas i frågorna.

DigitalTwins-API:et återspeglar ändringar omedelbart, så om du behöver ett omedelbart svar använder du en API-begäran (DigitalTwins GetById)eller ett SDK-anrop (GetDigitalTwin) för att hämta tvillingdata i stället för en fråga.

Nu kan du sluta köra projektet. Håll lösningen öppen i Visual Studio, eftersom du kommer att fortsätta använda den under hela självstudien.

Konfigurera exempelfunktionsappen

Nästa steg är att konfigurera en Azure Functions 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 och uppdateringar Azure Digital Twins därefter
  • ProcessDTRoutedData: bearbetar data från digitala tvillingar och uppdaterar överordnade tvillingar i Azure Digital Twins enligt 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 Azure Active Directory-identitet (Azure AD). Om du slutför de här stegen kan resten av självstudien använda funktionerna i funktionsappen.

I fönstret Visual Studio där AdtE2ESample-projektet är öppet finns funktionsappen i projektfilen SampleFunctionsApp. Du kan visa den i Solution Explorer fönstret.

Uppdatera beroenden

Innan du publicerar appen är det en bra idé att se till att dina beroenden är uppdaterade, så att du har den senaste versionen av alla paket som ingår.

I fönstret Solution Explorer expanderar du SampleFunctionsApp > Beroenden. Högerklicka på Paket och välj Hantera NuGet-paket....

Skärmbild av Visual Studio visar menyknappen &quot;Hantera NuGet-paket&quot; för projektet SampleFunctionsApp.

Om du gör det öppnas NuGet Package Manager. Välj fliken Uppdateringar. Om det finns några paket som ska uppdateras markerar du kryssrutan för att Markera alla paket. Välj sedan Uppdatera.

Skärmbild av Visual Studio visar hur du väljer att uppdatera alla paket i NuGet Package Manager.

Publicera appen

För att publicera funktionsappen till Azure måste du först skapa ett lagringskonto, sedan skapa funktionsappen i Azure och slutligen publicera funktionerna i Azure-funktionsappen. Det här avsnittet slutför de här åtgärderna med hjälp av Azure CLI.

  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> --consumption-plan-location <location> --runtime dotnet --resource-group <resource-group>
    
  3. Nu ska du zippa upp funktionerna och publicera dem till din nya Azure-funktionsapp.

    1. Öppna en terminal som PowerShell på den lokala datorn och gå till lagringsplatsen Digital Twins exempel som du laddade ned tidigare i självstudien. I den nedladdade lagringsplatsen navigerar du till digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp.

    2. Kör följande kommando i terminalen för att publicera projektet:

      dotnet publish -c Release
      

      Det här kommandot publicerar projektet till katalogen digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp\bin\Release\netcoreapp3.1\publish.

    3. Skapa en zip-fil med de publicerade filerna som finns i katalogen digital-twins-samples-master\AdtSampleApp\SampleFunctionsApp\bin\Release\netcoreapp3.1\publish.

      Om du använder PowerShell kan du skapa zip-filen genom att kopiera den fullständiga sökvägen till katalogen \publish och klistra in den i följande kommando:

      Compress-Archive -Path <full-path-to-publish-directory>\* -DestinationPath .\publish.zip
      

      Cmdleten skapar enpublish.zip-fil på katalogplatsen för terminalen som innehåller en host.json-fil, samt lagerplatsen, ProcessDTRoutedData- och ProcessHubToDTEvents-katalogerna.

      Om du inte använder PowerShell och inte har åtkomst till cmdleten måste du zippa upp filerna med hjälp Compress-Archive av Utforskaren eller någon annan metod.

  4. I Azure CLI kör du följande kommando för att distribuera de publicerade och komprimerade 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>"
    

    Anteckning

    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 kommandot Azure Cloud Shell upp ZIP-filen till Cloud Shell med den här knappen innan du kör kommandot:

    Skärmbild av Azure Cloud Shell visar hur du laddar upp filer.

    I det här fallet laddas filen upp till rotkatalogen för din Cloud Shell-lagring, så du kan referera till filen direkt med dess namn för parametern för --src 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",
      ...
    }
    

Nu har du publicerat funktionerna till en funktionsapp i Azure.

Därefter måste funktionsappen ha rätt behörighet för 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 Azure Digital Twins instans, och 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 den 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 Säkerhet för Azure Digital Twins lösningar.

  1. Använd följande kommando för att se information om den system hanterade identiteten för funktionen. Anteckna principalId-fältet i utdata.

    az functionapp identity show --resource-group <your-resource-group> --name <your-function-app-name> 
    

    Anteckning

    Om resultatet är tomt i stället för att visa information om en identitet skapar du en ny system hanterad identitet för funktionen med hjälp av det här kommandot:

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>  
    

    Utdata visar sedan information om identiteten, inklusive det principalId-värde som krävs för nästa steg.

  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 --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

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

Konfigurera programinställningar

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

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 listan med 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

En Azure Digital Twins graf är avsedd att drivas av telemetri från verkliga enheter.

I det här steget ansluter du en simulerad termostatenhet som registrerats i IoT Hub digital twin som representerar den i Azure Digital Twins. När den simulerade enheten sänder telemetri dirigeras data via Azure-funktionen ProcessHubToDTEvents som utlöser en motsvarande uppdatering i den digitala tvillingen. På så sätt är 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 slutet till slut (pil B):

Diagram över ett utdrag från det fullständiga scenariodiagrammet för byggnaden med det avsnitt som visar element före Azure Digital Twins.

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

  1. Skapa en IoT-hubb som ska hantera den simulerade enheten
  2. Anslut IoT-hubben till lämplig 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 för att se liveresultat

Skapa en IoT Hub-instans

Azure Digital Twins är utformad för att fungera tillsammans IoT Hub, en Azure-tjänst för att hantera enheter och deras data. I det här steget ska du konfigurera en IoT-hubb som ska hantera exempelenheten i den här självstudien.

I Azure Cloud Shell 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 det namn som du gav IoT-hubben. Du kommer att använda det senare.

Anslut IoT-hubben till Azure-funktionen

Anslut sedan din IoT-hubb till Azure-funktionen ProcessHubToDTEvents 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. Den här funktionen "prenumererar" på händelser som inträffar i IoT Hub.

I Azure Portal navigerardu till den nya IoT-hubben genom att söka efter dess namn i det översta sökfältet. Välj Händelser på navmenyn och välj + Händelseprenumeration.

Skärmbild av Azure Portal visar IoT Hub händelseprenumerationen.

Om du väljer det här alternativet visas sidan Skapa händelseprenumeration.

Skärmbild av Azure Portal visar hur du skapar en händelseprenumeration.

Fyll i fälten enligt följande (fält som fylls i som standard nämns inte):

  • INFORMATION OM HÄNDELSEPRENUMERATION > Namn: Ge händelseprenumerationen ett namn.
  • ÄMNESINFORMATION > Systemämnesnamn: Ge ett namn som ska användas för systemämnet.
  • HÄNDELSETYPER > Filtrera till Händelsetyper: Välj Enhettelemetri från menyalternativen.
  • SLUTPUNKTSINFORMATION > Typ av slutpunkt: Välj Azure-funktion i menyalternativen.
  • SLUTPUNKTSINFORMATION > Slutpunkt: Välj länken Välj en slutpunkt så öppnas fönstret Välj Azure-funktion: Skärmbild av Azure Portal händelseprenumeration som visar fönstret för att välja en Azure-funktion.
    • Fyll i prenumerationen, resursgruppen, funktionsappen och funktionen (ProcessHubToDTEvents). Vissa av dessa värden kan fyllas i automatiskt när du har valt prenumerationen.
    • Välj Bekräfta val.

Gå tillbaka till sidan Skapa händelseprenumeration och välj Skapa.

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. Det är i IoT-hubben som den prenumererade Azure-funktionen från föregående steg lyssnar, redo att hämta händelserna och fortsätta bearbetningen.

I Azure Cloud Shell 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ängen med det här kommandot:

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>

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

I ett nytt Visual Studio öppnar du (från den nedladdade lösningsmappen) Enhetssimulator > DeviceSimulator.sln.

Anteckning

Du bör nu ha två Visual Studio windows, en med DeviceSimulator.sln och en från tidigare med AdtE2ESample.sln.

I fönstret Solution Explorer det nya Visual Studio väljer du DeviceSimulator/AzureIoTHub.cs för att öppna den i redigeringsfönstret. Ändra följande anslutningssträngsvärden till de värden som du samlade in ovan:

iotHubConnectionString = <your-hub-connection-string>
deviceConnectionString = <your-device-connection-string>

Spara filen.

Om du nu vill se resultatet av datasimuleringen som du har skapat kör du DeviceSimulator-projektet med den här knappen i verktygsfältet:

Skärmbild av Visual Studio startknappen med DeviceSimulator-projektet öppet.

Ett konsolfönster öppnas och visar simulerade telemetrimeddelanden för temperatur. Dessa meddelanden skickas till IoT Hub, där de sedan hämtas och bearbetas av Azure-funktionen.

Skärmbild av konsolens utdata från enhetssimulatorn som visar temperaturtelemetri som skickas.

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

Se resultaten 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 egenskapen Temperature på termostat67-tvillingen.

Om du vill se data Azure Digital Twins sidan går du till Visual Studio där AdtE2ESample-projektet är öppet och kör projektet.

I projektkonsolfönstret som öppnas kör du följande kommando för att hämta temperaturerna som rapporteras av digitaltvillingens termostat67:

ObserveProperties thermostat67 Temperature

Du bör se de live-uppdaterade temperaturerna Azure Digital Twins instansen loggas i konsolen varannan sekund.

Anteckning

Det kan ta några sekunder för data från enheten att spridas till tvillingen. De första temperaturavläsningarna kan visa som 0 innan data börjar ankomma.

Skärmbild av konsolens utdata som visar loggen med temperaturmeddelanden från digital twin termostat67.

När du har kontrollerat att loggning av livetemperaturer fungerar kan du sluta köra båda projekten. Håll Visual Studio öppna eftersom du kommer att fortsätta använda dem i resten av 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. Därefter får du se hur ändringar i en digital tvilling kan spridas via Azure Digital Twins-diagrammet, med andra ord hur du uppdaterar tvillingar från interna tjänstdata.

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

Diagram över ett utdrag från det fullständiga scenariodiagrammet för byggnaden med det avsnitt som visar elementen efter Azure Digital Twins.

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

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

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 går igenom.

I Azure Cloud Shell 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 event grid-ämnet som du har skapat. Spara det namn som du gav event grid-ämnet eftersom du kommer att använda det senare.

Skapa slutpunkten

Skapa sedan en Event Grid i Azure Digital Twins, som ansluter din instans till event grid-ämnet. Använd kommandot nedan och fyll i namnet på event grid-ämnet 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 den slutpunkt som du har skapat.

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

Skärmbild av resultatet av slutpunktsfrågan i Cloud Shell i Azure Portal, som visar slutpunkten med provisioningState som Lyckades.

Det kan också vara "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 provisioningState tills visar "Lyckades".

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

Spara namnet på slutpunkten eftersom du kommer att använda det senare.

Skapa vägen

Skapa sedan en Azure Digital Twins som skickar händelser till den slutpunkt Event Grid som du nyss skapade.

Detta kan göras med följande CLI-kommando (fyll i namnet på slutpunkten och de andra platshållarfälten efter behov). Det här kommandot vidarebefordrar alla händelser som inträffar i tvillingdiagrammet. 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.

Anteckning

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

Anslut Azure-funktionen

Prenumerera sedan på Azure-funktionen ProcessDTRoutedData till event grid-ämnet som du skapade tidigare, så att telemetridata kan flöda från termostaten67-tvillingen genom 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 Azure-funktionen ProcessDTRoutedData.

I Azure Portal dutill event grid-ämnet genom att söka efter dess namn i det översta sökfältet. Välj + Händelseprenumeration.

Skärmbild av Azure Portal visar hur du skapar en Event Grid händelseprenumeration.

Stegen för att skapa den här händelseprenumerationen liknar när du prenumererar på den första Azure-funktionen som du IoT Hub i den här självstudien. Den här gången behöver du inte ange Enhettelemetri som händelsetyp att lyssna efter och du ansluter till en annan Azure-funktion.

På sidan Skapa händelseprenumeration fyller du i fälten enligt följande (fält som fyllts i som standard nämns inte):

  • INFORMATION OM HÄNDELSEPRENUMERATION > Namn: Ge händelseprenumerationen ett namn.
  • SLUTPUNKTSINFORMATION > Typ av slutpunkt: Välj Azure-funktion i menyalternativen.
  • SLUTPUNKTSINFORMATION > Slutpunkt: Välj länken Välj en slutpunkt så öppnas fönstret Välj Azure-funktion:
    • Fyll i din prenumeration, resursgrupp, funktionsapp och funktion (ProcessDTRoutedData). Vissa av dessa värden kan fyllas i automatiskt när du har valt prenumerationen.
    • Välj Bekräfta val.

Gå tillbaka till sidan Skapa händelseprenumeration och välj Skapa.

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 för att uppdatera tvillingarna 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 skapat och fråga efter Azure Digital Twins att se liveresultat

Gå till Visual Studio där DeviceSimulator-projektet är öppet och kör projektet.

Precis som när du körde enhetssimulatorn tidigare öppnas ett konsolfönster med simulerade telemetrimeddelanden om temperatur. Dessa händelser går igenom flödet som du konfigurerade tidigare för att uppdatera termostat67-tvillingen och går sedan igenom flödet som du konfigurerade nyligen för att uppdatera room21-tvillingen så att den matchar.

Skärmbild av konsolens utdata från enhetssimulatorn som visar temperaturtelemetri som skickas.

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

Om du vill se data Azure Digital Twins sidan går du till Visual Studio där Projektet AdtE2ESample är öppet och kör projektet.

I projektkonsolfönstret som öppnas kör du följande kommando för att få temperaturerna som rapporteras av både den digitala tvillingens termostat67 och det digitala tvillingrummet21.

ObserveProperties thermostat67 Temperature room21 Temperature

Du bör se de live-uppdaterade temperaturerna Azure Digital Twins instansen loggas i konsolen varannan sekund. Observera att temperaturen för rum21 uppdateras för att matcha uppdateringarna till termostat67.

Skärmbild av konsolens utdata som visar en logg med temperaturmeddelanden, från en termostat och ett rum.

När du har kontrollerat att loggning av livetemperaturer från din instans fungerar kan du sluta köra båda projekten. Du kan också stänga Visual Studio windows eftersom självstudien nu är klar.

Genomgång

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

  1. En Azure Digital Twins instans digitalt representerar ett golv, ett rum och en termostat (representeras av avsnitt A i diagrammet nedan)
  2. Telemetri för simulerad enhet skickas till IoT Hub, där Azure-funktionen ProcessHubToDTEvents lyssnar efter telemetrihändelser. Azure-funktionen ProcessHubToDTEvents använder informationen i dessa händelser för att ange egenskapen Temperature på termostat67 (pilen B i diagrammet).
  3. Händelser för egenskapsändring i Azure Digital Twins dirigeras till ett Event Grid-ämne, där Azure-funktionen ProcessDTRoutedData lyssnar efter händelser. Azure-funktionen ProcessDTRoutedData använder informationen i dessa händelser för att ange egenskapen Temperature på room21 (pilen C i diagrammet).

Diagram över det fullständiga byggscenariot, som visar data som flödar från en enhet till och från en Azure Digital Twins via olika Azure-tjänster.

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. 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 Shelloch kör följande kommando för att ta bort resursgruppen och allt som den innehåller.

    az group delete --name <your-resource-group>
    
  • Om du vill fortsätta att använda den Azure Digital Twins-instans som du konfigurerade i den här artikeln, men rensa vissa eller alla dess modeller, tvillingar och relationer, kan du använda az dt CLI-kommandona i ett Azure Cloud Shell-fönster för att ta bort de element som du vill ta bort.

    Det här alternativet tar inte bort några av de andra Azure-resurserna som skapades i den här självstudien (IoT Hub, Azure Functions app 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 slutet till slut som visar Azure Digital Twins av liveenhetsdata.

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