IoT-Messages an Azure IoT-Hub mit Microsoft Flow

Sie möchten mehr zu diesem Thema erfahren?

Vereinbaren Sie einen kostenfreien Beratungstermin mit uns. 
Hinweis zum Datenschutz

IoT-Messages an Azure IoT-Hub mit Microsoft Flow

Was ist Azure IoT-Hub?

Microsofts Azure IoT-Hub ist ein Cloud-Dienst zum sicheren Management von Internet of Things (IoT) Geräten. Das Versenden von Nachrichten bzw. Telemetriedaten an den Azure IoT-Hub wird durch den Einsatz entsprechender Software erreicht. Dieses kann allerdings auch mit Hilfe von Microsoft Flow durchgeführt werden.

Microsofts Azure IoT-Hub ist die skalierbare Transportschicht zum Verbinden, Überwachen und Verwalten von Internet of Things Geräten. Es existieren unzählige Beispiele und Lösungsansätze um (Test-)Daten an den IoT-Hub zu senden. Nahezu alle diese Ansätze haben den Nachteil, dass man sich mit entsprechenden Single-Board-Computern und/oder der Programmierung von Simulatoren auseinandersetzen muss, was mitunter sehr zeitaufwendig ist.

Die Aufgabe besteht demnach darin eine einfache Methode zu finden, Daten (Messages) ohne großen Aufwand an den Azure IoT-Hub zu senden.

Auf die Erstellung eines IoT-Hubs samt dazu gehöriger Geräte (Devices) in Microsoft Azure soll in diesem Artikel nicht eingegangen werden. Weitere Informationen hierzu sind unter 

https://azure.microsoft.com/de-de/services/iot-hub/

zu finden.

Wie sieht der konkrete Lösungsansatz mit Azure IoT Hub aus?

Das Versenden von Events und Messages über HTTP via REST (Representational State Transfer – Programmierschnittstelle/ Programmierparadigma) scheint hier ein günstiges Vorgehen zu sein. Mit Hilfe der POST-Methode (zur Übertragung) kann ein HTTP-Request (HTTP Anfrage) an den IoT-Hub versendet werden, um dort dann die Daten aus dem Body (Körper) weiter zu transportieren. Der Aufbau der zu verwendenden URI lautet:

https://{IoT-HubID}.azure-devices.net/devices/{DeviceID}/messages/events?api-version=2016-02-02

Hierbei sind IoT-HubID der eindeutige Name des verwendeten Azure IoT-Hubs und DeviceID die eindeutige Geräte-ID. Der Body des Aufrufs enthält dann die möglichen Wertepaare nach etwa folgendem Schema:

Body-Struktur für die Wertepaare

Body-Aufbau Body-Beispiel

{
"Attribut_1": "Messwert_1",
"Attribut_n": "Messwert_n"
}

{
"Ort": "Oldenburg",
"Temperatur": "12,0"
}

Aus Sicherheitsgründen muss noch ein sogenannter SAS-Token über den Header (Überschrift) des HTTP-Requests mit versendet werden. Damit ist das Gerät authentifiziert und kann Daten an den IoT-Hub senden. Die Generierung des SAS-Tokens kann mit Hilfe von ein paar Codezeilen oder besser, mit dem Azure Device Explorer, generiert werden.

Im Device Explorer Zwilling muss hierfür einfach der IoT-Hub Connection String eingetragen werden. Diesen findet man im Azure Portal unter dem gewünschten IoT-Hub im Bereich „Einstellungen / Richtlinien für gemeinsamen Zugriff“:

Azure IoT Hub Richtlinie

Abb. 1: IoT-Hub – Richtlinien für gemeinsamen Zugriff

Eingetragen wird der „Verbindungszeichenfolge – Primärschlüssel“ im Device Explorer wie folgt:

Abb. 2: Device Explorer Twin – Verbindungszeichenfolge – Primärschlüssel

Im Device Explorer findet man unter dem Tabulator „Management“ nach einer Aktualisierung alle im IoT-Hub eingetragenen Geräte (Devices).

Abb. 3: Device Explorer Twin – Device Management

Mit Hilfe der Schaltfläche [SAS Token…] kann dann unter Angabe der Gültigkeitsdauer (TTL Days) der SAS-Token generiert werden. Von dem generierten Text benötigen wir nur den markierten Teil. Der kann einfach in die Zwischenablage für die weitere Verwendung kopiert werden.

Abb. 4: Device Explorer – SAS Token Form

Für den HTTP-Request haben wir nun die URI mit IoT-HubID und DeviceID, den Header mit dem generierten SAS-Token und den Body mit entsprechenden Messdaten.

Wie versendet man Nachrichten mit Hilfe von Microsoft Flow?

Um alle Teile zusammenzufügen und Daten an den IoT-Hub zu senden bietet sich Microsoft Flow an. Mit Microsoft Flow ist es möglich eine Automatisierung der Workflows (Arbeitsabläufe) zu erstellen und zu verwalten. Weiterführende Informationen zu Microsoft Flow sind unter folgendem Link zu finden:

https://emea.flow.microsoft.com/de-de/

Wir benötigen hier nur zwei sogenannte Konnektoren (Connectors). Einen Flow-Schaltflächen-Connector und einen HTTP-Connector. Vorteil dieser Connector-Kombination ist, dass auch die Flow-App auf dem Handy verwendet werden kann um etwa Messwerte aufzunehmen und abzusenden.

Die Gesamtkonfiguration für unseren Beispiel-Flow „AzureIoTHubTest“ sieht somit wie folgt aus:

Microsoft-Flow

Abb. 5: Microsoft Flow – “AzureIoTHubTest”

Der Schaltflächen-Connector ist folgendermaßen konfiguriert:

Schaltflächen Connector

Abb. 6: Schaltflächen Connector

Beispielhaft sind hier zwei Felder („Status“ und „Temperatur“) hinzugefügt, wobei „Status“ eine Liste von möglichen Optionen enthält und „Temperatur“ ein freies Eingabefeld ist. Standardmäßig werden über die Flow-Schaltfläche auch der Standort, User, Zeitstempel etc. geliefert.

Im nächsten Connector wird dann alles zusammengefügt:

HTTP Connector

Abb. 7: HTTP Connector

Als Methode für den HTTP-Request wird POST ausgewählt. Die URI, entsprechend den o. a. Ausführungen angegeben, der generierte SAS-Token im Header (Überschrift) eingetragen und der Body (Körper) mit den gewünschten Wertepaaren versehen.

Wird der Flow nun über Handy oder das MS-Flow-Dashboard gestartet, kann im Verlauf der erfolgreiche Durchlauf des Workflows verfolgt werden.

Erfolgreich ausgeführter Flow

Abb. 8: Erfolgreich ausgeführter Flow

Hier sind auch die im Körper übergebenen Werte der Schaltfläche zu sehen.

Auf der Übersichtsseite des Azure IoT-Hubs wird der Empfang der Meldung angezeigt:

Prüfung der Nutzung im IoT-Hub Dashboard Abb. 9: Prüfung der Nutzung im IoT-Hub Dashboard

Fazit

Die Versendung von Nachrichten an den Azure IoT-Hub geht mit Hilfe von Microsoft Flow leicht von der Hand. Egal ob zügig Testdaten an den IoT-Hub versendet oder etwa reale Daten per Handy im Feld gesammelt werden sollen. Die Kombination von Azure IoT-Hub, Device-Explorer und Microsoft Flow ermöglichen eine schnelle und komfortable Realisierung dieser Anwendungsfälle.

Sollen IoT-Geräte Daten an den IoT-Hub senden, müssen entsprechende Codeschnipsel für die Authentifizierung und den Versand von Telemetriedaten verwendet werden. Hier ist dann doch ein entsprechender aber überschaubarer Entwicklungsaufwand nötig. Damit wäre dann jedoch auch eine bidirektionale Kommunikation von IoT-Geräten und dem Lösungs-Backend geregelt. Am Ende müssen die Daten dann noch analysiert werden. Auch hier bietet Microsoft Azure entsprechende Dienste wie etwa Stream Analytics und Machine Learning an.

Wer sich diese Dienste nicht gerne selbst orchestrieren möchte, ist gut beraten die bereits fertig vorkonfigurierten Lösungen aus den Azure IoT Solution Accelerators zu nutzen. Hier existieren Lösungen für die Remoteüberwachung, Maintenance-Lösungen, Lösungen für die verbundene Fabrik sowie diverse Gerätesimulationen. Vorteil dieser vorkonfigurierten Lösungen ist, dass die verwendeten Azure Dienste durch den Nutzer angepasst und erweitert werden können, als wenn die Dienste manuell in Azure hinzugefügt wurden.

Ein weiterer IoT-Dienst in Azure ist IoT-Central. IoT-Central ist eine vollständig verwaltete SaaS (Software as a Service) Lösung, mit der man IoT-Ressourcen einfach vernetzen, verwalten und überwachen kann. Die Einrichtung dieses Dienstes ist sehr einfach, der Aufwand hält sich somit in Grenzen.

Insgesamt bietet Microsoft Azure IoT als Oberbegriff eine umfassende Sammlung an Diensten und Lösungen zur Erstellung von End-to-End-IoT-Anwendungen. Von vollständig gehostet und verwaltet bis individuell und speziell anpassbaren Diensten die überdies auf die branchenspezifischen Anforderungen des jeweiligen Anwenders zugeschnitten werden können.


Titelbildnachweis: https://pixabay.com/de/netzwerk-iot-internet-der-dinge-782707/

Noch keine Kommentare vorhanden

Was denkst du?