MIT DATEN MEHR BEWEGEN.

Azure IoT Hub

Das Azure IoT Hub-Modul dient dem Senden von Nachrichten an einen Azure IoT Hub.

Eingehende Nachrichten werden über das Modul gesammelt und in einen Zwischenspeicher geschrieben. Alle 2,5 Sekunden werden die enthaltenen Nachrichten gebündelt zum IoT Hub gesendet und der Zwischenspeicher geleert. Außerdem besteht die Möglichkeit einer Datenkomprimierung. Vor dem Senden wird die Batchgröße überprüft. Ist diese größer als 256 KB, wird der Batch gesplittet. Diese gesplitteten Batches werden aller 0,5 Sekunden gesendet. Das Timeout für das Senden ist auf 5 Sekunden gesetzt.

Des Weiteren besteht die Möglichkeit Funktionen für eine Cloud2Device-Kommunikation zu konfigurieren.

Konfigurationsparameter

Connection

Für die Verbindung mit dem Azure IoT Hub sind die in nachfolgender Tabelle beschriebenen Parameter zu konfigurieren.

Tabelle 1. Konfiguration der Connection des Azure IoT Hub-Modul
Parameter Beschreibung

Device Connection
String

Zugangspfad sowie die Authentifizierung des Gerätes am entsprechenden IoT-Hub.

Zu finden ist dieser im angelegten Device des IoT Hubs im Azure Portal [1] unter Menü (links oben) → Alle Dienste → IoT Hub. Die Auswahl IoT Hub führt zu Explore IoT Devices. Dort muss das entsprechende Gerät gewählt und der Connection String (Primary Key) kopiert werden.

Proxy

Die Verwendung eines Proxys bei der Verbindung zwischen Gerät und Azure IoT-Hub ist optional.

Protocol

Bei der Datenüberragung zum Azure IoT Hub werden folgende Protokolle unterstützt:

  • MQTT (Standard)

  • HTTP

  • AMQP

Compression

Eine Kompression von Telemetry-Nachrichten vor dem Senden ist mittels Deflate oder GZip möglich.

  • Deflate: Datenkomprimierung mit Deflate-Algorithmus

  • GZip: Datenkomprimierung mit GZip-Algorithmus

Die gruppierte Anzeige für die Connection String Info zeigt Metainformationen aus dem Device Connection String an. Wichtig ist hier auf die Anzeige „isValid“ zu achten.

Bei der Verwendung des HTTP-Protokolls ist keine Cloud2Device-Kommunikation (siehe Permissions) möglich. Das bedeutet:

  • Keine TWIN-Updates

  • keine Cloud2Device Messages

  • keine Direct Method Calls

Permissions

Es besteht die Möglichkeit, eine Cloud2Device-Kommunikation mit dem Azure IoT Hub mit folgenden Konfigurationsoptionen zu erlauben:

Receive Cloud Messages

Erlaubt das Empfangen von Cloud Messages.

Receive Configuration from Desired Properties

Erlaubt die Verarbeitung von Desired Property Updates des Device Twins.

Submit Message Headers as Azure Message Properties

Edge Message Headers werden als Message Properties übermittelt

Send ModuleStatus to Reported Properties

Erlaubt das Senden des Modulstatus in die Reported Properties des Device Twins.

Nachrichten / Topics

Topics sind logische Instanzen, in welchen zusammengehörende Nachrichten gesammelt und verarbeitet werden. Es können Topics für verschiedene Datenkategorien/-verwendungszwecke erstellt werden, welche in Tabelle 2 erläutert sind.

Um die Nachrichten eines Input-Moduls, konkreter Input Topics eines Input-Moduls, zu sammeln und zu verarbeiten, muss der Name des gewünschten Input Topics im Azure IoT Hub-Modul als "New Topic" oder "Output Topic" definiert werden.

Tabelle 2. Topics im Azure IoT Hub
Kategorie Beschreibung

Telemetry Messages

Neue Topics können durch Eingabe des Topic Namens und einem Klick auf „+“ hinzufügt werden. Im Anschluss muss das Dateneingabe-Modul definiert werden, dessen Daten ausgewertet werden sollen.

Cloud2Device Messages (optional)

Das Output Topic legt fest, unter welchen Topic ankommende Cloud Messages publiziert werden.

Direct Methods

Die Methoden können über Azure aufgerufen werden. Der Name der Direct Method kann in der lokalen RoboGate Edge UI erfasst werden. Es erfolgt ein Mapping zwischen Azure Direct Method und Edge Method.

Blob Upload

Der IoT Hub bietet die Möglichkeit, größere Datenmengen in einen verbunden Azure Blob Storage zu speichern. Eingehende Nachrichten werden als Datei im Blob Storage abgelegt. Name und Speicherort kann mit einem Pattern festgelegt werden.

Für den Blob Upload ist ein bestimmtes Pattern anzugeben. Dabei kann sich an nachfolgender Übersicht orientiert werden.

Default Pattern: {prefix}{ticks}
Folder Separator: /

Tabelle 3. Übersicht Pattern
Variable Content Default

{year}

Current UTC Year (4 Digits)

{month}

Current UTC Month (2 Digits)

{day}

Current UTC Day (2 Digits)

{hour}

Current UTC 24h Hour (2 Digits)

{minute}

Current UTC Minute (2 Digits)

{second}

Current UTC Second (2 Digits)

{ticks}

Count of 100ns Intervals since 0001-01-01 00:00:00 UTC (64-bit number)

{prefix}

Edge Message Header prefix

{name}

Edge Message Header name

{ext}

Edge Message Header ext
(default blob)

{hub}

IoT Hub Name

{host}

IoT Hub DeviceId

{Source}

Edge Message Header Source
(default any)

{scope}

Edge Message Header scope
(default any)

Device Provisioning (DPS)

Um eine Bereitstellung ohne Konfiguration des IoT-Hubs bzw. ohne werkseitige Konfiguration zu erreichen, bietet Azure den Device Provisioning Service an. DPS ermöglicht eine skalierbare und sichere Bereitstellung von mehreren RoboGate Edge.

Damit der DPS verwendet werden kann, muss der "Device Connection String" in der Connection-Konfiguration leer sein. Die Verbindungszeichenfolge wird dann vom DPS bezogen. Damit diese bereit gestellt werden kann, müssen mindestens zwei Einstellungen der folgenden DPS Konfiguration übergeben werden:

  • Scope

  • EnrollmentType (Art der Bereitstellung)

Tabelle 4. Konfiguration Device Provisioning Service (DPS)
Kategorie Beschreibung

Scope ID

Legt den DPS ID-Bereich fest. Diese Einstellung muss zwingend übergeben werden. Dieser muss von Azure bezogen werden. (ID-Bereich)

Mode

EnrollmentType:

  • Group: Gilt für eine Gruppenbreitstellung. Dabei muss zwingend der PrimaryKeyBase64 mitgegeben werden, da dieser als Authentifikation verwendet wird. Dieser symmetrische Schlüssel wird von Azure erzeugt und kann von dort bezogen werden.

  • Individual: Gilt für eine individuelle Bereitstellung. Sollte hier eine Breitstellung ohne Angabe des "PrimaryKeyBase64" erfolgen muss dieser Schlüssel vorher vom Gerät abgeleitet werden (Seriennummer /Geräte ID). Das kann mit Hilfe der Edge-Methode "robogate.dps.hash" erfolgen. Der dort erzeugte Base64-Schlüssel muss dann in Azure eingetragen werden. Außerdem muss die Geräte-ID in Azure angeben werden, da bei Abrufen des IOT-Hubs der Primary Kay mit der Geräte ID verknüpft wird. Die Geräte ID ist mit "robogate.security.GetClientId" abrufbar.

ID

Die ID ist folgendermaßen anzugeben:

  • Group, optional, individuell wählbar

  • Individual, optional (Geräte ID)

Symmetric Key (base64)

Ist ein Schlüssel zur Authentifzierung des Gerätes. Je nach Registrierungs-Breitstellung-Konfiguration kann dieser Key weggelassen werden, da er automatisch erzeugt wird (siehe Enrollment Type: Individual).

Advanced settings

Endpunkt (URL) für den DPS. Wenn dieser nicht übergeben wird, findet der default-Endpoint Verwendung.

Konfiguration in der UI

Nach Auswahl des Moduls Azure IoT Hub auf der Startseite oder über die linke Menüleiste der RoboGate Edge UI kann mit einem Klick auf „New“ eine Verbindung zu einem Azure IoT Hub konfiguriert werden.

Connection konfigurieren

Im ersten Schritt ist die Verbindung hinsichtlich der zuvor beschriebenen Parameter zu konfigurieren. Neue Topics für die Auswertung der Daten aus den Input-Modulen können per Klick auf „+“ hinzugefügt werden. Beispielhaft ist in Abbildung 1 das Output-Topic „Modbus_1“ eingegeben.

azure topicmb
Abbildung 1. Hinzufügen eines neuen Topics Modbus_1

Nach Fertigstellung der Konfiguration des Azure IoT Hub kann diese gespeichert save werden (Abbildung 2). Durch das Speichern der Modul-Konfiguration werden die Daten der ausgewählten Topics an Microsoft Azure gesendet und stehen zur Auswertung im IoT Hub bereit.

azure save
Abbildung 2. Speichern der Konfiguration des Azure IoT Hub-Moduls

Im Bereich "Module State" lässt sich erkennen, ob das Modul eine Verbindung zu Azure herstellen konnte.

Topic löschen

Topics können aus der Konfiguration des Azure IoT Hub-Moduls entfernt werden. Dazu muss das Kreuz close hinter dem zu löschenden Topic geklickt werden. Dadurch wird die markierte Zeile gelöscht (Abbildung 3). Durch das anschließende Klicken auf den Speicher-Button save wird die geänderte Konfiguration übernommen.

azure delete topic
Abbildung 3. Löschen eines Azure IoT Hub-Topics

Konfiguration zurücksetzen

Über die Schaltfläche reset in der horizontalen Menüleiste lässt sich die komplette Konfiguration des Moduls auf Werkseinstellungen zurücksetzen. Nach einem Klick auf die Schaltfläche folgt ein Bestätigungsdialog mit "Yes" und "No" zur Rückfrage ob der Vorgang wirklich ausgeführt werden soll.

Damit wird auch die gesamte Historie auf dem RoboGate Edge gelöscht!