Tutorial: Erstellen einer End-to-End-Lösung

In diesem Azure Digital Twins-Tutorial wird beschrieben, wie Sie eine End-to-End-Lösung erstellen, die die Funktionalität des Diensts veranschaulicht. Für die Einrichtung einer vollständigen End-to-End-Lösung, die auf Livedaten aus Ihrer Umgebung basiert, können Sie für Ihre Azure Digital Twins-Instanz eine Verbindung mit anderen Azure-Diensten herstellen, um die Verwaltung von Geräten und Daten durchzuführen.

In diesem Tutorial lernen Sie Folgendes:

  • Einrichten einer Azure Digital Twins-Instanz
  • Kennenlernen des Beispielszenarios für die Erstellung und Instanziieren der vorab geschriebenen Komponenten
  • Verwenden einer Azure Functions-App zum Weiterleiten von simulierten Telemetriedaten von einem IoT Hub-Gerät an Eigenschaften digitaler Zwillinge
  • Verteilen von Änderungen über den Zwillingsgraphen durch die Verarbeitung von Benachrichtigungen für digitale Zwillinge mit Azure Functions, Endpunkten und Routen

Voraussetzungen

Vergewissern Sie sich vor Beginn dieses Tutorials zuerst, ob folgende Voraussetzungen erfüllt sind:

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • In diesem Tutorial wird .NET verwendet. Sie können die aktuelle Version des .NET Core SDK für verschiedene Plattformen unter Download .NET herunterladen.

Fahren Sie dann mit dem Rest dieses Abschnitts fort, um die verbleibenden Voraussetzungen einzurichten.

Abrufen von Beispielressourcen

Grundlage des Tutorials ist ein in C# geschriebenes Beispielprojekt End-to-End-Beispielprojekt für Azure Digital Twins. Laden Sie das Beispielprojekt auf Ihren Computer herunter, indem Sie zum Beispiellink navigieren und unter dem Titel die Schaltfläche Code durchsuchen auswählen.

Dadurch gelangen Sie zum GitHub-Repository für die Beispiele, die Sie als ZIP-Datei herunterladen können. Wählen Sie hierzu die Schaltfläche Code und anschließend ZIP herunterladen aus.

Screenshot des Repositorys „digital-twins-samples“ auf GitHub, in dem die Schritte zum Herunterladen als ZIP-Datei hervorgehoben sind.

Dadurch wird ein ZIP-Ordner (digital-twins-samples-main.zip) auf Ihren Computer heruntergeladen. Entpacken Sie den Ordner, und extrahieren Sie die Dateien.

Vorbereiten einer Azure Digital Twins-Instanz

Damit Sie in diesem Artikel mit Azure Digital Twins arbeiten können, benötigen Sie eine Azure Digital Twins-Instanz und die erforderlichen Berechtigungen, um sie zu verwenden. Wenn Sie über eine bereits eingerichtete Azure Digital Twins-Instanz verfügen, können Sie diese nutzen und zum nächsten Abschnitt springen. Befolgen Sie andernfalls die Anleitung unter Einrichten einer Instanz und der Authentifizierung. Die Anweisungen enthalten Informationen, mit denen Sie überprüfen können, ob jeder Schritt erfolgreich abgeschlossen wurde.

Notieren Sie sich nach dem Einrichten Ihrer Instanz den Hostnamen der Instanz. Sie finden den Hostnamen im Azure-Portal.

Vorbereiten der Umgebung für die Azure CLI

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

Einrichten einer CLI-Sitzung

Um mit Azure Digital Twins in der CLI zu arbeiten, müssen Sie sich zunächst anmelden und den CLI-Kontext für diese Sitzung auf Ihr Abonnement festlegen. Führen Sie diese Befehle in Ihrem CLI-Fenster aus:

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

Tipp

Sie können im obigen Befehl anstelle der ID auch Ihren Abonnementnamen verwenden.

Wenn Sie dieses Abonnement zum ersten Mal mit Azure Digital Twins nutzen, führen Sie diesen Befehl aus, um sich im Namespace von Azure Digital Twins zu registrieren. (Falls Sie sich nicht sicher sind, ist es in Ordnung, ihn erneut auszuführen, auch wenn Sie ihn irgendwann zuvor schon einmal ausgeführt haben.)

az provider register --namespace 'Microsoft.DigitalTwins'

Als Nächstes fügen Sie die Microsoft Azure IoT-Erweiterung für die Azure CLI hinzu, um Befehle für die Interaktion mit Azure Digital Twins und anderen IoT-Diensten zu aktivieren. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie über die neueste Version der Erweiterung verfügen:

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

Nun können Sie in der Azure CLI mit Azure Digital Twins arbeiten.

Sie können dies durch Ausführung von az dt --help jederzeit überprüfen, um eine Liste der verfügbaren Azure Digital Twins-Befehle oberster Ebene anzuzeigen.

Konfigurieren des Beispielprojekts

Richten Sie als Nächstes eine Beispielclient-Anwendung ein, die mit Ihrer Azure Digital Twins-Instanz interagiert.

Navigieren Sie auf Ihrem Computer zum Ordner, den Sie zuvor von Azure Digital Twins-End-to-End-Beispiele heruntergeladen haben (und entpacken Sie ihn, sofern noch nicht geschehen).

Sobald Sie sich im Ordner befinden, navigieren Sie zu digital-twins-samples-main\AdtSampleApp\SampleClientApp und öffnen die Datei appsettings.json. Diese JSON-Datei enthält eine Konfigurationsvariable, die zum Ausführen des Projekts erforderlich ist.

Ändern Sie im Dateitext die instanceUrl in die Hostnamen-URL der Azure Digital Twins-Instanz (indem Sie https:// vor dem Hostnamen einfügen, wie nachfolgend gezeigt).

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

Speichern und schließen Sie die Datei.

Einrichten lokaler Azure-Anmeldeinformationen

Dieses Beispiel verwendet DefaultAzureCredential (Teil der Azure.Identity-Bibliothek) zur Authentifizierung von Benutzern mit der Azure Digital Twins-Instanz, wenn Sie diese auf Ihrem lokalen Computer ausführen. Weitere Informationen zu den verschiedenen Möglichkeiten, wie sich eine Client-App bei Azure Digital Twins authentifizieren kann, finden Sie unter Schreiben von App-Authentifizierungscode.

Mit DefaultAzureCredential sucht das Beispiel nach Anmeldeinformationen in Ihrer lokalen Umgebung, wie eine Azure-Anmeldung in einer lokalen DefaultAzureCredential oder in Visual Studio oder Visual Studio Code. Aus diesem Grund sollten Sie sich lokal über einen dieser Mechanismen bei Azure anmelden, um Anmeldeinformationen für das Beispiel einzurichten.

Wenn Sie Visual Studio oder Visual Studio Code zum Ausführen von Codebeispielen verwenden, stellen Sie sicher, dass Sie bei diesem Editor mit denselben Anmeldeinformationen für Azure angemeldet sind, die Sie für den Zugriff auf Ihre Instanz von Azure Digital Twins verwenden möchten. Wenn Sie ein lokales CLI-Fenster verwenden, führen Sie den Befehl az login aus, um sich bei Ihrem Azure-Konto anzumelden. Wenn Sie danach Ihr Codebeispiel ausführen, sollten Sie automatisch authentifiziert werden.

Einstieg in die Erstellung

Im Beispielprojekt dieses Tutorials geht es um ein Szenario mit einem realen Gebäude, das über eine Etage, einen Raum und ein Thermostat verfügt. Diese Komponenten werden in einer Azure Digital Twins-Instanz digital dargestellt, die dann mit IoT Hub, Event Grid und zwei Azure-Funktionen verbunden wird, um die Verschiebung von Daten zu ermöglichen.

Unten ist ein Diagramm mit dem vollständigen Szenario angegeben.

Sie erstellen zuerst die Azure Digital Twins-Instanz (im Diagramm Abschnitt A) und richten dann den Fluss der Gerätetelemetriedaten zu den digitalen Zwillingen ein (Pfeil B). Anschließend richten Sie die Verteilung der Daten über den Zwillingsgraphen ein (Pfeil C).

Diagramm des vollständigen Gebäudeszenarios, das die Daten zeigt, die von einem Gerät über verschiedene Azure-Dienste in und aus Azure Digital Twins fließen

Für dieses Szenario interagieren Sie mit den Komponenten der vorab geschriebenen Beispiel-App, die Sie weiter oben heruntergeladen haben.

Hier sind die Komponenten aufgeführt, die mit der Beispiel-App AdtSampleApp für das Gebäudeszenario implementiert werden:

  • Geräte-Authentifizierung
  • Beispiele für die Nutzung des .NET (C#) SDK (in CommandLoop.cs)
  • Konsolenschnittstelle zum Aufrufen der Azure Digital Twins-API
  • SampleClientApp: Azure Digital Twins-Beispiellösung
  • SampleFunctionsApp: Eine Azure Functions-App, mit der Ihr Azure Digital Twins-Graph basierend auf den Gerätetelemetriedaten von IoT Hub- und Azure Digital Twins-Ereignissen aktualisiert wird

Instanziieren des vorab erstellten Zwillingsgraphen

Zunächst verwenden Sie die Lösung AdtSampleApp aus dem Beispielprojekt, um die Azure Digital Twins-Komponente des End-to-End-Szenarios zu erstellen (Abschnitt A):

Diagramm eines Auszugs aus dem Diagramm mit dem vollständigen Gebäudeszenario mit Hervorhebung des Abschnitts der Azure Digital Twins-Instanz

Öffnen Sie ein lokales Konsolenfenster und navigieren Sie zum Ordner digital-twins-samples-main\AdtSampleApp\SampleClientApp. Führen Sie das SampleClientApp-Projekt mit diesem Dotnet-Befehl aus:

dotnet run

Das Projekt wird ausgeführt, führt eine Authentifizierung durch und wartet auf einen Befehl. Führen Sie in dieser Konsole den nächsten Befehl aus, um die Azure Digital Twins-Beispiellösung zu instanziieren.

Wichtig

Wenn Sie auf Ihrer Azure Digital Twins-Instanz bereits über digitale Zwillinge und Beziehungen verfügen, werden diese mit dem Ausführen dieses Befehls gelöscht und durch die Zwillinge und Beziehungen für das Beispielszenario ersetzt.

SetupBuildingScenario

Die Ausgabe dieses Befehls umfasst eine Reihe von Bestätigungsmeldungen, während in Ihrer Azure Digital Twins-Instanz drei digitale Zwillinge erstellt und verbunden werden: die Etage „floor1“, der Raum „room21“ und der Temperatursensor „thermostat67“. Diese digitalen Zwillinge stehen für die Entitäten, die auch in einer realen Umgebung vorhanden wären.

Sie werden über Beziehungen mit dem folgenden Zwillingsgraphen verbunden. Der Zwillingsgraph steht für die gesamte Umgebung, z. B. für die Interaktion der Entitäten und ihre Beziehung untereinander.

Diagramm: „floor1“ enthält „room21“, und „room21“ enthält „thermostat67“

Sie können die erstellten Zwillinge überprüfen, indem Sie den folgenden Befehl ausführen. Mit diesem Befehl werden für die verbundene Azure Digital Twins-Instanz alle digitalen Zwillinge abgefragt, die sie enthält:

Query

Nun können Sie die Ausführung des Projekts beenden. Lassen Sie das Konsolenfenster jedoch an diesem Speicherort geöffnet, das Sie diese App später im Lernprogramm erneut verwenden werden.

Einrichten der Beispiel-Funktions-App

Der nächste Schritt umfasst die Einrichtung einer Azure Functions-App, die im gesamten Tutorial zum Verarbeiten von Daten verwendet wird. Die Funktions-App SampleFunctionsApp enthält zwei Funktionen:

  • ProcessHubToDTEvents: Verarbeitet eingehende IoT Hub-Daten und aktualisiert Azure Digital Twins entsprechend.
  • ProcessDTRoutedData: Verarbeitet Daten digitaler Zwillinge und aktualisiert die übergeordneten Zwillinge in Azure Digital Twins entsprechend.

In diesem Abschnitt veröffentlichen Sie die vorab geschriebene Funktions-App und stellen sicher, dass diese auf Azure Digital Twins zugreifen kann, indem Sie ihr eine Microsoft Entra-Identität zuweisen.

Die Funktions-App ist Teil des heruntergeladenen Beispielprojekts und befindet sich im Ordner digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.

Veröffentlichen der App

Um die Funktions-App in Azure zu veröffentlichen, müssen Sie ein Speicherkonto erstellen, dann die Funktions-App in Azure erstellen und schließlich die Funktionen in der Azure-Funktions-App veröffentlichen. In diesem Abschnitt werden diese Aktionen mithilfe von Azure CLI abgeschlossen. Ersetzen Sie in jedem Befehl alle Platzhalter in spitzen Klammern durch die Details für Ihre eigenen Ressourcen.

  1. Erstellen Sie mit folgendem Befehl ein Azure-Speicherkonto:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Erstellen Sie mit folgendem Befehl eine Azure-Funktions-App:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --resource-group <resource-group>
    
  3. Als Nächstes komprimieren Sie die Funktionen in eine ZIP-Datei und veröffentlichen sie in Ihrer neuen Azure-Funktions-App.

    1. Öffnen Sie ein Konsolenfenster auf Ihrem Computer (wenn Sie die lokale Azure CLI verwenden, kann es dasselbe Fenster sein) und navigieren Sie in Ihrem heruntergeladenen Beispielprojekt zum Ordner digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.

    2. Führen Sie in der Konsole den folgenden Befehl aus, um das Projekt lokal zu veröffentlichen:

      dotnet publish -c Release -o publish
      

      Dieser Befehl veröffentlicht das Projekt im Verzeichnis digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.

    3. Komprimieren Sie die veröffentlichten Dateien, die sich im Verzeichnis digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish befinden, mit Ihrer bevorzugten Methode in eine ZIP-Datei. Nennen Sie den gezippten Ordner publish.zip.

      Wichtig

      Stellen Sie sicher, dass der gezippte Ordner keine zusätzliche Ebene für den Ordner publish selbst enthält. Er sollte nur den Inhalt enthalten, der sich im Ordner publish befand.

      Hier sehen Sie eine Abbildung, wie der ZIP-Inhalt aussehen könnte (je nach .NET-Version kann die Anzeige abweichen):

      Screenshot des Datei-Explorers in Windows mit dem Inhalt des „publish.zip“-Ordners.

    Der letzte Schritt erfolgt in der Azure CLI.

  4. Führen Sie den folgenden Befehl in Azure CLI aus, um die veröffentlichten und in eine ZIP-Datei komprimierten Funktionen in Ihrer Azure-Funktions-App bereitzustellen:

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

    Tipp

    Wenn Sie Azure CLI lokal verwenden, können Sie direkt über den dazugehörigen Pfad auf die ZIP-Datei auf Ihrem Computer zugreifen.

    Wenn Sie Azure Cloud Shell verwenden, laden Sie die ZIP-Datei über diese Schaltfläche in Cloud Shell hoch, bevor Sie den Befehl ausführen:

    Screenshot von Azure Cloud Shell, in dem dargestellt wird, wie Dateien hochgeladen werden.

    In diesem Fall wird die Datei in das Stammverzeichnis Ihres Cloud Shell-Speichers hochgeladen, sodass Sie direkt über ihren Namen für den --src-Parameter des Befehls auf die Datei verweisen können (wie in --src publish.zip).

    Eine erfolgreiche Bereitstellung gibt den Statuscode 202 sowie ein JSON-Objekt mit Details Ihrer neuen Funktion zurück. Sie können bestätigen, dass die Bereitstellung erfolgreich war, indem Sie im Ergebnis nach diesem Feld suchen:

    "provisioningState": "Succeeded",
    

Die Funktionen sollten nun in einer Funktions-App in Azure veröffentlicht werden. Sie können mithilfe der folgenden CLI-Befehle überprüfen, ob beide Funktionen erfolgreich veröffentlicht wurden. Jeder Befehl enthält Platzhalter für Ihre Ressourcengruppe und den Namen Ihrer Funktions-App. Die Befehle geben Informationen über die veröffentlichten Funktionen ProcessDTRoutedData und ProcessHubToDTEvents aus.

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

Damit Ihre Funktions-App als Nächstes auf Azure Digital Twins zugreifen kann, muss sie über die entsprechenden Berechtigungen verfügen. Dieser Zugriff wird im nächsten Abschnitt konfiguriert.

Konfigurieren von Berechtigungen für die Funktions-App

Es müssen zwei Einstellungen festgelegt werden, damit die Funktions-App auf Ihre Azure Digital Twins-Instanz zugreifen kann. Beide können mithilfe der Azure CLI festgelegt werden.

Zuweisen der Zugriffsrolle

Die erste Einstellung weist der Funktions-App die Rolle Azure Digital Twins-Datenbesitzer in der Azure Digital Twins-Instanz zu. Diese Rolle ist für alle Benutzer oder Funktionen erforderlich, von denen auf der Instanz viele Datenebenenaktivitäten durchgeführt werden sollen. Weitere Informationen zu Sicherheit und Rollenzuweisungen finden Sie unter Sicherheit für Azure Digital Twins-Lösungen.

  1. Verwenden Sie den folgenden Befehl, um eine systemseitig zugewiesene Identität für die Funktion zu erstellen. In der Ausgabe werden die Details der erstellten Identität angezeigt. Notieren Sie sich das principalId-Feld in der Ausgabe, damit es im nächsten Schritt verwendet werden kann.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Verwenden Sie den Wert principalId im folgenden Befehl, um die Identität der Funktions-App der Rolle Azure Digital Twins Data Owner (Azure Digital Twins-Datenbesitzer) für Ihre Azure Digital Twins-Instanz zuzuweisen.

    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"
    

Die Ausgabe dieses Befehls enthält Informationen zur von Ihnen erstellten Rollenzuweisung. Die Funktions-App verfügt jetzt über Berechtigungen für den Zugriff auf Daten in Ihrer Azure Digital Twins-Instanz.

Konfigurieren der Anwendungseinstellung

Die zweite Einstellung erstellt eine Umgebungsvariable für die Funktion mit der URL Ihrer Azure Digital Twins-Instanz. Der Funktionscode verweist mit dem Wert dieser Variablen auf Ihre Instanz. Weitere Informationen zu Umgebungsvariablen finden Sie unter Verwalten Ihrer Funktions-App.

Führen Sie den folgenden Befehl aus, und ersetzen Sie die Platzhalter durch die Details Ihrer Ressourcen.

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

Bei der Ausgabe handelt es sich um die Liste der Einstellungen für die Azure-Funktion. Diese sollte nun einen Eintrag namens ADT_SERVICE_URL enthalten.

Verarbeiten von simulierten Telemetriedaten von einem IoT Hub-Gerät

Ein Azure Digital Twins-Graph sollte auf Telemetriedaten von realen Geräten basieren.

In diesem Schritt verbinden Sie ein simuliertes Thermostat, das unter IoT Hub registriert ist, mit dem digitalen Zwilling, der das Gerät in Azure Digital Twins repräsentiert. Wenn das simulierte Gerät Telemetriedaten ausgibt, werden die Daten über die Azure-Funktion ProcessHubToDTEvents geleitet, die ein entsprechendes Update auf dem digitalen Zwilling auslöst. Auf diese Weise bleibt der digitale Zwilling über die Daten des realen Geräts auf dem Laufenden. In Azure Digital Twins wird das Leiten von Ereignisdaten von einem Ort an einen anderen als das Weiterleiten von Ereignissen bezeichnet.

Die Verarbeitung der simulierten Telemetriedaten erfolgt in diesem Teil des End-to-End-Szenarios (Pfeil B):

Diagramm eines Auszugs aus dem Diagramm mit dem vollständigen Gebäudeszenario mit Hervorhebung des Abschnitts, der Elemente vor Azure Digital Twins zeigt

Hier sind die Aktionen aufgeführt, die Sie zum Einrichten dieser Geräteverbindung durchführen:

  1. Erstellen eines IoT-Hubs zum Verwalten des simulierten Geräts
  2. Verbinden des IoT-Hubs mit der entsprechenden Azure-Funktion, indem eine Ereignisabonnement eingerichtet wird
  3. Registrieren des simulierten Geräts auf dem IoT-Hub
  4. Ausführen des simulierten Geräts und Generieren von Telemetriedaten
  5. Abfragen von Azure Digital Twins zum Anzeigen der Liveergebnisse

Erstellen einer IoT Hub-Instanz

Azure Digital Twins ist für die Zusammenarbeit mit IoT Hub (Azure-Dienst zum Verwalten von Geräten und den darauf enthaltenen Daten) ausgelegt. In diesem Schritt richten Sie einen IoT-Hub ein, mit dem das Beispielgerät in diesem Tutorial verwaltet wird.

Verwenden Sie in der Azure CLI diesen Befehl, um einen neuen IoT-Hub zu erstellen:

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

Die Ausgabe dieses Befehls enthält Informationen zum erstellten IoT-Hub.

Speichern Sie den Namen, den Sie Ihrem IoT-Hub gegeben haben. Es wird später noch benötigt.

Verbinden des IoT-Hubs mit der Azure-Funktion

Verbinden Sie als Nächstes Ihren IoT-Hub mit der Azure-Funktion ProcessHubToDTEvents in der Funktions-App, die Sie weiter oben veröffentlicht haben. Dies ermöglicht den Datenfluss vom Gerät im IoT-Hub über die Funktion, mit der Azure Digital Twins aktualisiert wird.

Zu diesem Zweck erstellen Sie ein Ereignisabonnement in Ihrer IoT Hub-Instanz, mit der Azure-Funktion als Endpunkt. Hierdurch wird die Funktion für Ereignisse, die auf dem IoT-Hub auftreten, „abonniert“.

Verwenden Sie den folgenden CLI-Befehl, um das Ereignisabonnement zu erstellen. Es ist ein Platzhalter vorhanden, in den Sie einen Namen für das Ereignisabonnement eingeben können. Außerdem gibt es Platzhalter, in die Sie Ihre Abonnement-ID, die Ressourcengruppe, den Namen des IoT-Hubs und den Namen Ihrer Funktions-App eingeben können.

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

Die Ausgabe enthält Informationen über das erstellte Ereignisabonnement. Sie können bestätigen, dass der Vorgang erfolgreich abgeschlossen wurde, indem Sie den Wert provisioningState im Ergebnis überprüfen:

"provisioningState": "Succeeded",

Tipp

Wenn der Befehl einen Ressourcenanbieterfehler zurückgibt, fügen Sie Microsoft.EventGrid als Ressourcenanbieter in Ihrem Abonnement hinzu. Dies können Sie im Azure-Portal tun, indem Sie die Anweisungen unter Registrieren des Ressourcenanbieters befolgen.

Registrieren des simulierten Geräts für IoT Hub

In diesem Abschnitt wird eine Darstellung des Geräts in IoT Hub mit der ID thermostat67 erstellt. Das simulierte Gerät stellt eine Verbindung mit dieser Darstellung her. Auf diese Weise gelangen Telemetrieereignisse vom Gerät zu IoT Hub. Im IoT-Hub lauscht die abonnierte Azure-Funktion aus dem vorherigen Schritt, um die Ereignisse auszuwählen und mit der Verarbeitung fortzufahren.

Erstellen Sie in der Azure CLI mit dem folgenden Befehl ein Gerät in IoT Hub:

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

Die Ausgabe enthält Informationen zum erstellten Gerät.

Konfigurieren und Ausführen der Simulation

Wichtig

Dieser Artikel enthält Schritte zum Verbinden eines Geräts mithilfe einer Shared Access Signature, was auch als symmetrische Schlüsselauthentifizierung bezeichnet wird. Diese Authentifizierungsmethode eignet sich für Tests und Auswertungen, aber die Authentifizierung eines Geräts mit X.509-Zertifikaten ist ein sichererer Ansatz. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit von IoT-Lösungen > Verbindungssicherheit.

Konfigurieren Sie als Nächstes den Gerätesimulator für das Senden der Daten an Ihre IoT Hub-Instanz.

Rufen Sie zunächst mit dem folgenden Befehl die IoT-Hub-Verbindungszeichenfolge ab. Der Verbindungszeichenfolgenwert beginnt mit HostName=.

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

Rufen Sie anschließend mit diesem Befehl die Geräte-Verbindungszeichenfolge ab:

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

Als Nächstes fügen Sie diese Werte in den Gerätesimulatorcode Ihres lokalen Projekts ein, um den Simulator mit diesem IoT-Hub und dem IoT-Hub-Gerät zu verbinden.

Navigieren Sie auf Ihrem lokalen Computer zu dem heruntergeladenen Beispielordner und in den Ordner digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Öffnen Sie die Datei AzureIoTHub.cs zur Bearbeitung. Ändern Sie die folgenden Verbindungszeichenfolgen-Werte in die oben ermittelten Werte:

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

Speichern Sie die Datei .

Öffnen Sie ein neues lokales Konsolenfenster, um die Ergebnisse der Datensimulation anzuzeigen, die Sie eingerichtet haben, und navigieren Sie zu digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Hinweis

Sie sollten jetzt über zwei geöffnete Konsolenfenster verfügen: eins, in dem der Ordner DeviceSimulator\DeviceSimulator geöffnet ist, und eins von vorher, in dem immer noch der Ordner AdtSampleApp\SampleClientApp geöffnet ist.

Verwenden Sie den folgenden Dotnet-Befehl, um das Gerätesimulatorprojekt auszuführen:

dotnet run

Das Projekt beginnt mit der Ausführung und dem Anzeigen simulierter Temperaturtelemetriemeldungen. Diese Meldungen werden an IoT Hub gesendet, wo sie dann ausgewählt und von der Azure-Funktion verarbeitet werden.

Screenshot: Konsolenausgabe des Gerätesimulators mit gesendeten Telemetriedaten zur Temperatur

Sie müssen in dieser Konsole keine weiteren Schritte ausführen, aber Sie sollten sie während der nächsten Schritte geöffnet lassen.

Anzeigen der Ergebnisse in Azure Digital Twins

Die zuvor von Ihnen veröffentlichte Funktion ProcessHubToDTEvents lauscht auf die IoT Hub-Daten und ruft eine Azure Digital Twins-API auf, um die Temperature-Eigenschaft des Zwillings „thermostat67“ zu aktualisieren.

Um die Daten von der Azure Digital Twins-Seite anzuzeigen, wechseln Sie zu Ihrem anderen Konsolenfenster, in dem der Ordner AdtSampleApp\SampleClientApp geöffnet ist. Führen Sie das SampleClientApp-Projekt mit dotnet run aus.

dotnet run

Sobald das Projekt ausgeführt wird und Befehle akzeptiert, führen Sie den folgenden Befehl aus, um die Temperaturen abzurufen, die vom digitalen Zwilling „thermostat67“ gemeldet werden:

ObserveProperties thermostat67 Temperature

Sie sollten verfolgen können, wie die Liveaktualisierung der Temperaturen von Ihrer Azure Digital Twins-Instanz alle zwei Sekunden in der Konsole protokolliert wird. Sie sollten die Werte widerspiegeln, die vom Datensimulator generiert werden (Sie können die Konsolenfenster nebeneinander platzieren, um zu überprüfen, ob die Werte korrelieren).

Hinweis

Es kann einige Sekunden dauern, bis die Daten vom Gerät an den Zwilling weitergegeben werden. Die ersten Temperaturmesswerte werden unter Umständen als 0 angezeigt, bevor die Daten eintreffen.

Screenshot: Konsolenausgabe mit Protokollierung der Temperaturmeldungen des digitalen Zwillings „thermostat67“

Nachdem Sie sich davon überzeugt haben, dass die Liveprotokollierung der Temperatur ordnungsgemäß funktioniert, können Sie die Ausführung beider Projekte beenden. Lassen Sie die Konsolenfenster geöffnet, da Sie sie später im Lernprogramm erneut verwenden werden.

Verteilen von Azure Digital Twins-Ereignissen im Graphen

Bisher haben Sie in diesem Tutorial erfahren, wie Azure Digital Twins mit externen Gerätedaten aktualisiert werden kann. Als Nächstes wird beschrieben, wie Änderungen eines digitalen Zwillings über den Azure Digital Twins-Graphen verteilt werden können. Anders ausgedrückt: Wie Zwillinge anhand von internen Daten des Diensts aktualisiert werden.

Verwenden Sie hierfür die Azure-Funktion ProcessDTRoutedData, um einen Zwilling vom Typ „Room“ zu aktualisieren, wenn der verbundene Thermostatzwilling aktualisiert wird. Die Updatefunktion wird in diesem Teil des End-to-End-Szenarios ausgeführt (Pfeil C):

Diagramm eines Auszugs aus dem Diagramm mit dem vollständigen Gebäudeszenario mit Hervorhebung des Abschnitts, der die Elemente nach Azure Digital Twins zeigt

Hier sind die Aktionen angegeben, die Sie zum Einrichten dieses Datenflusses durchführen:

  1. Erstellen eines Event Grid-Themas zum Aktivieren der Datenverschiebung zwischen Azure-Diensten
  2. Erstellen eines Endpunkts in Azure Digital Twins zum Verbinden der Instanz mit dem Event Grid-Thema
  3. Einrichten einer Route in Azure Digital Twins zum Senden von Ereignissen zur Änderung von Zwillingseigenschaften an den Endpunkt
  4. Einrichten einer Azure-Funktion, die am Event Grid-Thema am Endpunkt lauscht, die an den Endpunkt gesendeten Ereignisse zur Änderung von Zwillingseigenschaften empfängt und andere Zwillinge im Diagramm entsprechend aktualisiert

Erstellen des Event Grid-Themas

Event Grid ist ein Azure-Dienst, mit dem Sie von Azure-Diensten stammende Ereignisse an andere Orte in Azure weiterleiten und übermitteln können. Sie können ein Event Grid-Thema erstellen, um bestimmte Ereignisse von einer Quelle zu erfassen. Abonnementdatenbanken können dann über das Thema lauschen, um Ereignisse abzurufen, sobald sie verfügbar sind.

Führen Sie in der Azure CLI den folgenden Befehl aus, um ein Event Grid-Thema zu erstellen:

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

Die Ausgabe dieses Befehls enthält Informationen zum von Ihnen erstellten Event Grid-Thema. Speichern Sie den Namen, den Sie Ihrem Event Grid-Thema gegeben haben, da Sie ihn später benötigen.

Erstellen des Endpunkts

Erstellen Sie als Nächstes einen Event Grid-Endpunkt in Azure Digital Twins, über den Ihre Instanz mit Ihrem Event Grid-Thema verbunden wird. Verwenden Sie den folgenden Befehl. Geben Sie dabei den Namen Ihres Event Grid-Themas aus dem vorherigen Schritt an, und füllen Sie bei Bedarf die weiteren Platzhalterfelder aus.

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>

Die Ausgabe dieses Befehls enthält Informationen zum von Ihnen erstellten Endpunkt.

Suchen Sie in der Ausgabe nach dem Feld provisioningState, und vergewissern Sie sich, dass der Wert „Succeeded“ (Erfolgreich) lautet.

Screenshot des Ergebnisses der Endpunktabfrage in der Cloud Shell des Azure-Portals mit dem Endpunkt mit dem provisioningState „Erfolgreich“.

Er kann auch „Provisioning“ lauten. Dies bedeutet, dass die Erstellung des Endpunkts noch nicht abgeschlossen ist. Falls ja, warten Sie einige Sekunden, und führen Sie den folgenden Befehl aus, um den Status des Endpunkts zu überprüfen. Wiederholen Sie diesen Schritt, bis provisioningState den Wert „Succeeded“ (Erfolgreich) hat.

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

Speichern Sie den Namen Ihres Endpunkts für später.

Erstellen der Route

Erstellen Sie als Nächstes eine Azure Digital Twins-Route, über die Ereignisse an den von Ihnen erstellten Event Grid-Endpunkt gesendet werden.

Verwenden Sie den folgenden CLI-Befehl. Geben Sie dabei den Namen Ihres Endpunkts aus dem vorherigen Schritt an, und füllen Sie bei Bedarf die weiteren Platzhalterfelder aus. Durch diesen Befehl werden alle Ereignisse weitergeleitet, die im Zwillingsgraphen auftreten.

Tipp

Auf Wunsch können die Ereignisse mithilfe von Filtern auf bestimmte Ereignisse beschränkt werden.

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>

Die Ausgabe dieses Befehls enthält einige Informationen zur von Ihnen erstellten Route.

Hinweis

Die Bereitstellung der Endpunkte (aus dem vorherigen Schritt) muss abgeschlossen sein, bevor Sie eine Ereignisroute einrichten können, in der diese verwendet werden. Wenn die Routenerstellung fehlschlägt, weil die Endpunkte noch nicht bereit sind, sollten Sie einige Minuten warten und es dann erneut versuchen.

Herstellen einer Verbindung mit der Azure-Funktion

Abonnieren Sie als Nächstes die Azure-Funktion ProcessDTRoutedData für das von Ihnen erstellte Event Grid-Thema. Dies ermöglicht den Fluss der Telemetriedaten vom Zwilling „thermostat67“ über das Event Grid-Thema an die Funktion, mit der dann in Azure Digital Twins der Zwilling „room21“ entsprechend aktualisiert wird.

Dazu erstellen Sie ein Event Grid-Abonnement, das Daten aus dem zuvor erstellten Event Grid-Thema an Ihre Azure-Funktion ProcessDTRoutedData sendet.

Verwenden Sie den folgenden CLI-Befehl, um das Ereignisabonnement zu erstellen. Es ist ein Platzhalter vorhanden, in den Sie einen Namen für dieses Ereignisabonnement eingeben können. Außerdem gibt es Platzhalter, in die Sie Ihre Abonnement-ID, die Ressourcengruppe, den Namen Ihres Event Grid-Themas und den Namen Ihrer Funktions-App eingeben können.

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

Ausführen der Simulation und Anzeigen der Ergebnisse

Nun sollten Ereignisse vom simulierten Gerät an Azure Digital Twins und über den Azure Digital Twins-Graphen übertragen werden können, um Zwillinge nach Bedarf zu aktualisieren. In diesem Abschnitt führen Sie den Gerätesimulator erneut aus, um den von Ihnen eingerichteten vollständigen Ereignisfluss zu starten, und fragen Azure Digital Twins ab, um die Liveergebnisse anzuzeigen.

Wechseln Sie zu Ihrem Konsolenfenster, in dem der Ordner DeviceSimulator\DeviceSimulator geöffnet ist, und führen Sie das Gerätesimulatorprojekt mit dotnet run aus.

Wie beim ersten Ausführen des Gerätesimulators startet das Projekt die Ausführung und Anzeige simulierter Temperaturtelemetriemeldungen. Diese Ereignisse durchlaufen den Datenfluss, den Sie weiter oben für die Aktualisierung des Zwillings thermostat67 eingerichtet haben, und dann den Datenfluss, den Sie anschließend für die Aktualisierung des passenden Zwillings room21 eingerichtet haben.

Screenshot: Konsolenausgabe des Gerätesimulators mit gesendeten Telemetriedaten zur Temperatur

Sie müssen in dieser Konsole keine weiteren Schritte ausführen, aber Sie sollten sie während der nächsten Schritte geöffnet lassen.

Um die Daten von der Azure Digital Twins-Seite anzuzeigen, wechseln Sie zu Ihrem anderen Konsolenfenster, in dem der Ordner AdtSampleApp\SampleClientApp geöffnet ist, und führen Sie das SampleClientApp-Projekt mit dotnet run aus.

Sobald das Projekt ausgeführt wird und Befehle akzeptiert, führen Sie den folgenden Befehl aus, um die Temperaturen abzurufen, die sowohl vom digitalen Zwilling „thermostat67“ als auch vom digitalen Zwilling „room21“ gemeldet werden.

ObserveProperties thermostat67 Temperature room21 Temperature

Sie sollten verfolgen können, wie die Liveaktualisierung der Temperaturen von Ihrer Azure Digital Twins-Instanz alle zwei Sekunden in der Konsole protokolliert wird. Beachten Sie, dass die Temperatur für room21 aktualisiert wird, damit sie mit den Aktualisierungen für thermostat67 übereinstimmt.

Screenshot: Konsolenausgabe mit einem Protokoll der Temperaturmeldungen für ein Thermostat und einen Raum

Nachdem Sie überprüft haben, ob die Liveprotokollierung der Temperatur von Ihrer Instanz richtig funktioniert, können Sie die Ausführung beider Projekte beenden. Da das Tutorial nun abgeschlossen ist, können Sie auch beide Konsolenfenster schließen.

Überprüfung

Nachfolgend wird das in diesem Tutorial erstellte Szenario noch einmal zusammengefasst.

  1. Eine Azure Digital Twins-Instanz verfügt über eine digitale Darstellung einer Etage, eines Raums und eines Thermostats (unten im Diagramm Abschnitt A).
  2. Simulierte Gerätetelemetriedaten werden an die IoT Hub-Instanz gesendet, auf der die Azure-Funktion ProcessHubToDTEvents auf Telemetrieereignisse lauscht. Die Azure-Funktion ProcessHubToDTEvents verwendet die Informationen in diesen Ereignissen zum Festlegen der Temperature-Eigenschaft für „thermostat67“ (Pfeil B im Diagramm).
  3. Eigenschaftsänderungsereignisse in Azure Digital Twins werden an ein Event Grid-Thema geleitet, in dem die Azure-Funktion ProcessDTRoutedData auf Ereignisse lauscht. Die Azure-Funktion ProcessDTRoutedData verwendet die Informationen in diesen Ereignissen zum Festlegen der Temperature-Eigenschaft für „room21“ (Pfeil C im Diagramm).

Diagramm vom Anfang des Artikels mit dem vollständigen Gebäudeszenario

Bereinigen von Ressourcen

Nach Abschluss dieses Tutorials können Sie die zu entfernenden Ressourcen auswählen, abhängig davon, wie Sie weiter vorgehen möchten.

  • Wenn Sie die in diesem Tutorial erstellten Ressourcen nicht benötigen, können Sie die Azure Digital Twins-Instanz und alle anderen Ressourcen in diesem Artikel mit dem CLI-Befehl az group delete löschen. Dadurch werden alle Azure-Ressourcen in einer Ressourcengruppe sowie die Ressourcengruppe selbst gelöscht.

    Wichtig

    Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen.

    Öffnen Sie Azure Cloud Shell oder ein lokales CLI-Fenster, und führen Sie den folgenden Befehl aus, um die Ressourcengruppe und alle darin enthaltenen Elemente zu löschen.

    az group delete --name <your-resource-group>
    
  • Wenn Sie die in diesem Artikel eingerichtete Azure Digital Twins-Instanz weiterhin verwenden, aber einige oder alle ihrer Modelle, Zwillinge und Beziehungen entfernen möchten, können Sie die CLI-Befehle vom Typ az dt verwenden, um die gewünschten Elemente zu entfernen.

    Mit dieser Option werden keine der anderen in diesem Tutorial erstellten Azure-Ressourcen (IoT Hub, Azure Functions-App usw.) entfernt. Sie können diese einzeln mithilfe der entsprechenden dt-Befehle für jeden Ressourcentyp löschen.

Löschen Sie ggf. auch den Projektordner von Ihrem lokalen Computer.

Nächste Schritte

In diesem Tutorial haben Sie ein End-to-End-Szenario erstellt, mit dem veranschaulicht wird, wie eine Azure Digital Twins-Instanz auf Livedaten von Geräten basiert.

Sehen Sie sich als Nächstes die Konzeptdokumentation an, um mehr über die Elemente zu erfahren, mit denen Sie in diesem Tutorial gearbeitet haben: