Tutorial: Verwenden von Azure IoT Hub-Nachrichtenanreicherungen
Nachrichtenanreicherungen sind die Fähigkeit von Azure IoT Hub, Nachrichten mit zusätzlichen Informationen zu stempeln, bevor sie an den angegebenen Endpunkt gesendet werden. Ein Grund für die Verwendung von Nachrichtenanreicherungen: Auf diese Weise lassen sich Daten einbeziehen, die zur Vereinfachung der Downstreamverarbeitung verwendet werden können. So kann beispielsweise durch die Anreicherung von Gerätenachrichten mit einem Gerätezwillingstag die Last bei Kunden reduziert werden, um Gerätezwillings-API-Aufrufe für diese Informationen durchzuführen. Weitere Informationen finden Sie unter Übersicht über Nachrichtenanreicherungen.
Im ersten Teil dieses Tutorials haben Sie gesehen, wie Sie benutzerdefinierte Endpunkte erstellen und Nachrichten an andere Azure-Dienste weiterleiten. In diesem Tutorial lernen Sie zwei Möglichkeiten zum Erstellen und Konfigurieren der Ressourcen kennen, die zum Testen der Nachrichtenanreicherungen für einen IoT-Hub benötigt werden. Die Ressourcen umfassen einen zweiten Speichercontainer für ein vorhandenes Speicherkonto (erstellt im ersten Teil des Tutorials), um die angereicherten Nachrichten und eine Nachrichtenroute zu speichern, um sie dort zu senden. Nachdem die Konfigurationen für das Nachrichtenrouting und die Nachrichtenanreicherungen abgeschlossen wurden, verwenden Sie eine Anwendung, um Nachrichten an den IoT-Hub zu senden. Der Hub leitet sie dann an beide Speichercontainer weiter. Nur die an den Endpunkt für den Speichercontainer enriched gesendeten Nachrichten werden angereichert.
In diesem Tutorial führen Sie die folgenden Aufgaben aus:
- Erstellen Sie einen Container in Ihrem Speicherkonto.
- Erstellen eines benutzerdefinierten Endpunkts für das Speicherkonto und Weiterleiten von Nachrichten aus der IoT Hub-Instanz an den Endpunkt.
- Konfigurieren Sie Nachrichtenerweiterungen, die an den neuen Endpunkt weitergeleitet werden.
- Führen Sie eine App aus, die ein IoT-Gerät simuliert, das Nachrichten an den Hub sendet.
- Zeigen Sie die Ergebnisse an, und stellen Sie sicher, dass die Nachrichtenanreicherungen auf die ausgewählten Nachrichten angewendet werden.
Voraussetzungen
Sie benötigen ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Sie müssen das Tutorial: Senden von Gerätedaten an Azure Storage mit IoT Hub-Nachrichtenweiterleitung abgeschlossen haben und die Ressourcen aufbewahrt haben, die Sie dafür erstellt haben.
Stellen Sie sicher, dass Port 8883 in Ihrer Firewall geöffnet ist. Für das Beispielgerät in diesem Tutorial wird das MQTT-Protokoll verwendet, das über Port 8883 kommuniziert. In einigen Netzwerkumgebungen von Unternehmen oder Bildungseinrichtungen ist dieser Port unter Umständen blockiert. Weitere Informationen und Problemumgehungen finden Sie unter Herstellen einer Verbindung mit IoT Hub (MQTT).
Für das Azure-Portal gibt es keine anderen Voraussetzungen.
Einen Container in Ihrem Speicherkonto erstellen
Im ersten Teil dieses Tutorials haben Sie ein Speicherkonto und einen Container für weitergeleitete Nachrichten erstellt. Jetzt sollten Sie einen zweiten Container für angereicherte Nachrichten erstellen.
Suchen Sie im Azure-Portal nach Speicherkonten.
Wählen Sie das zuvor von Ihnen erstellte Konto aus.
Wählen Sie im Speicherkontomenü im Abschnitt Datenspeicher die Option Container aus.
Wählen Sie Container aus, um einen neuen Container zu erstellen.
Nennen Sie den Container
enriched
, und wählen Sie Erstellen aus.
Weiterleiten von Nachrichten an einen zweiten Endpunkt
Erstellen Sie einen zweiten Endpunkt und leiten Sie die erweiterten Nachrichten an.
Wichtig
Dieser Artikel enthält Schritte zum Herstellen einer Verbindung mit einem Dienst mithilfe einer Shared Access Signature. Diese Authentifizierungsmethode eignet sich für Tests und Auswertungen, aber die Authentifizierung bei einem Dienst mit Microsoft Entra ID oder verwalteten Identitäten ist ein sichererer Ansatz. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit von IoT-Lösungen > Cloudsicherheit.
Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
Wählen Sie im Ressourcenmenü unter Hubeinstellungen die Einstellung Nachrichtenrouting und dann Hinzufügen aus.
Erstellen Sie auf der Registerkarte Endpunkt einen Speicherendpunkt, indem Sie die folgenden Informationen angeben:
Parameter Wert Endpunkttyp Wählen Sie Speicher. Endpunktname Geben Sie ContosoStorageEndpointEnriched
ein.Azure Storage-Container Wählen Sie Container auswählen. Folgen Sie den Anweisungen zum Auswählen des Speicherkontos und des Containers enriched, die Sie im vorhergehenden Abschnitt erstellt haben. Codieren Wählen Sie JSON aus. Wenn dieses Feld ausgegraut ist, wird JSON in der Region Ihres Speicherkontos nicht unterstützt. Fahren Sie in diesem Fall mit der Standardeinstellung AVRO fort. Übernehmen Sie bei den restlichen Parametern die Standardwerte, und wählen Sie Erstellen + Weiter aus.
Fahren Sie mit der Erstellung der neuen Route fort, da Sie nun den Speicherendpunkt hinzugefügt haben. Geben Sie für die neue Route folgende Informationen an:
Parameter Wert Name ContosoStorageRouteEnriched Datenquelle Vergewissern Sie sich, dass Telemetrienachrichten für Geräte in der Dropdownliste ausgewählt ist. Route aktivieren Überprüfen Sie, ob dieses Feld auf enabled
festgelegt ist.Routingabfrage Geben Sie level="storage"
als Abfragezeichenfolge ein.Wählen Sie Erstellen + Anreicherungen hinzufügen aus.
Hinzufügen von Nachrichtenanreicherung zum neuen Endpunkt
Erstellen Sie drei Nachrichtenanreicherungen, die an den angereicherten Speichercontainer weitergeleitet werden.
Fügen Sie auf der Registerkarte Anreicherung des Assistenten Route hinzufügen drei Nachrichtenanreicherungen für die Nachrichten hinzu, die an den Endpunkt für den Speichercontainer enriched geleitet werden.
Fügen Sie diese Werte als Nachrichtenanreicherung für den Endpunkt „ContosoStorageEndpointEnriched“ hinzu:
Name Wert myIotHub $hubname
DeviceLocation $twin.tags.location
(setzt voraus, dass der Gerätezwilling über ein Standorttag verfügt)customerID 6ce345b8-1e4a-411e-9398-d34587459a3a
Wenn Sie fertig sind, sollten Ihre Anreicherungen ähnlich wie in dieser Abbildung aussehen:
Wählen Sie Hinzufügen aus, um die Nachrichtenanreicherungen hinzuzufügen.
Sie verfügen jetzt über Nachrichtenanreicherungen, die für alle Nachrichten eingerichtet sind, die an den Endpunkt weitergeleitet werden, den Sie für angereicherte Nachrichten erstellt haben. Wenn Sie dem Gerätezwilling kein Standorttag hinzufügen möchten, können Sie zum Abschnitt Nachrichtenanreicherungen testen springen, um das Lernprogramm fortzusetzen.
Standort-Tag zum Gerätezwilling hinzufügen
Eine der auf Ihrem IoT-Hub konfigurierten Nachrichtenanreicherungen gibt einen Schlüssel für DeviceLocation an, dessen Wert durch den folgenden Gerätezwillingspfad bestimmt wird: $twin.tags.location
. Wenn Ihr Gerätezwilling kein Standort-Tag hat, wird der Zwillingspfad, $twin.tags.location
, als Zeichenfolge für den DeviceLocation-Schlüssel in den Nachrichtenanreicherungen eingefügt.
Führen Sie diese Schritte aus, um dem Gerätezwilling über das Portal ein Standort-Tag hinzuzufügen:
Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
Wählen Sie im Navigationsmenü des IoT-Hubs Geräte und dann Ihr Gerät aus.
Wählen Sie oben auf der Geräteseite die Registerkarte Gerätezwilling aus, und fügen Sie die folgende Zeile direkt vor der schließenden geschweiften Klammer am unteren Rand des Gerätezwillings hinzu. Klicken Sie dann auf Speichern.
, "tags": {"location": "Plant 43"}
Tipp
Warten Sie etwa fünf Minuten, bevor Sie mit dem nächsten Abschnitt fortfahren. Es kann bis zu so lange dauern, bis Updates des Gerätezwillings in Nachrichtenanreicherungswerten wiedergegeben werden.
Weitere Informationen dazu, wie Gerätezwillingspfade mit Nachrichtenanreicherungen behandelt werden, finden Sie unter Einschränkungen für Nachrichtenanreicherungen. Wenn Sie mehr über Gerätezwillinge erfahren möchten, lesen Sie den Abschnitt Gerätezwillinge in IoT Hub verstehen und nutzen.
Testen von Nachrichtenanreicherungen
Nachdem Sie die Nachrichtenanreicherungen für den Endpunkt ContosoStorageEndpointEnriched konfiguriert haben, führen Sie die App „Simuliertes Gerät“ aus, um Nachrichten an den IoT-Hub zu senden. An diesem Punkt wurde das Nachrichtenrouting wie folgt eingerichtet:
Nachrichten, die Sie im ersten Teil des Tutorials erstellt haben, werden nicht an den von Ihnen erstellten Speicherendpunkt weitergeleitet und werden dann im von Ihnen erstellten Speichercontainer gespeichert.
Nachrichten, die an den Speicherendpunkt ContosoStorageEndpointEnriched weitergeleitet wurden, werden angereichert und im Speichercontainer angereichert gespeichert.
Wenn Sie die SimulationdDevice-Konsolenanwendung aus dem ersten Teil dieses Tutorials noch nicht ausführen, führen Sie sie erneut aus:
Tipp
Wenn Sie die Azure CLI-Schritte dieses Tutorials ausführen, sollten Sie den Beispielcode in einer separaten Sitzung ausführen. Auf diese Weise können Sie zulassen, dass der Beispielcode weiter ausgeführt wird, während Sie mit den restlichen CLI-Schritten fortfahren.
Navigieren Sie im Beispielordner zu dem Ordner
/iot-hub/Tutorials/Routing/SimulatedDevice/
.Die Variablendefinitionen, die Sie aktualisiert haben, sollten noch gültig sein, aber wenn nicht, bearbeiten Sie sie in der
Program.cs
-Datei:Suchen Sie die Variablendefinitionen oben in der Program-Klasse. Aktualisieren Sie folgende Variablen mit Ihren eigenen Informationen:
- s_myDeviceId: Die Geräte-ID, die Sie beim Registrieren des Geräts zugewiesen haben.
- s_iotHubUri: Der Hostname Ihrer IoT Hub-Instanz im Format
IOTHUB_NAME.azure-devices.net
- s_deviceKey: Der Primärschlüssel des Geräts, der in den Geräteidentitätsinformationen gefunden wurde.
Speichern und schließen Sie die Datei.
Führen Sie den Beispielcode aus:
dotnet run
Nach dem Verlassen der Konsolenanwendung, die für einige Minuten ausgeführt werden soll, zeigen Sie die Daten an:
Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto.
Wählen Sie dann im Navigationsmenü den Speicherbrowser aus. Wählen Sie Blob-Container aus, um die beiden Container anzuzeigen, die Sie im Laufe dieser Lernprogramme erstellt haben.
Den Nachrichten im Container enriched wurden die Nachrichtenanreicherungen hinzugefügt. Die Nachrichten im Container, den Sie zuvor erstellt haben, enthalten die Rohnachrichten ohne Anreicherungen. Führen Sie einen Drilldown in einen der angereicherten Container bis zum unteren Ende aus und öffnen Sie dann die aktuellste Nachrichtendatei. Führen Sie dann denselben Vorgang für den anderen Container aus, um zu überprüfen, ob einer angereichert ist und der andere nicht.
Bei angereicherten Nachrichten sollten Sie "myIotHub"
mit dem Hubnamen, dem Speicherort und der Kunden-ID sehen, wie im Folgenden zu sehen:
{
"EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z",
"Properties":
{
"level":"storage",
"myIotHub":"{your hub name}",
"DeviceLocation":"Plant 43",
"customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a"
},
"SystemProperties":
{
"connectionDeviceId":"Contoso-Test-Device",
"connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"connectionDeviceGenerationId":"636930642531278483",
"enqueuedTime":"2019-05-10T06:06:32.7220000Z"
},"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9"
}
Bereinigen von Ressourcen
Wenn Sie alle für dieses Tutorial erstellten Ressourcen entfernen möchten, löschen Sie die Ressourcengruppe. Diese Aktion löscht alle in der Gruppe enthaltenen Ressourcen. Wenn Sie nicht die gesamte Ressourcengruppe löschen möchten, können Sie einzelne Ressourcen darin für die Löschung auswählen.
- Navigieren Sie im Azure-Portal zu der Ressourcengruppe, die die IoT Hub-Instanz und das Speicherkonto für dieses Tutorial enthält.
- Prüfen Sie alle Ressourcen in der Ressourcengruppe, um zu entscheiden, welche Ressourcen Sie entfernen möchten.
- Wenn Sie alle Ressourcen löschen möchten, klicken Sie auf Ressourcengruppe löschen.
- Wenn Sie nur bestimmte Ressourcen löschen möchten, aktivieren Sie die Kontrollkästchen neben den jeweiligen Ressourcennamen, um die zu löschenden Ressourcen auszuwählen. Wählen Sie anschließend die Option Löschen.
Nächste Schritte
In diesem Tutorial haben Sie Nachrichtenanreicherungen für IoT Hub-Nachrichten konfiguriert und getestet, während sie an einen Endpunkt weitergeleitet werden.
Weitere Informationen zu Nachrichtenanreicherungen finden Sie unter Übersicht über Nachrichtenanreicherungen.
Weitere Informationen zu IoT Hub finden Sie im nächsten Tutorial.