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:
Das Pi-Gerät wird mit Ihrem IoT-Hub-Geräteschlüssel gestartet und dann wieder beendet.
Ein IoT Hub-Ereignis erfasst die Geräteaktivität und sendet anschließend eine HTTP-Anforderung an Ihre Logik-App.
Die Logik-App verarbeitet die HTTP-Anforderung basierend auf einer von Ihnen festgelegten Bedingung.
Die Logik-App protokolliert Verbindungs- oder Trennungsereignisse in einem neuen Dokument in Cosmos DB.
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
Wählen Sie im Azure-Portal die Option +Ressource erstellen, dann Integration und Logik-App aus.
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.
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.
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.
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.
Geben Sie auf der Suchleiste für Connectors und Trigger die Zeichenfolge HTTP ein, und drücken Sie die EINGABETASTE.
Wählen Sie Beim Empfang einer HTTP-Anforderung als Trigger aus.
Wählen Sie Beispielnutzlast zum Generieren eines Schemas verwenden aus.
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" }]
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.
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.
Ändern Sie in Ihrer Bedingung die Einstellung And in Or, da wir in einem Analyseschritt entweder Verbindungs- oder Trennungsereignisse erfassen möchten.
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.
Klicken Sie im Dialogfeld Bei TRUE auf Aktion hinzufügen.
Suchen Sie nach Cosmos DB, und wählen Sie Azure Cosmos DB – Dokument erstellen oder aktualisieren (V3) aus.
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
.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.
Erweitern Sie das Triggerkonfigurationsfeld Beim Empfang einer HTTP-Anforderung, indem Sie es auswählen.
Kopieren Sie den Wert HTTP POST-URL durch Auswählen der Kopierschaltfläche daneben.
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.
Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
Wählen Sie Ereignisse aus.
Wählen Sie + Ereignisabonnement aus.
Details zum Ereignisabonnement: Geben Sie in Name einen aussagekräftigen Namen an, und wählen Sie als Ereignisschema die Option Event Grid-Schema aus.
Geben Sie einen Wert für Name des Systemthemas für Ihre IoT Hub-Ressource ein.
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.
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.
Das Formular sollte in etwa wie im folgenden Beispiel aussehen:
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.
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
Wählen Sie in Ihrem IoT-Hub die Option Geräte aus.
Wählen Sie oben im Bereich + Gerät hinzufügen aus.
Geben Sie für Geräte-ID die Zeichenfolge
Demo-Device-1
ein.Wählen Sie Speichern aus.
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.
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.
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.
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.
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.
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.
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.
Navigieren Sie zu Ihrer Logik-App.
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
Navigieren Sie zu Ihrem IoT Hub.
Wählen Sie auf dem Blatt Übersicht die Option Löschen aus.
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.
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
Erfahren Sie mehr über das Reagieren auf IoT Hub-Ereignisse mithilfe von Event Grid zum Auslösen von Aktionen.
Erfahren Sie mehr über die Möglichkeiten mit Event Grid.
Informieren Sie sich, wie Sie Event Grid und Azure Monitor zum Überwachen, Diagnostizieren und Beheben von Problemen bei der Gerätekonnektivität mit IoT Hub verwenden können.