Freigeben über


Sortieren von Geräteverbindungsereignissen von Azure IoT Hub mithilfe von Azure Cosmos DB

Azure Event Grid unterstützt Sie beim Erstellen ereignisbasierter Anwendungen und der einfachen Integration von IoT-Ereignissen in Ihre Geschäftslösungen. In diesem Artikel werden Sie durch ein Setup mit Cosmos DB, Logic App, IoT Hub Events und einem simulierten Raspberry Pi geleitet, um Verbindungs- und Trennungsereignisse eines Geräts zu sammeln und zu speichern.

Sobald Ihr Gerät in Betrieb ist, wird eine bestimmte Reihenfolge von Vorgängen aktiviert:

  1. Das Pi-Gerät wird mit Ihrem IoT-Hub-Geräteschlüssel gestartet und dann wieder beendet.

  2. Ein IoT Hub-Ereignis erfasst die Geräteaktivität und sendet anschließend eine HTTP-Anforderung an Ihre Logik-App.

  3. Die Logik-App verarbeitet die HTTP-Anforderung basierend auf einer von Ihnen festgelegten Bedingung.

  4. Die Logik-App protokolliert Verbindungs- oder Trennungsereignisse in einem neuen Dokument in Cosmos DB.

    Screenshot des Setups, das wir für diesen Artikel erstellen. Dieses Setup zeigt, wie alle Dienste und Geräte verbunden sind.

Voraussetzungen

  • Ein aktives Azure Cosmos DB for NoSQL-Konto. Wenn Sie noch keines erstellt haben, finden Sie unter Erstellen eines Datenbankkontos eine exemplarische Vorgehensweise.

  • Eine Sammlung in der Datenbank. Eine exemplarische Vorgehensweise finden Sie unter Hinzufügen einer Sammlung. Wenn Sie Ihre Sammlung erstellen, verwenden Sie /id als Partitionsschlüssel.

  • 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 Hub haben, können Sie die Schritte unter Erstellen eines IoT-Hubs ausführen.

Erstellen einer Logik-App

Erstellen wir zunächst eine Logik-App, und fügen wir dieser einen Event Grid-Trigger hinzu, der die Ressourcengruppe für Ihre VM überwacht.

Erstellen einer Logik-App-Ressource

  1. Wählen Sie im Azure-Portal die Option +Ressource erstellen, dann Integration und Logik-App aus.

    Screenshot: Ermitteln und Auswählen einer Logik-App im Azure-Portal

  2. Füllen Sie das Formular aus, um eine neue Logik-App zu erstellen, die Folgendes umfasst:

    • Ihr Abonnement

    • Ihre Ressourcengruppe (erstellen Sie ggf. eine neue Ressourcengruppe)

    • Einen Logik-App-Namen, der in Ihrem Abonnement eindeutig ist

    • Die Region Ihres IoT-Hubs

    • Die Einstellung Nein für die Option „Log Analytics aktivieren“

    • Plantyp Verbrauch

      Hinweis

      Der Plantyp Verbrauch ist die Option, durch die der Logik-App-Designer in der Benutzeroberfläche aktiviert wird. Bei Auswahl der Option Standard (dies ist die Standardeinstellung) müssen Sie einen neuen Workflow erstellen, damit der Logik-App-Designer verfügbar wird.

    Screenshot: Erstellen einer Logik-App im Azure-Portal

  3. Wählen Sie Überprüfen + erstellen aus, um Ihre Konfiguration zu überprüfen, und klicken Sie dann auf Erstellen, um die Logik-App zu erstellen.

  4. Sie haben nun eine Azure-Ressource für Ihre Logik-App erstellt. Nachdem bereitstellen Ihrer Logik-App von Azure, Zur Ressource wechseln auswählen. Der Logik-App-Designer zeigt Vorlagen für gängige Muster an, die Ihnen einen schnelleren Einstieg ermöglichen.

  5. Scrollen Sie im Logik-App-Designer zum Abschnitt Vorlagen, und wählen Sie dann Leere Logik-App aus, um Ihre Logik-App ohne Vorlage zu erstellen.

Auswählen eines Triggers

Ein Trigger ist ein bestimmtes Ereignis, durch das Ihre Logik-App gestartet wird. In diesem Tutorial empfängt der Trigger, der den Workflow einleitet, eine Anforderung über HTTP.

  1. Geben Sie auf der Suchleiste für Connectors und Trigger die Zeichenfolge HTTP ein, und drücken Sie die EINGABETASTE.

  2. Wählen Sie Beim Empfang einer HTTP-Anforderung als Trigger aus.

    Screenshot: Auswählen einer HTTP-Anforderung als Trigger

  3. Wählen Sie Beispielnutzlast zum Generieren eines Schemas verwenden aus.

    Screenshot: Verwenden von Beispielnutzdaten zum Generieren eines Schemas

  4. Fügen Sie den folgenden Beispiel-JSON-Code in das Textfeld ein, und wählen Sie dann Fertig aus.

    Dieser JSON-Code wird nur als Vorlage verwendet, die genauen Werte sind deshalb nicht wichtig.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Screenshot: Beispielhafte JSON-Nutzdaten, die in das Textfeld in Azure eingefügt werden

Erstellen einer Bedingung

Bedingungen ermöglichen es, bestimmte Aktionen auszuführen, nachdem die jeweilige Bedingung erfüllt wurde. In diesem Tutorial wird als Bedingung überprüft, ob der eventType auf ein verbundenes Gerät oder ein getrenntes Gerät festgelegt ist. Wird dieser eventType als TRUE ausgewertet, wird als Aktion ein Dokument in Azure Cosmos DB erstellt. Diese Bedingung wird im Logik-App-Designer erstellt.

  1. Wählen Sie + Neuer Schritt und dann die Registerkarte Integriert aus. Suchen Sie anschließend nach dem Steuerelement mit der Bezeichnung Bedingung, und wählen Sie es aus.

  2. Ändern Sie in Ihrer Bedingung die Einstellung And in Or, da wir in einem Analyseschritt entweder Verbindungs- oder Trennungsereignisse erfassen möchten.

  3. Wenn Sie in das Feld Wert auswählen klicken, wird ein Popupfenster geöffnet, das Dynamische Inhalte anzeigt – die Felder, die ausgewählt werden können.

    • Wählen Sie eventType aus. Das Popup wird geschlossen, und in Ausgabe von vorherigen Schritten auswählen wird automatisch Text eingefügt. Wählen Sie Bedingung aus, um Ihre Bedingungsanweisung erneut zu öffnen.

    • Behalten Sie den Wert ist gleich bei.

    • Geben Sie Microsoft.Devices.DeviceConnected als letzten Wert dieser Zeile ein.

    • Wählen Sie + Hinzufügen aus, um eine weitere Zeile hinzuzufügen.

    • Diese zweite Zeile ähnelt der ersten, mit dem Unterschied, dass wir nach Ereignissen suchen, bei denen die Verbindung getrennt wird.

      Verwenden Sie als Zeilenwerte eventType, ist gleich, und Microsoft.Devices.DeviceDisconnected.

      Screenshot: Vollständige ForEach-Bedingung

  4. Klicken Sie im Dialogfeld Bei TRUE auf Aktion hinzufügen.

    Screenshot: Feld „Wenn TRUE“ in Azure

  5. Suchen Sie nach Cosmos DB, und wählen Sie Azure Cosmos DB – Dokument erstellen oder aktualisieren (V3) aus.

    Screenshot: Suche nach Azure Cosmos DB

  6. Der Bereich Dokument erstellen oder aktualisieren (V3) wird angezeigt. Geben Sie für die Felder diese Werte ein:

    Name des Azure Cosmos DB-Kontos: {Name Ihres Kontos}

    Datenbank-ID: ToDoList

    Sammlungs-ID: Items

    Dokument: Wählen Sie aus der Liste der dynamischen Inhaltsparameter aus Current item.

    Screenshot: Element „Gespeicherte Prozedur ausführen (V3)“ mit ausgewählter Option „Neuen Parameter hinzufügen“

  7. Speichern Sie Ihre Logik-App.

Kopieren der HTTP-URL

Bevor Sie den Logik-App-Designer verlassen, kopieren Sie die URL, auf der Ihre Logik-App auf einen Trigger lauscht. Verwenden Sie diese URL zum Konfigurieren von Event Grid.

  1. Erweitern Sie das Triggerkonfigurationsfeld Beim Empfang einer HTTP-Anforderung, indem Sie es auswählen.

  2. Kopieren Sie den Wert HTTP POST-URL durch Auswählen der Kopierschaltfläche daneben.

    Screenshot: Position der zu kopierenden HTTP-URL

  3. Speichern Sie diese URL, damit Sie sie im nächsten Abschnitt verwenden können.

Konfigurieren des Abonnements für IoT Hub-Ereignisse

In diesem Abschnitt konfigurieren Sie Ihren IoT Hub zum Veröffentlichen von Ereignissen, sobald diese auftreten.

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

  2. Wählen Sie Ereignisse aus.

    Screenshot: Position der Schaltfläche „Ereignisse“ im IoT Hub-Menü

  3. Wählen Sie + Ereignisabonnement aus.

    Erstellen eines neuen Ereignisabonnements

  4. Details zum Ereignisabonnement: Geben Sie in Name einen aussagekräftigen Namen an, und wählen Sie als Ereignisschema die Option Event Grid-Schema aus.

  5. Geben Sie einen Wert für Name des Systemthemas für Ihre IoT Hub-Ressource ein.

  6. Füllen Sie die Ereignistypen-Felder aus. Wählen Sie in der Dropdownliste aus dem Menü nur Gerät verbunden und Gerät getrennt aus. Klicken Sie auf eine beliebige Stelle des Bildschirms, um die Liste zu schließen und Ihre Auswahl zu speichern.

    Festlegen von zu suchenden Ereignistypen

  7. Wählen Sie für Endpunktdetails als Endpunkttyp die Option Webhook aus, klicken Sie auf „Endpunkt auswählen“, fügen Sie die URL ein, die Sie aus Ihrer Logik-App kopiert haben, und bestätigen Sie die Auswahl.

    Auswählen der Endpunkt-URL

  8. Das Formular sollte in etwa wie im folgenden Beispiel aussehen:

    Screenshot: Formular zum Erstellen eines Ereignisabonnements

    Wählen Sie Erstellen aus, um das Ereignisabonnement zu speichern.

    Wichtig

    Warten Sie ein paar Minuten, bis Ihr Ereignis verarbeitet wurde, bevor Sie Ihr Gerät starten. Wenn Azure-Dienste erstellt oder geändert wurden, kann ein zu früher Start des nächsten Schritts in Ihrer Pipeline zu unnötigen Fehlern führen. Wenn sich Ihr IoT-Hub zum Beispiel nicht in einem aktiven Zustand befindet, kann er keine Ereignisse empfangen. Überprüfen Sie auf der Seite Übersicht für Ihren IoT-Hub, ob dieser aktiv ist oder nicht. Falls der IoT-Hub nicht aktiv ist, wird oben auf der Seite eine Warnung angezeigt.

    Screenshot: Fehler mit Hinweis, dass der IoT-Hub nicht aktiv ist

Ausführen von Geräten und Überwachen von Ereignissen

Nachdem Ihr Ereignisabonnement eingerichtet wurde, testen Sie es, indem Sie ein Gerät verbinden.

Registrieren eines Geräts bei IoT Hub

  1. Wählen Sie in Ihrem IoT-Hub die Option Geräte aus.

  2. Wählen Sie oben im Bereich + Gerät hinzufügen aus.

  3. Geben Sie für Geräte-ID die Zeichenfolge Demo-Device-1 ein.

  4. Wählen Sie Speichern aus.

    Screenshot: Position der Schaltfläche „Gerät hinzufügen“

  5. Klicken Sie erneut auf das Gerät. Jetzt werden die Verbindungszeichenfolgen und Schlüssel ausgefüllt. Kopieren und speichern Sie den Wert unter Primäre Verbindungszeichenfolge zur späteren Verwendung.

    Screenshot: Position der primären Verbindungszeichenfolge für Ihr Gerät

Starten des Raspberry Pi-Simulators

Wir verwenden den Raspberry Pi-Websimulator, um eine Geräteverbindung zu simulieren.

Raspberry Pi-Simulator starten

Ausführen einer Beispielanwendung im Raspberry Pi-Websimulator

Diese Beispiel-App löst ein Geräteverbindungsereignis aus.

  1. Ersetzen Sie im Codebereich den Platzhalter in Zeile 15 durch die Verbindungszeichenfolge für das Azure IoT Hub-Gerät, die Sie am Ende des vorherigen Abschnitts gespeichert haben.

    Screenshot: Position zum Hinzufügen der primären Verbindungszeichenfolge im Raspberry Pi-Skript

  2. Führen Sie die Anwendung durch Auswählen von Ausführen aus.

    Es wird eine ähnliche Ausgabe wie die folgende angezeigt, die die Sensordaten und Nachrichten zeigt, die an Ihren IoT Hub gesendet werden.

    Screenshot: Erwartete Ausgabe in der Konsole bei Ausführung des Raspberry Pi

  3. Sie können auf der Seite Übersicht für Ihre Logik-App überprüfen, ob Ihre Logik ausgelöst wurde. Der angezeigte Wert lautet entweder Erfolgreich oder Fehlerhaft. Hier können Sie den Status Ihrer Logik-App überprüfen, wenn eine Fehlerbehebung erforderlich ist. Gehen Sie von einer Verzögerung von 15–30 Sekunden ab der Triggerausführung aus. Wenn Sie eine Problembehandlung für Ihre Logik-App durchführen müssen, lesen Sie den Artikel zum Beheben von Fehlern.

    Screenshot: Statusaktualisierungen auf der Seite „Übersicht“ für Ihre Logik-App

  4. Klicken Sie auf Beenden, um den Simulator zu beenden und ein Ereignis des Typs DeviceDisconnected auszulösen. Dieses Ereignis wird auf der Seite Übersicht der Logik-App protokolliert, genau wie das dort protokollierte Verbindungsereignis.

Sie haben nun eine Beispielanwendung ausgeführt, um Ereignisse zur Verbindungsherstellung und -trennung für Ihr Gerät zu erfassen, die an Ihren IoT-Hub gesendet werden.

Untersuchen von Ereignissen in Azure Cosmos DB

Sie können die Ergebnisse der ausgeführten Logik-App in Ihrem Cosmos DB-Dokument anzeigen. Das Dokument erscheint in Ihrer Sammlung Elemente, wenn Sie die Seite aktualisieren. Jedes Verbindungsstatusereignis erzeugt ein neues Dokument, dem eine eindeutige id zugewiesen wird. Die folgende Abbildung zeigt das Dokument, das beim Start (bei der Verbindungsherstellung) des Geräts erstellt wurde. Der Ereignistyp „DeviceConnected“ wird in der JSON-Ausgabe aufgeführt.

Screenshot: Neu generiertes Verbindungsstatusereignis in einer Cosmos DB-Sammlung

Verwenden der Azure-CLI

Anstelle des Azure-Portals können Sie die IoT Hub-Schritte auch mithilfe der Azure-Befehlszeilenschnittstelle erreichen. Einzelheiten dazu finden Sie in den Azure CLI-Seiten zum Erstellen eines Ereignisabonnements und Erstellen eines IoT-Geräts.

Bereinigen von Ressourcen

In diesem Tutorial werden Ressourcen verwendet, für die Gebühren in Ihrem Azure-Abonnement anfallen. Wenn Sie das Ausprobieren des Tutorials und Testen Ihrer Ergebnisse abgeschlossen haben, deaktivieren oder löschen Sie die Ressourcen, die Sie nicht beibehalten möchten.

Logik-App

Wenn Sie die Arbeit an Ihrer Logik-App nicht verlieren möchten, deaktivieren Sie sie, anstatt sie zu löschen.

  1. Navigieren Sie zu Ihrer Logik-App.

  2. Wählen Sie auf dem Blatt Übersicht eine der Optionen Löschen oder Deaktivieren aus.

    Jedes Abonnement kann über einen kostenlosen IoT Hub verfügen. Wenn Sie für dieses Tutorial einen kostenlosen Hub erstellt haben, müssen Sie ihn nicht löschen, um Gebühren zu vermeiden.

IoT-Hub oder Event Grid

  1. Navigieren Sie zu Ihrem IoT Hub.

  2. Wählen Sie auf dem Blatt Übersicht die Option Löschen aus.

  3. Auch wenn Sie Ihren IoT Hub behalten, sollten Sie das Ereignisabonnement, das Sie erstellt haben, löschen. Wählen Sie in Ihren IoT Hub die Option Event Grid aus.

  4. Wählen Sie das Ereignisabonnement aus, das Sie entfernen möchten, und klicken Sie auf Löschen.

Cosmos DB

Um ein Azure Cosmos DB-Konto aus dem Azure-Portal zu entfernen, wechseln Sie zu Ihrer Ressource und wählen in der oberen Menüleiste Konto löschen aus. Ausführliche Anweisungen finden Sie unter Löschen eines Azure Cosmos DB-Kontos.

Nächste Schritte