Freigeben über


Tutorial: Senden von Gerätedaten an Azure Storage über IoT Hub-Nachrichtenrouting

Verwenden Sie Nachrichtenrouting in Azure IoT Hub, um Telemetriedaten von Ihren IoT-Geräten an Azure-Dienste wie Blob-Speicher, Service Bus-Warteschlangen, Service Bus-Themen und Event Hubs zu senden. Jede IoT Hub-Instanz verfügt über einen standardmäßig integrierten Endpunkt, der mit Event Hubs kompatibel ist. Sie können auch benutzerdefinierte Endpunkte erstellen und Nachrichten an andere Azure-Dienste weiterleiten, indem Sie Routingabfragen definieren. Jede Nachricht, die bei einer IoT Hub-Instanz ankommt, wird an alle Endpunkte weitergeleitet, mit deren Routingabfragen sie übereinstimmt. Wenn eine Nachricht keiner der definierten Routingabfragen entspricht, wird sie an den Standardendpunkt weitergeleitet.

In diesem Tutorial führen Sie die folgenden Aufgaben aus:

  • Erstellen einer IoT Hub-Instanz und Senden von Gerätenachrichten an diese
  • Erstellen Sie ein Speicherkonto.
  • Erstellen eines benutzerdefinierten Endpunkts für das Speicherkonto und Weiterleiten von Nachrichten aus der IoT Hub-Instanz an den Endpunkt
  • Anzeigen von Gerätenachrichten im Speicherkontoblob

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Ein IoT-Hub in Ihrem Azure-Abonnement. Wenn Sie noch keinen IoT-Hub haben, können Sie die Schritte unter "Erstellen eines IoT-Hubs" ausführen.

  • In diesem Lernprogramm wird Beispielcode aus dem Microsoft Azure IoT SDK für .NET verwendet.

    • Laden Sie das SDK-Repository auf Ihren Entwicklungscomputer herunter, oder klonen Sie es.
    • Auf Ihrem Entwicklungscomputer muss das .NET Core SDK 3.0.0 oder höher installiert sein. Überprüfen Sie Ihre Version, indem Sie dotnet --version ausführen und, falls erforderlich, .NET herunterladen.
  • Stellen Sie sicher, dass Port 8883 in Ihrer Firewall geöffnet ist. Für das Beispiel in diesem Tutorial wird das MQTT-Protokoll verwendet, das über Port 8883 kommuniziert. In einigen Netzwerkumgebungen von Unternehmen oder Bildungseinrichtungen könnte dieser Port unter Umständen blockiert sein. Weitere Informationen und Möglichkeiten zum Umgehen dieses Problems finden Sie unter "Herstellen einer Verbindung mit IoT Hub".

  • Installieren Sie optional Azure IoT Explorer (Vorschau). Dieses Tool hilft Ihnen, die Nachrichten zu beobachten, wenn sie an Ihrer IoT Hub-Instanz ankommen. In diesem Artikel wird Azure IoT Explorer verwendet.

Für das Azure-Portal gibt es keine anderen Voraussetzungen.

Registrieren eines Geräts und Senden von Nachrichten an IoT Hub

Registrieren Sie ein Gerät bei Ihrer IoT Hub-Instanz.

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 Sicherheit von IoT-Lösungen > für die Verbindungssicherheit".

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.

  2. Wählen Sie im Abschnitt Geräteverwaltung des Menüs die Option Geräte aus.

  3. Klicken Sie auf Gerät hinzufügen.

    Screenshot, der das Hinzufügen eines neuen Geräts im Azure-Portal zeigt.

  4. Geben Sie eine Geräte-ID an, und klicken Sie auf Speichern.

  5. Das neue Gerät sollte sich jetzt in der Liste der Geräte aufgeführt sein. Falls nicht, aktualisieren Sie die Seite. Wählen Sie die Geräte-ID aus, um die Gerätedetailseite zu öffnen.

  6. Kopieren Sie einen der Geräteschlüssel, und speichern Sie ihn. Mit diesem Wert konfigurieren Sie den Beispielcode, der simulierte Gerätetelemetriemeldungen generiert.

    Screenshot, der zeigt, wie Der Primärschlüssel für ein IoT-Gerät von der Seite mit den Gerätedetails im Azure-Portal kopiert wird.

Da Sie nun über eine Geräte-ID und einen Schlüssel verfügen, können Sie mithilfe des Beispielcodes Gerätetelemetrienachrichten an IoT Hub senden.

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.

  1. Wenn Sie nicht teil der Voraussetzungen waren, laden Sie das Microsoft Azure IoT SDK für .NET-Repository jetzt von GitHub herunter, oder klonen Sie es.

  2. Navigieren Sie aus dem Ordner, in den Sie das SDK heruntergeladen oder geklont haben, zum Ordner azure-iot-sdk-csharp\iothub\device\samples\how to guides\HubRoutingSample.

  3. Installieren Sie das Microsoft Azure IoT SDK für .NET und die erforderlichen Abhängigkeiten, wie in der HubRoutingSample.csproj Datei angegeben:

    dotnet restore
    
  4. Öffnen Sie die Datei Parameters.cs in einem Editor Ihrer Wahl. Diese Datei zeigt die parameter, die vom Beispiel unterstützt werden. Nur der PrimaryConnectionString Parameter wird in diesem Artikel beim Ausführen des Beispiels verwendet. Sehen Sie sich den Code in dieser Datei an. Es sind keine Änderungen erforderlich.

  5. Erstellen Sie den Code, und führen Sie ihn mithilfe des folgenden Befehls aus:

    Ersetzen Sie <myDevicePrimaryConnectionString> durch die primäre Verbindungszeichenfolge von Ihrem Gerät in Ihrem IoT-Hub.

    dotnet run --PrimaryConnectionString <myDevicePrimaryConnectionString>
    
  6. Wenn Nachrichten an Ihre IoT Hub-Instanz gesendet werden, sollten sie in der Ausgabe ausgegeben werden. Behalten Sie die Ausführung dieses Programms für die Dauer des Tutorials bei.

Konfigurieren des IoT-Explorers zum Anzeigen von Nachrichten

Konfigurieren Sie den IoT-Explorer für die Verbindungsherstellung mit Ihrer IoT Hub-Instanz und das Lesen von Nachrichten, sobald diese am integrierten Endpunkt ankommen.

Rufen Sie zunächst die Verbindungszeichenfolge für Ihre IoT Hub-Instanz ab.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.

  2. Klicken Sie im Abschnitt Sicherheitseinstellungen des Menüs auf Richtlinien für gemeinsamen Zugriff.

  3. Wählen Sie die Richtlinie iothubowner aus.

    Screenshot, der zeigt, wie die Richtlinie 'iothubowner' für den freigegebenen Zugriff im Azure-Portal ausgewählt wird.

  4. Kopieren Sie den Wert unter Primäre Verbindungszeichenfolge.

    Screenshot, der zeigt, wie die primäre Verbindungszeichenfolge für die iothubowner-Richtlinie eines IoT-Hubs im Azure-Portal kopiert wird.

Nun werden Sie den IoT-Explorer dieser Verbindungszeichenfolge für Ihre IoT Hub-Instanz konfigurieren.

  1. Öffnen Sie den IoT-Explorer auf Ihrem Entwicklungscomputer.

  2. Wenn diese Option angezeigt wird, wählen Sie "Über IoT Hub-Verbindungszeichenfolge verbinden" aus.

    Screenshot des Willkommensbereichs von Azure IoT Explorer mit hervorgehobener Option zum Herstellen einer Verbindung über eine IoT Hub-Verbindungszeichenfolge.

  3. Wählen Sie Verbindung hinzufügen aus.

    Screenshot, der das Hinzufügen einer IoT-Hubverbindung im Azure IoT-Explorer zeigt.

  4. Fügen Sie die Verbindungszeichenfolge Ihrer Hub-Instanz in das Textfeld ein.

  5. Wählen Sie Speichern aus.

  6. Sobald Sie eine Verbindung mit Ihrer IoT Hub-Instanz herstellen, sollten Ihnen eine Geräteliste angezeigt werden. Wählen Sie die Geräte-ID aus, die Sie für dieses Tutorial erstellt haben.

  7. Wählen Sie Telemetrie aus.

  8. Während Ihr Gerät weiterhin ausgeführt wird, wählen Sie Start aus. Wenn Ihr Gerät nicht läuft, wird Telemetrie nicht angezeigt.

    Screenshot des Telemetriebereichs für Geräte im Azure IoT-Explorer, der zeigt, wie die Überwachung der Gerätetelemetrie gestartet werden kann.

  9. Ihnen sollten die Nachrichten angezeigt werden, die von Ihrem Gerät aus ankommen, wobei die neueste ganz oben stehen sollte.

    Screenshot der Nachrichten, die am IoT-Hub auf dem integrierten Endpunkt ankommen.

    Sehen Sie sich die eingehenden Nachrichten einige Momente lang an, um zu prüfen, ob drei verschiedene Arten von Nachrichten angezeigt werden: „normal“, „storage“ (Speicher) und „critical“ (kritisch). Nachdem alle drei Arten von Nachrichten angezeigt wurden, können Sie Ihr Gerät beenden.

Diese Nachrichten kommen alle am standardmäßig integrierten Endpunkt für Ihre IoT Hub-Instanz an. In den nächsten Abschnitten erstellen Sie einen benutzerdefinierten Endpunkt und leiten einige dieser Nachrichten basierend auf den Nachrichteneigenschaften an den Speicher weiter. Diese Nachrichten werden im IoT-Explorer nicht mehr angezeigt, da Nachrichten nur zum integrierten Endpunkt wechseln, wenn sie nicht mit anderen Routen im IoT-Hub übereinstimmen.

Einrichten der Nachrichtenweiterleitung

Sie leiten Nachrichten basierend auf Eigenschaften, die vom simulierten Gerät an die Nachricht angefügt werden, an verschiedene Ressourcen weiter. Nachrichten ohne benutzerdefinierte Weiterleitung, werden an den Standardendpunkt gesendet (Nachrichten/Ereignisse).

Die Beispiel-App in diesem Tutorial weist jeder Nachricht, die sie an die IoT Hub-Instanz sendet, eine level-Eigenschaft zu. Jede Nachricht wird zufällig der Ebene (engl.: level) normal, storage oder critical zugewiesen.

Der erste Schritt besteht darin, den Endpunkt einzurichten, an den die Daten weitergeleitet werden. Danach wird die Nachrichtenroute eingerichtet, die diesen Endpunkt verwendet. Nach Einrichtung des Routings können Sie die Endpunkte und Nachrichtenrouten im Portal anzeigen.

Speicherkonto erstellen

Erstellen Sie ein Azure Storage-Konto und einen Container innerhalb dieses Kontos, der die Gerätenachrichten enthält, die an das Konto weitergeleitet werden.

  1. Suchen Sie im Azure-Portal nach Speicherkonten.

  2. Klicken Sie auf Erstellen.

  3. Geben Sie die folgenden Werte für Ihr Speicherkonto an:

    Parameter Wert
    Abonnement Wählen Sie dasselbe Abonnement aus, das Ihre IoT Hub-Instanz enthält.
    Ressourcengruppe Wählen Sie dieselbe Ressourcengruppe aus, die Ihre IoT Hub-Instanz enthält.
    Speicherkontoname Geben Sie einen global eindeutigen Namen für Ihr Speicherkonto an.
    Leistung Übernehmen Sie den Standardwert Standard.

    Screenshot, der zeigt, wie Sie ein Speicherkonto im Azure-Portal erstellen.

  4. Sie können alle anderen Standardwerte akzeptieren, indem Sie auf Überprüfen und erstellen klicken.

  5. Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen aus.

  6. Wenn die Bereitstellung abgeschlossen ist, wählen Sie Zu Ressource wechseln aus.

  7. Wählen Sie im Speicherkontomenü im Abschnitt Datenspeicher die Option Container aus.

  8. Wählen Sie + Container aus, um einen neuen Container zu erstellen.

    Screenshot, der zeigt, wie Sie einen Container für ein Speicherkonto im Azure-Portal erstellen.

  9. Geben Sie einen Namen für Ihren Container ein, und klicken Sie auf Erstellen.

Weiterleiten an ein Speicherkonto

Richten Sie jetzt die Weiterleitung für das Speicherkonto ein. In diesem Abschnitt definieren Sie einen neuen Endpunkt, der auf das von Ihnen erstellte Speicherkonto verweist. Anschließend erstellen Sie eine Route, die nach Nachrichten filtert, für die die Leveleigenschaft auf "Speicher" festgelegt ist, und diese Nachrichten an den Speicherendpunkt weiterzuleiten.

Hinweis

Die Daten können entweder im Apache Avro-Format (Standardeinstellung) oder im JSON-Format in den Blobspeicher geschrieben werden.

Das Codierungsformat kann nur beim Konfigurieren des Blob Storage-Endpunkt festgelegt werden. Das Format kann für einen zuvor konfigurierten Endpunkt nicht geändert werden. Bei Verwendung der JSON-Codierung müssen Sie in den Nachrichtensystemeigenschaften den Inhaltstyp (contentType) auf „JSON“ und die Inhaltscodierung (contentEncoding) auf „UTF-8“ festlegen.

Ausführlichere Informationen zur Verwendung eines Blob-Speicherendpunkts finden Sie unter Azure Storage als Routingendpunkt.

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 Praktiken für die Sicherheit von IoT-Lösungen > Cloud-Sicherheit".

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.

  2. Wählen Sie im Ressourcenmenü unter Hubeinstellungen die Einstellung Nachrichtenrouting und dann Hinzufügen aus.

    Screenshot der Position der Schaltfläche

  3. Erstellen Sie auf der Registerkarte Endpunkt einen Speicherendpunkt, indem Sie die folgenden Informationen angeben:

    Parameter Wert
    Endpunkttyp Wählen Sie Speicher.
    Endpunktname Geben Sie einen eindeutigen Namen für diesen Endpunkt an.
    Azure Storage-Container Wählen Sie Container auswählen. Folgen Sie den Anweisungen zum Auswählen des Speicherkontos und Containers, 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.

    Screenshot des Bereichs „Neuen Speicherendpunkt hinzufügen“ mit ausgewählten richtigen Optionen.

  4. Übernehmen Sie bei den restlichen Parametern die Standardwerte, und wählen Sie Erstellen + Weiter aus.

  5. Geben Sie auf der Registerkarte Route die folgenden Informationen zum Erstellen einer Route an, die auf den von Ihnen erstellten Speicherendpunkt verweist:

    Parameter Wert
    Name Erstellen Sie einen Namen für Ihre Route.
    Datenquelle Vergewissern Sie sich, dass Telemetrienachrichten für Geräte in der Dropdownliste ausgewählt ist.
    Route aktivieren Überprüfen Sie, ob dieses Feld aktiviert wurde.
    Routingabfrage Geben Sie level="storage" als Abfragezeichenfolge ein.

    Screenshot: Hinzufügen einer Route mit einer Routingabfrage.

  6. Wählen Sie Anreicherungen erstellen + überspringen aus.

Anzeigen weitergeleiteter Nachrichten

Sobald die Route im IoT Hub erstellt und aktiviert wurde, beginnt sie sofort mit dem Routing von Nachrichten, die deren Abfragebedingung an den Speicherendpunkt erfüllen.

Überwachen des integrierten Endpunkts mit dem IoT-Explorer

Kehren Sie zur IoT-Explorer-Sitzung auf Ihrem Entwicklungscomputer zurück. Denken Sie daran, dass der IoT-Explorer den integrierten Endpunkt Ihrer IoT Hub-Instanz überwacht. Das bedeutet, dass Sie jetzt nur die Nachrichten sehen sollten, die nicht über die benutzerdefinierte Route, die wir erstellt haben, weitergeleitet werden.

Starten Sie das Beispiel erneut, indem Sie den Code ausführen. Beobachten Sie die eingehenden Nachrichten für einige Momente. Sie sollten nur Nachrichten sehen, für die level auf normal bzw. critical festgelegt ist.

Anzeigen von Nachrichten im Speichercontainer

Stellen Sie sicher, dass die Nachrichten im Speichercontainer ankommen.

  1. Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto.

  2. Klicken Sie im Abschnitt Datenspeicher des Menüs auf Container.

  3. Wählen Sie den Container aus, den Sie für dieses Tutorial erstellt haben.

  4. Es sollte ein Ordner vorhanden sein, der den Namen Ihrer IoT Hub-Instanz trägt. Führen Sie einen Drilldown durch die Dateistruktur aus, bis Sie zu einer JSON-Datei gelangen.

    Screenshot: Suchen von weitergeleiteten Nachrichten im Speicher.

  5. Wählen Sie die JSON-Datei aus, und wählen Sie dann Herunterladen aus, um die JSON-Datei herunterzuladen. Überprüfen Sie, dass die Datei Nachrichten von Ihrem Gerät enthält, deren level-Eigenschaft auf storage festgelegt ist.

  6. Beenden Sie die Ausführung des Beispiels.

Bereinigen von Ressourcen

Wenn Sie alle in diesem Tutorial verwendeten Azure-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, suchen und löschen Sie die einzelnen Ressourcen über das Azure-Portal.

Wenn Sie mit dem nächsten Tutorial weitermachen möchten, behalten Sie die hier erstellten Ressourcen bei.

  1. Navigieren Sie im Azure-Portal zu der Ressourcengruppe, die die IoT Hub-Instanz und das Speicherkonto für dieses Tutorial enthält.
  2. 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 Lernprogramm haben Sie erfahren, wie Sie einen benutzerdefinierten Endpunkt für eine Azure-Ressource erstellen und dann eine Route zum Senden von Gerätenachrichten an diesen Endpunkt erstellen. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie Nachrichten mit zusätzlichen Daten anreichern, um die spätere Verarbeitung zu vereinfachen.