Übung: Verbinden und Streamen von Azure Digital Twins-Daten an Windkraftanlagen-Ressourcen

Abgeschlossen

Ein Azure SignalR-Dienst wurde als Teil der von Ihnen bereitgestellten ARM-Vorlage verfügbar gemacht. Mit diesem Dienst und dem zugehörigen Setup können Sie eine Verbindung mit Azure Digital Twins herstellen. Wir haben eine Datenpipeline zum Abrufen von Daten aus dem digitalen Zwilling erstellt, die aus der Client-App abstrahiert wird, die in Mixed Reality ausgeführt wird.

Übersicht über Azure SignalR Service

Der Azure SignalR-Dienst vereinfacht den Vorgang des Hinzufügens von Echtzeitwebfunktionen zu Anwendungen über HTTP. Diese Echtzeitfunktionalität ermöglicht es dem Dienst, Inhaltsaktualisierungen an verbundene Clients zu senden, z.B. an eine Single-Page-Web- oder mobile Anwendung. Das Ergebnis ist, dass Clients aktualisiert werden, ohne dass der Server abgefragt werden muss oder neue HTTP-Anforderungen für Aktualisierungen gesendet werden müssen. Bei jedem Szenario, das ein Pushen von Daten vom Server an Clients in Echtzeit erfordert, kann Azure SignalR Service verwendet werden. Herkömmliche Echtzeitfeatures, für die oft Abrufe vom Server erforderlich sind, können auch Azure SignalR Service verwenden.

Sie können Azure SignalR Service mühelos mit anderen Azure-Diensten integrieren, was zusätzliche Szenarios ermöglicht. Azure Functions kann beispielsweise die REST-API verwenden, um Benachrichtigungen an Azure SignalR Service zu pushen. Dort werden die Daten wiederum in Echtzeit an verbundene Clients gepusht. Zusammen mit IoT Hub kann Azure SignalR Service ermöglichen, dass Echtzeitsensordaten an verbundene Clients übertragen werden, um Echtzeitüberwachungsszenarios zu ermöglichen.

Mit Echtzeitszenarios gehen oft Datenflüsse mit hoher Frequenz sowie große Mengen gleichzeitiger Verbindungen zwischen dem Client und dem Server einher. Sie erfordern eine nicht triviale Infrastruktureinrichtung, damit die Funktionalität skaliert verwendet werden kann. Das Konfigurieren dieser Infrastruktur im großen Maßstab ist schwierig. Die Konfiguration erfordert in der Regel anwendungsspezifische Logik auf verschiedenen Netzwerkebenen. Azure SignalR Service kümmert sich um diese Probleme, sodass Sie sich auf die Anwendungslogik konzentrieren können, die verbundene Funktionen in Echtzeit liefert. Sie können Echtzeitfunktionen dynamisch skalieren und bezahlen dabei nur, was Sie nutzen. Der Dienst erbt auch die Funktionen von Azure SignalR Service für permanente Verbindungen über verschiedene Datentransporte.

Eine Vielzahl von Branchen haben bereits Azure SignalR Service für unterschiedlichste Anwendungstypen verwendet, die Inhaltsupdates in Echtzeit erfordern. Die folgende Liste enthält einige Beispiele, für die sich Azure SignalR Service besonders eignet:

  • Sehr häufige Datenupdates: Spiele, Abstimmungen, Befragungen, Auktionen
  • Dashboards und Überwachung: Unternehmens-Dashboard, Finanzmarktdaten, sofortige Vertriebsupdates, Ranglisten bei Mehrspieler-Games und IoT-Überwachung
  • Echtzeitstandort auf Karten: Nachverfolgung in der Logistik, Nachverfolgung des Lieferstatus, Transportstatusupdates, GPS-Apps
  • Zielgerichtete Werbung in Echtzeit: Personalisierte Push-Anzeigen und Angebote in Echtzeit sowie interaktive Anzeigen
  • Zusammenarbeits-Apps: Zusammenarbeit, Whiteboard-Apps und Software für Teambesprechungen
  • Pushbenachrichtigungen: Soziale Netzwerke, E-Mail, Spiele und Reisewarnungen
  • Echtzeitübertragungen: Liveübertragung von Audio- bzw. Videosendungen, Liveuntertitelung, -übersetzung und -übertragung von Veranstaltungen bzw. Nachrichten
  • IoT- und verbundene Geräte: IoT-Echtzeitmetriken, Remotesteuerung, Echtzeitstatus und Standortnachverfolgung
  • Automatisierung: Echtzeitauslöser aus Upstreamereignissen

Für Ihren Anwendungsfall der Windturbine verwendet die Kommunikationsschicht zwischen den Azure Digital Twins Windturbinendaten und Ihrem Mixed-Reality-Gerät den Azure SignalR Service und einen in die Mixed-Reality-App eingebetteten SignalR-Client.

Um die Daten mithilfe von Azure Digital Twins für Ihre Client-App verfügbar zu machen, müssen Sie eine Verbindung mit dem Azure SignalR-Dienst herstellen. Die Mixed Reality-App, die Sie erstellen, implementiert einen SignalR-Client zum Herstellen einer Verbindung mit dem SignalR-Dienst. Zum Einrichten der Kommunikation zwischen dem SignalR-Client und dem Azure SignalR-Dienst muss der Client die negotiate-Funktion im SignalR-Dienst aufrufen.

Konfigurieren Sie Ihre DeviceSimulator mit Ihren Azure Digital Twins-Verbindungsparametern und Authentifizierungsdetails, die Sie in der vorherigen Übung erfasst haben.

App-Anmeldeinformationen abrufen

  1. Öffnen Sie DeviceSimulator.sln in Visual Studio und konfigurieren Sie DeviceSimulator mit dem Hostnamen für den ADT-Ressourcentyp, der von der ARM-Vorlage erstellt wurde.

  2. Öffnen Sie die Textdatei Azure_config_settings.txt, die Sie in der letzten Übung mit den wichtigsten Azure ADT-Konfigurationsparametern erstellt haben, mithilfe eines Text-Editors. Wenn Ihre PowerShell-Sitzung aktiv bleibt, suchen Sie alternativ nach der Ausgabe ihres get-content-Befehls.

  3. Suchen Sie aus der Datei Azure_config_settings.txt, oder aus der Ausgabe Ihres get-content-Befehls in PowerShell das Schlüssel-Wert-Paar für den adtHostName-Schlüssel und kopieren Sie den Wert. Dies sollte in etwa wie folgt aussehen:

    https://myprojadtxxxxxxxxxx.api.eus.digitaltwins.azure.net
    

    Screenshot der Befehlszeilenschnittstelle, in der die Eingabeaufforderung „get-content“ ausgeführt wird

  4. Öffnen Sie in Ihrer Visual Studio DeviceSimulator-Lösung die Datei AzureIoTHub.cs im Editor, indem Sie im Projektmappen-Explorer auf die Datei doppelklicken. Fügen Sie den in Schritt 2 kopierten Wert für Ihr adtHostName Schlüssel/Paar in die String-Variable adtInstanceUrl ein.

    Screenshot der DeviceSimulator-Projektmappe mit der geöffneten Azure IoT Hub DOT CS-Datei. Die Werte für Hostname und Instanz-URL wurden hinzugefügt.

Konfigurieren des Gerätesimulators mit primärer Verbindungszeichenfolge

Konfigurieren Sie DeviceSimulator mit der primären Verbindungszeichenfolge für das IoT Hub, die von der ARM-Vorlage erstellt wurde.

Wichtig

Dieses Modul enthält Schritte zum Verbinden eines Geräts mithilfe einer freigegebenen Zugriffssignatur, die auch als symmetrische Schlüsselauthentifizierung bezeichnet wird. Diese Authentifizierungsmethode ist praktisch 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.

  1. Suchen Sie aus der Datei Azure_config_settings.txt, oder aus der Ausgabe Ihres get-content-Befehls in PowerShell das Schlüssel-Wert-Paar für den connectionString-Schlüssel und kopieren Sie den Wert. Dies sollte in etwa wie folgt aussehen:

    HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
    
  2. Öffnen Sie in Ihrer Visual Studio DeviceSimulator-Lösung öffnen Sie die AzureIoTHub.cs im Editor und fügen Sie Ihren connectionString im vorherigen Schritt kopierten Wert in die Zeichenfolgenvariable iotHubConnectionString ein.

    Screenshot der Device Simulator-Lösung mit geöffneter Azure IoT Hub-Cs-Datei und Dem IoT Hub-Verbindungszeichenfolgenwert hinzugefügt.

Konfigurieren des Gerätesimulators mit Authentifizierungsschlüsseln

Konfigurieren von DeviceSimulator mit den Authentifizierungsschlüsseln, die von der ARM-Vorlage erstellt wurden.

  1. Öffnen Sie die Textdatei AppCredentials.txt, die Sie in der vorherigen Übung erstellt haben.

  2. Öffnen Sie in Ihrer Visual Studio-Projektmappe DeviceSimulator die Datei PropUpdater.cs im Editor. Kopieren Sie die GUIDs (Globally Unique Identifiers) aus Ihrer Textdatei, und fügen Sie diese in die .cs-Datei ein. Verwenden Sie die folgenden Zuordnungen der .cs-Variablen zur JSON-Datenausgabe in Ihrer Textdatei:

    AppCredentials.txt PropUpdater.cs
    appId clientId
    password clientSecret
    tenant tenantId

    Screenshot der Device Simulator-Lösung mit geöffneten PropUpdater.cs Datei, geheimen und Mandanten-ID-Werten hinzugefügt.

  3. Wählen Sie Datei>Alle Speichern aus, um Ihre Arbeit in Visual Studio zu speichern.

Verbinden Sie Ihre Azure Digital Twins Prefab in Unity mit den digitalen Zwillingen, damit Sie simulierte Telemetriedaten von der DeviceSimulator empfangen können.

Hinzufügen des Azure Digital Twins-Verbindungspräfabs

Fügen Sie der Unity-Szene die Azure Digital Twins-Verbindungs-Prefab-Ressource hinzu und konfigurieren Sie diese.

  1. Kehren Sie zu Ihrem Unity-Projekt zurück.

  2. Wählen Sie das ADTConnection Spielobjekt in der Hierarchieaus. Wenn es in Ihrer Hierarchie fehlt, ziehen Sie das Assets>ADTPrefabs>ADTConnection Prefab-Ressource in Ihre Szenenhierarchie.

    Screenshot der Unity-Hierarchie mit hervorgehobener Hauptszene

  3. Öffnen Sie die Textdatei, die Sie in der letzten Übung erstellt haben, Azure_config_settings.txt, in einem Text-Editor. Die Datei enthält die wichtigsten Konfigurationsparameter von Azure Digital Twins. Wenn Ihre PowerShell-Sitzung aktiv bleibt, suchen Sie alternativ nach der Ausgabe ihres get-content-Befehls.

  4. Suchen Sie aus der Datei Azure_config_settings.txt, oder aus der Ausgabe Ihres get-content-Befehls in PowerShell das Schlüssel-Wert-Paar für den signalRNegotiatePath-Schlüssel und kopieren Sie den Wert. Dies sollte in etwa wie folgt aussehen:

    https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate
    
  5. Fügen Sie diesen Wert dem Url-Parameter unter ADT Data Handler (Script) mit der in Schritt 1 erhaltenen Funktion Function Url hinzu. Schließen Sie alles bis einschließlich …/api in die URL ein. Schließen Sie weder den letzten umgekehrten Schrägstrich noch das Wort negotiate ein.

    Screenshot des Unity-Editors mit ausgewählter Azure Digital Twins-Verbindung und dem hinzugefügten ADT-Datenhandlerskript.

  6. Speichern Sie die Szene.

Nun, da die Azure-Dienste eingerichtet sind und sich die entsprechenden Zeiger in Ihrer Unity-Szene befinden, können Sie eine Benutzeroberfläche (UI) zur Visualisierung der Operationsdaten erstellen.