IoT-Messages an Azure IoT-Hub mit Microsoft Flow

IoT-Messages an Azure IoT-Hub mit Microsoft Flow

Was ist Azure IoT und Microsoft Flow?

Microsofts Azure IoT-Hub ist ein Cloud-Dienst zum sicheren Management von Internet of Things (IoT) Geräten. Das Versenden von Nachrichten an den Azure IoT-Hub kann 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 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“:

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 automatisierte 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:

Abb. 5: Microsoft Flow – “AzureIoTHubTest”

 

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

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:

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.

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.

 

 

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

-->