Zelfstudie: Een end-to-end-oplossing bouwen

In deze zelfstudie over Azure Digital Twins wordt beschreven hoe u een end-to-end-oplossing bouwt die de functionaliteit van de service demonstreert. Om een volledige end-to-end oplossing op basis van live data uit uw omgeving op te zetten, kunt u uw Azure Digital Twins-instantie verbinden met andere Azure-services voor het beheer van apparaten en data.

In deze zelfstudie gaat u...

  • Een Azure Digital Twins-instantie instellen
  • Het voorbeeldgebouwscenario leren kennen en de vooraf geschreven componenten instantiëren
  • Een Azure Functions-app gebruiken om gesimuleerde telemetrie te routeren van een IoT Hub-apparaat naar digitale-tweelingeigenschappen
  • Wijzigingen doorgeven via de tweelinggrafiek door digitale dubbelmeldingen te verwerken met Azure Functions, eindpunten en routes

Vereisten

Voordat u aan deze zelfstudie begint, begint u met deze vereisten:

  • Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
  • In deze zelfstudie wordt .NET gebruikt. U kunt de nieuwste versie van de .NET SDK voor meerdere platforms downloaden via .NET downloaden.

Ga vervolgens door met de rest van deze sectie om de resterende vereisten in te stellen.

Voorbeeldbronnen ophalen

De zelfstudie wordt aangestuurd door een end-to-end azure Digital Twins-voorbeeldproject dat is geschreven in C#. Haal het voorbeeldproject op uw computer op door naar de voorbeeldkoppeling te navigeren en de knop Code bladeren onder de titel te selecteren.

Hiermee gaat u naar de GitHub-opslagplaats voor de voorbeelden, die u kunt downloaden als een .zip-bestand door de knop Code te selecteren, gevolgd door ZIP downloaden.

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

Hiermee wordt een .zip-map naar uw computer gedownload als digital-twins-samples-main.zip. Pak de map uit en extraheer de bestanden.

Een Azure Digital Twins-exemplaar voorbereiden

Als u met Azure Digital Twins in dit artikel wilt werken, hebt u een Azure Digital Twins-exemplaar en de vereiste machtigingen nodig om deze te gebruiken. Als u al een Azure Digital Twins-exemplaar hebt ingesteld, kunt u dat exemplaar gebruiken en doorgaan naar de volgende sectie. Volg anders de instructies in Een instantie en verificatie instellen. De instructies bevatten informatie om te controleren of u elke stap hebt voltooid.

Nadat u uw exemplaar hebt ingesteld, noteert u de hostnaam van het exemplaar. U vindt de hostnaam in Azure Portal.

De omgeving voorbereiden op de Azure CLI

CLI-sessie instellen

Als u met Azure Digital Twins in de CLI wilt werken, moet u zich eerst aanmelden en de CLI-context instellen op uw abonnement voor deze sessie. Voer deze opdrachten uit in het CLI-venster:

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

Tip

U kunt ook de naam van uw abonnement in plaats van de ID gebruiken in de bovenstaande opdracht.

Als dit de eerste keer is dat u dit abonnement met Azure Digital Twins gebruikt, voert u deze opdracht uit om u te registreren bij de naamruimte van Azure Digital Twins. (Als u het niet zeker weet, kunt u de opdracht opnieuw uitvoeren, zelfs als u dit in het verleden een keer hebt gedaan.)

az provider register --namespace 'Microsoft.DigitalTwins'

Vervolgens voegt u de Microsoft Azure IoT-extensie voor Azure CLI toe om opdrachten in te schakelen voor interactie met Azure Digital Twins en andere IoT-services. Voer deze opdracht uit om te controleren of u de nieuwste versie van de extensie hebt:

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

U bent nu klaar om te werken met Azure Digital Twins in de Azure CLI.

U kunt dit controleren door az dt --help op elk gewenst moment uit te voeren om een lijst weer te geven van de Azure Digital Twins-opdrachten op het hoogste niveau die beschikbaar zijn.

Het voorbeeldproject configureren

Stel vervolgens een voorbeeldclienttoepassing in die gaat communiceren met uw instantie van Azure Digital Twins.

Navigeer op uw computer naar de map die u eerder hebt gedownload van end-to-end-voorbeelden van Azure Digital Twins (en pak deze uit als u dat nog niet hebt gedaan).

Navigeer in de map naar digital-twins-samples-main\AdtSampleApp\SampleClientApp en open het bestand appsettings.json . Dit JSON-bestand bevat een configuratievariabele die nodig is om het project uit te voeren.

Wijzig in de hoofdtekst van het bestand de URL van de instanceUrl hostnaam van uw Azure Digital Twins-exemplaar (door https:// toe te voegen vóór de hostnaam, zoals hieronder wordt weergegeven).

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

Sla het bestand op en sluit het bestand.

Lokale Azure-referenties instellen

In dit voorbeeld wordt gebruikgemaakt van DefaultAzureCredential (onderdeel van de Azure.Identity-bibliotheek) om gebruikers te verifiëren bij de Azure Digital Twins-instantie wanneer u deze uitvoert op uw lokale machine. Voor meer informatie over verschillende manieren waarop een client-app kan verifiëren met Azure Digital Twins, raadpleegt u Verificatiecode voor app schrijven.

Met DefaultAzureCredential zoekt het voorbeeld naar referenties in uw lokale omgeving, zoals een Azure-aanmelding in een lokale Azure-CLI of in Visual Studio of Visual Studio Code. Daarom moet u zich lokaal aanmelden bij Azure via een van deze mechanismen om referenties in te stellen voor het voorbeeld.

Als u Visual Studio of Visual Studio Code gebruikt om codevoorbeelden uit te voeren, moet u ervoor zorgen dat u bent aangemeld bij die editor met dezelfde Azure-referenties die u wilt gebruiken voor toegang tot uw Azure Digital Twins-exemplaar. Als u een lokaal CLI-venster gebruikt, voert u de az login opdracht uit om u aan te melden bij uw Azure-account. Daarna moet u, wanneer u het codevoorbeeld uitvoert, automatisch worden geverifieerd.

Aan de slag met het gebouwscenario

Het voorbeeldproject dat in deze zelfstudie wordt gebruikt, is een realistisch gebouwscenario dat een verdieping, een ruimte en een thermostaatapparaat bevat. Deze onderdelen worden digitaal weergegeven in een Azure Digital Twins-exemplaar, dat vervolgens wordt verbonden met IoT Hub, Event Grid en twee Azure-functies om het verplaatsen van gegevens mogelijk te maken.

Hieronder ziet u een diagram dat het volledige scenario weergeeft.

Eerst maakt u het Azure Digital Twins-exemplaar (sectie A in het diagram) en stelt u vervolgens de telemetriegegevens van het apparaat in de digitale dubbels (pijl B) in en stelt u de gegevensdoorgifte in via de dubbelgrafiek (pijl 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.

Als u het scenario wilt doorlopen, werkt u met onderdelen van de vooraf geschreven voorbeeld-app die u eerder hebt gedownload.

Hier volgen de onderdelen die worden geïmplementeerd door de voorbeeld-app AdtSampleApp van het gebouwscenario:

  • Apparaatverificatie
  • .NET (C#) SDK-gebruiksvoorbeelden (te vinden in CommandLoop.cs)
  • Console-interface voor het aanroepen van de Azure Digital Twins-API
  • SampleClientApp: een voorbeeld van een Azure Digital Twins-oplossing
  • SampleFunctionsApp - Een Azure Functions-app die uw Azure Digital Twins-grafiek bijwerkt op basis van apparaattelemetrie van IoT Hub en Azure Digital Twins-gebeurtenissen

De vooraf gemaakte tweelinggrafiek instantiëren

Eerst gebruikt u de AdtSampleApp-oplossing van het voorbeeldproject om het Azure Digital Twins-gedeelte van het end-to-end scenario (sectie A) te bouwen:

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

Open een lokaal consolevenster en navigeer naar de map digital-twins-samples-main\AdtSampleApp\SampleClientApp . Voer het SampleClientApp-project uit met deze dotnet-opdracht:

dotnet run

Het project wordt uitgevoerd, voert verificatie uit en wacht op een opdracht. Voer in deze console de volgende opdracht uit om de Azure Digital Twins-voorbeeldoplossing te instantiëren.

Belangrijk

Als u al digitale tweelingen en relaties in uw Azure Digital Twins-instantie hebt, worden die door deze opdracht verwijderd en vervangen door de tweelingen en relaties voor het voorbeeldscenario.

SetupBuildingScenario

De uitvoer van deze opdracht is een reeks bevestigingsberichten omdat er drie digitale dubbels worden gemaakt en verbonden in uw Azure Digital Twins-exemplaar: een vloer met de naam floor1, een ruimte met de naam room21 en een temperatuursensor met de naam thermostat67. Deze digitale tweelingen vertegenwoordigen de entiteiten die zouden bestaan in een werkelijke omgeving.

Ze zijn verbonden via relaties in de volgende dubbelgrafiek. De tweelinggrafiek vertegenwoordigt de omgeving als geheel, met inbegrip van de relaties tussen de entiteiten en de manier waarop ze met elkaar interageren.

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

U kunt de gemaakte tweelingen verifiëren door de volgende opdracht uit te voeren, waarmee alle digitale tweelingen uit de verbonden Azure Digital Twins-instantie worden opgevraagd:

Query

U kunt nu stoppen met het uitvoeren van het project. Houd het consolevenster echter open op deze locatie, omdat u deze app later in de zelfstudie opnieuw gebruikt.

De voorbeeldfunctie-app instellen

De volgende stap is het instellen van een Azure Functions-app- die tijdens deze zelfstudie wordt gebruikt om gegevens te verwerken. De functie-app, SampleFunctionsApp, bevat twee functies:

  • ProcessHubToDTEvents: verwerkt inkomende IoT Hub-gegevens en werkt Azure Digital Twins dienovereenkomstig bij
  • ProcessDTRoutedData: verwerkt gegevens van digitale tweelingen en werkt de bovenliggende tweelingen in Azure Digital Twins dienovereenkomstig bij

In deze sectie publiceert u de vooraf geschreven functie-app en zorgt u ervoor dat de functie-app toegang heeft tot Azure Digital Twins door deze toe te wijzen aan een Microsoft Entra-identiteit.

De functie-app maakt deel uit van het voorbeeldproject dat u hebt gedownload, in de map digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp .

Publiceer de app.

Als u de functie-app naar Azure wilt publiceren, moet u een opslagaccount maken, vervolgens de functie-app in Azure maken en ten slotte de functies publiceren naar de Azure-functie-app. In deze sectie worden deze acties voltooid met behulp van de Azure CLI. Vervang in elke opdracht tijdelijke aanduidingen tussen punthaken door de details voor uw eigen resources.

  1. Maak een Azure-opslagaccount door de volgende opdracht uit te voeren:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Maak een Azure-functie-app door de volgende opdracht uit te voeren:

    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. Vervolgens gaat u de functies zippen en publiceren naar uw nieuwe Azure-functie-app.

    1. Open een consolevenster op uw computer en navigeer naar de map digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp in uw gedownloade voorbeeldproject.

    2. Voer in de console de volgende opdracht uit om het project lokaal te publiceren:

      dotnet publish -c Release -o publish
      

      Met deze opdracht wordt het project gepubliceerd naar de digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish directory.

    3. Maak met behulp van uw voorkeursmethode een zip van de gepubliceerde bestanden die zich in de map digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish bevinden. Geef de zipped folder publish.zip een naam.

      Belangrijk

      Zorg ervoor dat de gezipte map geen extra laag bevat voor de publicatiemap zelf. Deze mag alleen de inhoud bevatten die zich in de publicatiemap bevindt .

      Hier volgt een afbeelding van hoe de zip-inhoud eruit kan zien (afhankelijk van uw versie van .NET).

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

    U kunt nu het lokale consolevenster sluiten dat u hebt gebruikt om het project voor te bereiden. De laatste stap wordt uitgevoerd in de Azure CLI.

  4. Voer in de Azure CLI de volgende opdracht uit om de gepubliceerde en gezipte functies te implementeren in uw Azure-functie-app:

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

    Tip

    Als u de Azure CLI lokaal gebruikt, hebt u rechtstreeks via het pad op uw computer toegang tot het ZIP-bestand op uw computer.

    Als u de Azure Cloud Shell gebruikt, uploadt u het ZIP-bestand naar Cloud Shell met deze knop voordat u de opdracht uitvoert:

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

    In dit geval wordt het bestand geüpload naar de hoofdmap van uw Cloud Shell-opslag, zodat u rechtstreeks naar het bestand kunt verwijzen met de naam van de --src parameter van de opdracht (zoals in). --src publish.zip

    Een geslaagde implementatie reageert met statuscode 202 en voert een JSON-object uit met details van uw nieuwe functie. U kunt bevestigen dat de implementatie is geslaagd door te zoeken naar dit veld in het resultaat:

    "provisioningState": "Succeeded",
    

De functies moeten nu worden gepubliceerd naar een functie-app in Azure. U kunt de volgende CLI-opdrachten gebruiken om te controleren of beide functies zijn gepubliceerd. Elke opdracht bevat tijdelijke aanduidingen voor uw resourcegroep en de naam van uw functie-app. Met de opdrachten wordt informatie afgedrukt over de functies ProcessDTRoutedData en ProcessHubToDTEvents die zijn gepubliceerd.

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

Vervolgens moet uw functie-app over de juiste machtigingen beschikken om toegang te krijgen tot uw Azure Digital Twins-exemplaar. U configureert deze toegang in de volgende sectie.

Machtigingen voor de functie-app configureren

Er zijn twee instellingen die moeten worden ingesteld voor de functie-app voor toegang tot uw Azure Digital Twins-exemplaar. Beide kunnen worden uitgevoerd met behulp van de Azure CLI.

Toegangsrol toewijzen

De eerste instelling geeft de functie-app de rol Azure Digital Twins-gegevenseigenaar in het Azure Digital Twins-exemplaar. Deze rol is vereist voor alle gebruikers of functies die veel gegevensvlakactiviteiten op het exemplaar willen uitvoeren. Meer informatie over beveiligings- en roltoewijzingen vindt u in Security for Azure Digital Twins-oplossingen.

  1. Gebruik de volgende opdracht om een door het systeem toegewezen identiteit voor de functie te maken. In de uitvoer worden details weergegeven van de identiteit die is gemaakt. Noteer het principalId-veld in de uitvoer die u in de volgende stap wilt gebruiken.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Gebruik de waarde principalId in de volgende opdracht om de identiteit van de functie-app toe te wijzen aan de rol Gegevenseigenaar van Azure Digital Twins voor uw Azure Digital Twins-exemplaar.

    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"
    

Het resultaat van deze opdracht is uitgevoerde informatie over de roltoewijzing die u hebt gemaakt. De functie-app heeft nu machtigingen voor toegang tot gegevens in uw Azure Digital Twins-exemplaar.

Toepassingsinstelling configureren

Met de tweede instelling maakt u een omgevingsvariabele voor de functie met de URL van uw Azure Digital Twins-exemplaar. De functiecode gebruikt de waarde van deze variabele om naar uw exemplaar te verwijzen. Zie Uw functie-app beheren voor meer informatie over omgevingsvariabelen.

Voer de onderstaande opdracht uit en vul de tijdelijke aanduidingen in met de details van uw resources.

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

De uitvoer is de lijst met instellingen voor de Azure-functie, die nu een vermelding moet bevatten met de naam ADT_SERVICE_URL.

Gesimuleerde telemetrie van een IoT Hub-apparaat verwerken

Een Azure Digital Twins-grafiek is bedoeld om te worden aangedreven door telemetrie van echte apparaten.

In deze stap verbindt u een gesimuleerd thermostaatapparaat dat is geregistreerd in IoT Hub met de digitale dubbel die deze vertegenwoordigt in Azure Digital Twins. Wanneer het gesimuleerde apparaat telemetrie verzendt, worden de gegevens door de Azure-functie ProcessHubToDTEvents geleid, die een overeenkomstige update activeert in de digitale tweeling. Op deze manier blijft de digitale tweeling up-to-date met de gegevens van het echte apparaat. In Azure Digital Twins wordt het proces waar mee gebeurtenisgegevens van de ene plaats naar de andere worden geleid gebeurtenisroutering genoemd.

Het verwerken van de gesimuleerde telemetrie vindt plaats in dit deel van het end-to-end scenario (pijl B):

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

Dit zijn de acties die u gaat uitvoeren om deze apparaatverbinding in te stellen:

  1. Een IoT-hub maken waarmee het gesimuleerde apparaat wordt beheerd
  2. De IoT-hub verbinden met de juiste Azure-functie door een gebeurtenisabonnement in te stellen
  3. Het gesimuleerde apparaat in IoT Hub registreren
  4. Het gesimuleerde apparaat uitvoeren en telemetrie genereren
  5. Query's uitvoeren op Azure Digital Twins om de live resultaten te bekijken

Een IoT-hub-instantie maken

Azure Digital Twins is bedoeld om te werken naast IoT Hub, een Azure-service voor het beheren van apparaten en hun gegevens. In deze stap stelt u een IoT-hub in waarmee het voorbeeldapparaat in deze zelfstudie wordt beheerd.

Gebruik deze opdracht in de Azure CLI om een nieuwe IoT-hub te maken:

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

De uitvoer van deze opdracht is informatie over de IoT-hub die is gemaakt.

Sla de naam op die u aan uw IoT-hub hebt gegeven. U gebruikt deze later weer.

De IoT-hub verbinden met de Azure-functie

Koppel vervolgens uw IoT-hub aan de Azure-functie ProcessHubToDTEvents in de functie-app die u eerder hebt gepubliceerd, zodat gegevens van het apparaat in IoT Hub door de functie kunnen stromen, waardoor Azure Digital Twins wordt bijgewerkt.

Hiervoor maakt u een gebeurtenisabonnement op uw IoT Hub, met de Azure-functie als eindpunt. Hiermee wordt de functie 'geabonneerd' op gebeurtenissen die zich in IoT Hub voordoen.

Gebruik de volgende CLI-opdracht om het gebeurtenisabonnement te maken. Er is een tijdelijke aanduiding voor u om een naam in te voeren voor het gebeurtenisabonnement en er zijn ook tijdelijke aanduidingen voor het invoeren van uw abonnements-id, resourcegroep, IoT-hubnaam en de naam van uw functie-app.

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

In de uitvoer wordt informatie weergegeven over het gebeurtenisabonnement dat is gemaakt. U kunt controleren of de bewerking is voltooid door de provisioningState waarde in het resultaat te controleren:

"provisioningState": "Succeeded",

Tip

Als de opdracht een resourceproviderfout retourneert, voegt u Microsoft.EventGrid toe als resourceprovider aan uw abonnement. U kunt dit doen in Azure Portal door de instructies in Resourceprovider registreren te volgen.

Het gesimuleerde apparaat bij IoT Hub registreren

In deze sectie wordt in IoT Hub een apparaatweergave met de id thermostat67 gemaakt. Het gesimuleerde apparaat maakt verbinding met deze weergave. Dit is hoe telemetriegebeurtenissen van het apparaat naar IoT Hub gaan. De IoT-hub is waar de geabonneerde Azure-functie uit de vorige stap luistert, klaar is om de gebeurtenissen op te halen en door te gaan met verwerken.

Maak in de Azure CLI een apparaat in IoT Hub met de volgende opdracht:

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

De uitvoer is informatie over het gemaakte apparaat.

De simulatie configureren en uitvoeren

Configureer vervolgens de apparaatsimulator om gegevens te verzenden naar uw IoT Hub-instance.

Begin met het verkrijgen van de IoT-hub verbindingsreeks met de volgende opdracht. De verbindingsreeks waarde begint met HostName=.

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

Haal vervolgens de apparaatverbindingsreeks op met deze opdracht:

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

Sluit deze waarden vervolgens aan in de code van de apparaatsimulator in uw lokale project om de simulator te verbinden met dit IoT Hub- en IoT Hub-apparaat.

Navigeer op uw lokale computer naar de gedownloade voorbeeldmap en ga naar de map digital-twins-samples-main\DeviceSimulator\DeviceSimulator . Open het bestand AzureIoTHub.cs om te bewerken. Wijzig de volgende verbindingsreekswaarden in de waarden die u hierboven hebt verzameld:

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

Sla het bestand op.

Als u nu de resultaten wilt zien van de gegevenssimulatie die u hebt ingesteld, opent u een nieuw lokaal consolevenster en navigeert u naar digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Notitie

U hebt nu twee geopende consolevensters: een venster dat is geopend voor de map DeviceSimulator\DeviceSimulator en een van eerder geopende consolevensters, die nog steeds zijn geopend in de map AdtSampleApp\SampleClientApp .

Gebruik de volgende dotnet-opdracht om het apparaatsimulatorproject uit te voeren:

dotnet run

Het project wordt uitgevoerd en begint met het weergeven van telemetrieberichten voor gesimuleerde temperatuur. Deze berichten worden verzonden naar IoT Hub, waar ze vervolgens worden opgehaald en verwerkt door de Azure-functie.

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

U hoeft niets anders te doen in deze console, maar laat deze draaien terwijl u de volgende stappen voltooit.

De resultaten bekijken in Azure Digital Twins

De functie ProcessHubToDTEvents die u eerder hebt gepubliceerd, luistert naar de IoT Hub-gegevens en roept een Azure Digital Twins-API aan om de Temperature eigenschap op de thermostat67-dubbel bij te werken.

Als u de gegevens van de zijde van Azure Digital Twins wilt zien, schakelt u over naar het andere consolevenster dat is geopend naar de map AdtSampleApp\SampleClientApp . Voer het SampleClientApp-project uit met dotnet run.

dotnet run

Zodra het project wordt uitgevoerd en opdrachten accepteert, voert u de volgende opdracht uit om de temperaturen op te halen die worden gerapporteerd door de digitale dubbel thermostat67:

ObserveProperties thermostat67 Temperature

U ziet dat de live bijgewerkte temperaturen van uw Azure Digital Twins-exemplaar elke twee seconden in de console worden geregistreerd. Ze moeten de waarden weerspiegelen die door de gegevenssimulator worden gegenereerd (u kunt de consolevensters naast elkaar plaatsen om te controleren of de waarden coördinaat zijn).

Notitie

Het kan enkele seconden duren voordat de gegevens van het apparaat zijn doorgegeven aan de tweeling. De eerste paar temperatuurmetingen kunnen worden weergegeven als 0 voordat gegevens binnenkomen.

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

Zodra u hebt gecontroleerd of de logboekregistratie voor livetemperatuur correct werkt, kunt u beide projecten stoppen. Houd de consolevensters open, omdat u deze later in de zelfstudie opnieuw gebruikt.

Azure Digital Twins-gebeurtenissen doorvoeren in de grafiek

Tot zover hebt u in deze zelfstudie gezien hoe Azure Digital Twins kan worden bijgewerkt met externe apparaatgegevens. Nu gaat u zien hoe wijzigingen in één digitale tweeling kunnen worden doorgevoerd in de Azure Digital Twins-grafiek; met andere woorden, hoe tweelingen kunnen worden bijgewerkt met interne gegevens van de service.

Hiervoor gebruikt u de azure-functie ProcessDTRoutedData om een kamerdubbel bij te werken wanneer de verbonden thermostaatdubbel wordt bijgewerkt. De updatefunctionaliteit vindt plaats in dit deel van het end-to-end-scenario (pijl C):

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

Dit zijn de acties die u gaat uitvoeren om deze gegevensstroom in te stellen:

  1. Een Event Grid-onderwerp maken om het verplaatsen van gegevens tussen Azure-services mogelijk te maken
  2. Een eindpunt maken in Azure Digital Twins waarmee het exemplaar wordt verbonden met het Event Grid-onderwerp
  3. Een route instellen in Azure Digital Twins waarmee wijzigingsevenementen van dubbele eigenschappen naar het eindpunt worden verzonden
  4. Stel een Azure-functie in die luistert naar het Event Grid-onderwerp op het eindpunt, ontvangt de wijzigings gebeurtenissen van de tweelingeigenschap die daar worden verzonden en werkt andere tweelingen in de grafiek dienovereenkomstig bij

Het Event Grid-onderwerp maken

Event Grid is een Azure-service waarmee gebeurtenissen van Azure-services naar andere locaties in Azure kunnen worden gerouteerd en geleverd. U kunt een Event Grid-onderwerp maken om bepaalde gebeurtenissen van een bron te verzamelen en vervolgens kunnen abonnees luisteren naar het onderwerp om de gebeurtenissen te ontvangen wanneer ze binnenkomen.

Voer in de Azure CLI de volgende opdracht uit om een Event Grid-onderwerp te maken:

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

De uitvoer van deze opdracht is informatie over het Event Grid-onderwerp dat u hebt gemaakt. Sla de naam op die u aan uw Event Grid-onderwerp hebt gegeven, omdat u deze later gaat gebruiken.

Het eindpunt maken

Maak vervolgens een Event Grid-eindpunt in Azure Digital Twins, waarmee uw exemplaar wordt verbonden met uw Event Grid-onderwerp. Gebruik de onderstaande opdracht om de naam van uw Event Grid-onderwerp in te vullen uit de vorige stap en de andere tijdelijke aanduidingenvelden, indien nodig.

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>

De uitvoer van deze opdracht is informatie over het eindpunt dat u hebt gemaakt.

Zoek naar het provisioningState veld in de uitvoer en controleer of de waarde geslaagd is.

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

Het kan ook zijn dat er 'Inrichten' staat, wat betekent dat het eindpunt nog wordt gemaakt. Zo ja, wacht u een paar seconden en voert u de volgende opdracht uit om de status van het eindpunt te controleren. Herhaal dit totdat ' provisioningState Geslaagd' wordt weergegeven.

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

Sla de naam van uw eindpunt op, omdat u het later gaat gebruiken.

De route maken

Maak vervolgens een Azure Digital Twins-route waarmee gebeurtenissen worden verzonden naar het Event Grid-eindpunt dat u hebt gemaakt.

Gebruik de volgende CLI-opdracht om de naam van uw eindpunt in te vullen uit de vorige stap en de andere tijdelijke aanduidingen( indien nodig). Met deze opdracht worden alle gebeurtenissen doorgestuurd die in de tweelinggrafiek voorkomen.

Tip

U kunt de gebeurtenissen beperken tot alleen specifieke gebeurtenissen als u wilt, met behulp van filters.

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>

De uitvoer van deze opdracht is informatie over de route die u hebt gemaakt.

Notitie

Eindpunten (uit de vorige stap) moeten klaar zijn met inrichten voordat u een gebeurtenisroute kunt instellen die deze gebruikt. Als de route niet kan worden gemaakt omdat de eindpunten niet klaar zijn, dan wacht u een paar minuten en probeert u het opnieuw.

Verbinding maken de Azure-functie

Abonneer u vervolgens de Azure-functie ProcessDTRoutedData op het Event Grid-onderwerp dat u eerder hebt gemaakt, zodat telemetriegegevens van de thermostat67-tweeling via het Event Grid-onderwerp naar de functie kunnen stromen. Deze gaat terug naar Azure Digital Twins en werkt de room21-dubbel dienovereenkomstig bij.

Hiervoor maakt u een Event Grid-abonnement waarmee gegevens worden verzonden uit het Event Grid-onderwerp dat u eerder hebt gemaakt naar uw Azure-functie ProcessDTRoutedData .

Gebruik de volgende CLI-opdracht om het gebeurtenisabonnement te maken. Er is een tijdelijke aanduiding voor u om een naam voor dit gebeurtenisabonnement in te voeren en er zijn ook tijdelijke aanduidingen voor het invoeren van uw abonnements-id, resourcegroep, de naam van uw Event Grid-onderwerp en de naam van uw functie-app.

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

De simulatie uitvoeren en de resultaten bekijken

Gebeurtenissen moeten nu de mogelijkheid hebben om van het gesimuleerde apparaat naar Azure Digital Twins te stromen en via de Azure Digital Twins-grafiek om dubbels naar wens bij te werken. In deze sectie voert u de apparaatsimulator opnieuw uit om de volledige gebeurtenisstroom te starten die u hebt ingesteld en query's uit te voeren op Azure Digital Twins om de liveresultaten te bekijken

Ga naar het consolevenster dat is geopend naar de map DeviceSimulator\DeviceSimulator en voer het apparaatsimulatorproject uit met dotnet run.

Net als de eerste keer dat u de apparaatsimulator hebt uitgevoerd, wordt het project uitgevoerd en worden gesimuleerde temperatuurtelemetrieberichten weergegeven. Deze gebeurtenissen volgen de stroom die u eerder hebt ingesteld om de thermostat67-tweeling bij te werken, en vervolgens de stroom die u zojuist hebt ingesteld om de room21-tweeling dienovereenkomstig bij te werken.

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

U hoeft niets anders te doen in deze console, maar laat deze draaien terwijl u de volgende stappen voltooit.

Als u de gegevens van de zijde van Azure Digital Twins wilt zien, gaat u naar het andere consolevenster dat is geopend naar de map AdtSampleApp\SampleClientApp en voert u het SampleClientApp-project uit met dotnet run.

Zodra het project wordt uitgevoerd en opdrachten accepteert, voert u de volgende opdracht uit om de temperaturen op te halen die worden gerapporteerd door zowel de digitale dubbel thermostat67 als de digitale dubbelkamer21.

ObserveProperties thermostat67 Temperature room21 Temperature

U ziet dat de live bijgewerkte temperaturen van uw Azure Digital Twins-exemplaar elke twee seconden in de console worden geregistreerd. U ziet dat de temperatuur voor room21 wordt bijgewerkt overeenkomstig de updates van thermostat67.

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

Zodra u hebt gecontroleerd of de logboekregistratie van live temperaturen van uw exemplaar correct werkt, kunt u stoppen met het uitvoeren van beide projecten. U kunt beide consolevensters ook sluiten, omdat de zelfstudie nu is voltooid.

Beoordelen

Hier volgt een overzicht van het scenario dat u in deze zelfstudie hebt gemaakt.

  1. Een Azure Digital Twins-instance is een digitale weergave van een verdieping, een ruimte en een thermostaat (vertegenwoordigd door sectie A in het onderstaande diagram)
  2. Er wordt gesimuleerde apparaattelemetrie verzonden naar IoT Hub, waar de Azure-functie ProcessHubToDTEvents luistert naar telemetriegebeurtenissen. De Azure-functie ProcessHubToDTEvents gebruikt de informatie in deze gebeurtenissen om de Temperature eigenschap in te stellen op thermostat67 (pijl B in het diagram).
  3. Gebeurtenissen voor het wijzigen van eigenschappen in Azure Digital Twins worden doorgestuurd naar een Event Grid-onderwerp, waarbij de Azure-functie ProcessDTRoutedData luistert naar gebeurtenissen. De functie ProcessDTRoutedData Azure gebruikt de informatie in deze gebeurtenissen om de Temperature eigenschap in te stellen op room21 (pijl C in het diagram).

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

Resources opschonen

Nadat u deze zelfstudie hebt voltooid, kunt u kiezen welke resources u wilt verwijderen, afhankelijk van wat u hierna wilt doen.

  • Als u geen van de resources nodig hebt die u in deze zelfstudie hebt gemaakt, kunt u het Azure Digital Twins-exemplaar en alle andere resources uit dit artikel verwijderen met de opdracht az group delete CLI. Hiermee verwijdert u alle Azure-resources in een resourcegroep, evenals de resourcegroep zelf.

    Belangrijk

    Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert.

    Open Azure Cloud Shell of een lokaal CLI-venster en voer de volgende opdracht uit om de resourcegroep en alles wat deze bevat te verwijderen.

    az group delete --name <your-resource-group>
    
  • Als u het Azure Digital Twins-exemplaar wilt blijven gebruiken dat u in dit artikel hebt ingesteld, maar sommige of alle bijbehorende modellen, tweelingen en relaties wilt wissen, kunt u de az dt CLI-opdrachten gebruiken om de elementen te verwijderen die u wilt verwijderen.

    Met deze optie worden geen andere Azure-resources verwijderd die in deze zelfstudie zijn gemaakt (IoT Hub, Azure Functions-app, enzovoort). U kunt deze afzonderlijk verwijderen met behulp van de dt-opdrachten die geschikt zijn voor elk resourcetype.

U kunt ook de projectmap van uw lokale computer verwijderen.

Volgende stappen

In deze zelfstudie hebt u een end-to-end scenario gemaakt dat laat zien hoe Azure Digital Twins wordt aangedreven door live apparaatgegevens.

Ga vervolgens naar de conceptdocumentatie voor meer informatie over de elementen waarmee u in de zelfstudie hebt gewerkt: