Durch die immer weiter zunehmende Anzahl verknüpfter Geräte steigt die täglich generierte Datenmenge. Diese Entwicklung wird durch das Auftreten neuer und die fortschreitende Weiterentwicklung bestehender Technologien im Bereich des Internet of Things (IoT) beschleunigt. Die Daten der verknüpften Geräte werden auch als Gerätetelemetrie bezeichnet. Beispiele hierfür sind Sensordaten wie die Umgebungstemperatur oder die Signalstärke. Ein Filtern und Weiterverarbeiten der Daten ist zwingend notwendig, um Mehrwerte zu schaffen. Ziel dieses Blogbeitrags ist das Aufzeigen, wie Telemetriedaten mithilfe des Azure IoT Hubs an die Azure Cloud übermittelt werden können. Zudem wird eine beispielhafte Weiterverarbeitung der Daten aufgezeigt.
Was ist der Azure IoT Hub?
Der Azure IoT Hub ist ein in der Azure Cloud gehosteter Dienst, der die Gerätekonnektivität und die Erfassung von Telemetriedaten mit hohem Volumen ermöglicht. Somit kennzeichnet der Azure IoT Hub den Übergang der physischen in die virtuelle Welt. Durch die Verwendung des Azure IoT Hubs ist die Integration mit einer Vielzahl an Azure-Diensten, wie z.B. Azure Logic Apps, Azure Stream Analytics, Azure Storage oder Azure Service Bus, sichergestellt. Dadurch ist das Abbilden des individuellen Anwendungsfalls möglich.
Das Anwendungsbeispiel
Das Anwendungsbeispiel dieses Blogbeitrags bezieht sich auf das Lager eines Gastronomieunternehmens, welches Equipment wie Kühlschränke für Veranstaltungen vermietet. Mithilfe von Bluetooth Low Energy (BLE) Beacons und Gateways wird automatisiert über die Signalstärke erfasst, ob sich ein Artikel im Lager befindet. Dazu werden BLE-Beacons auf den Artikeln angebracht. Die BLE-Gateways werden fest im Lager installiert. Nun senden die Beacons periodisch Signale, welche von den Gateways erfasst werden. Auf diese Weise wird registriert, welche Beacons und somit auch welche Artikel sich in der Nähe eines Gateways befinden.
Wie können die physischen Geräte an den Azure IoT Hub angebunden werden?
Zunächst müssen die Gateways als Geräte im Azure IoT Hub registriert werden. Dies erfolgt im Azure-Portal. Als Authentifizierungsmethode wird im vorliegenden Anwendungsbeispiel die Verwendung einer Shared Access Signature (SAS-Token) gewählt. Dadurch kann das Senden von Schlüsseln über das Netzwerk vermieden werden und der Gültigkeitszeitraum des Tokens wird beschränkt. Zum Generieren des SAS-Tokens je Gerät wird die IoT-Hub-Extension für Visual Studio Code verwendet (siehe Bild 1 – Nummer 1). Nach erfolgreicher Anbindung des physischen Gerätes an den Azure IoT Hub wird der Gerätestatus in Grün angezeigt (siehe Bild 1 – Nummer 2).
Bild 1: Generieren des SAS-Tokens in Visual Studio Code
Wie werden die übermittelten Telemetriedaten abgefangen und weiterverarbeitet?
Die an den Azure IoT Hub übermittelten Telemetriedaten werden standardmäßig an den integrierten Endpunkt gesendet. Hier stehen die Daten je nach festgelegter Aufbewahrungsdauer und je nach IoT-Hub-Ebene bis zu sieben Tage zur Verfügung.
Um die übermittelten Daten einzusehen, kann wiederum die Azure-IoT-Hub-Extension verwendet werden. Diese zeigt mithilfe des Befehls „Start Monitoring Build-in Event Endpoint“ die Daten an. Hierbei wird je Gateway (siehe Bild 2 – Nummer 1) eine Nachricht mit allen empfangenen Beacon-Signalen (siehe Bild 2 – Nummer 2) gesendet.
Bild 2: Einsehen der Daten in Visual Studio Code
Durch den integrierten Endpunkt ist auch die Integration mit Azure Stream Analytics möglich. Dadurch können die Streaming-Daten mithilfe von komplexen Regelwerken verarbeitet werden. Azure Stream Analytics wird als Ereignisprozessor eingesetzt, um die Ereignisdatenströme zu transformieren und um Analyseabfragen in Echtzeit gegen die Streams auszuführen.
Zur Verdeutlichung erfolgt ein einfaches Abfragebeispiel. Dazu wird ein Stream-Analytics-Auftrag im Azure-Portal angelegt. Als Eingabe wird der zuvor angelegte Azure IoT Hub und als Ausgabe beispielhaft ein Blob-Storage definiert. Die Beispielabfrage enthält den folgenden Code:
SELECT
System.Timestamp() as WindowEndTime, IoTHub.mac, MAX(IoTHub.rssi) AS MaxRSSI
INTO
Blob
FROM
IoTHub TIMESTAMP BY IoTHub.timestamp
WHERE IoTHub.type = 'iBeacon'
GROUP BY IoTHub.mac, TumblingWindow(second, 20)
Es wird ein rollierendes Fenster mit einer Länge von 20 Sekunden je Beacon zugrunde gelegt. Durch die Verwendung eines rollierenden Fensters überschneiden sich die einzelnen Fenster nicht. Zudem wird die maximale Signalstärke je Fenster ausgegeben. Im Abfrage-Editor im Azure-Portal ist es möglich, eine Testabfrage durchzuführen (siehe Bild 3 – Nummer 1). Die Testergebnisse können eingesehen und geprüft werden (siehe Bild 3 – Nummer 2). Nach dem Aktivieren des Stream-Analytics-Auftrags werden die Daten im hinterlegten Blob-Storage gespeichert.
Bild 3: Abfragen der Daten in Azure Stream Analytics
Quelle
https://docs.microsoft.com/de-de/azure/iot-hub/iot-hub-dev-guide-sas
https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-toolkit
https://docs.microsoft.com/de-de/stream-analytics-query/tumbling-window-azure-stream-analytics