ZENNER Datahub Howto: Weiterleitungen einrichten am Beispiel HTTP

Titelbild Blogbeitrag ZENNER Datahub - Weiterleitungen einrichten am Beispiel HTTP
- 📖🕓 ≈  4 min -

Letzte Änderung am 21.03.2024

1. Allgemeines

Der ZENNER Datahub unterstützt zur Weiterleitung des Traffics eurer Endgeräte verschiedene Netzwerkprotokolle, die ihr je nach Anforderung und Architektur eures Zielsystems auswählen könnt. Im Folgenden wird für die Weiterleitungsarten HTTP und AMQP beschrieben, wie ihr diese innerhalb der Plattform konfigurieren könnt und was bei der Nutzung zu beachten ist.

2. Einrichten der Weiterleitung

Unabhängig vom Typ der Weiterleitung, müsst ihr diese einmalig initial im Menüpunkt “Management”, unter “Forwarding” durch einen Klick auf den Button „Add new forward rule“ mit den Zugangsdaten des Endpunktes einrichten.

2.1 HTTP-Weiterleitung

2.1.1 Allgemeines

Voraussetzung für die Nutzung der http-Weiterleitung ist ein aus dem Internet erreichbarer Endpunkt mit einer statischen IP-Adresse/URL. Ist die Weiterleitungsregel aktiv, sendet die Plattform bei jedem eingehenden Telegramm einen http POST an die hinterlegte URL. Im Body dieses POST befindet sich ein json-Objekt mit den Nutzdaten sowie den Metainformationen des Empfangs. Dieses ist wie folgt aufgebaut:

Weitere, tiefergehende Meta-Informationen wurden im obigen Bild für eine bessere Übersichtlichkeit ausgeblendet.

2.1.2 Konfiguration der Plattform

Nach dem Klick auf „Add new forward rule“ könnt ihr in der sich öffnenden Maske im Feld „Name“ frei eine gewünschte Bezeichnung vergeben. Als Type wird „HTTP“ ausgewählt. Des Weiteren müsst ihr die Ziel-URL des eigenen Endpunkts eintragen. Diese setzt sich, abhängig ob eine Authentifizierung gegenüber dem Endpunkt gewünscht ist oder nicht, wie folgt zusammen:

Die Weiterleitung müsst ihr anschließend noch den gewünschten Geräten zuweisen (siehe Abschnitt 3: Zuweisen der Weiterleitung)

2.1.3 Nutzungsbeispiel mit flask

Eine einfache Möglichkeit, die http-Weiterleitung zu nutzen, ist das Aufsetzen eines API-Endpunktes mit flask. Mit wenigen Codezeilen könnt ihr damit eine Ziel-URL definieren und den Inhalt des POST-Bodys in eigenem python-Code weiterverarbeiten. Im gezeigten Python-Beispiel wird jedes empfangene json-Dokument in ein Log-file geschrieben.

Hier stehen euch jedoch prinzipiell alle Möglichkeiten offen – vom Zwischenspeichern zum Beispiel in einer MongoDB bis zum direkten Anstoßen einer Aktion, wenn ein bestimmtes Telegramm eintrifft.

2.2 AMQP-Weiterleitung

2.2.1 Allgemeines

Ist die AMQP-Weiterleitung eingerichtet, published die Plattform Telegramme an einen vom Anwender zur Verfügung gestellten Broker wie zum Beispiel rabbitMQ. Dieser muss aus dem Internet erreichbar sein und über eine statische IP-Adresse/URL verfügen.

Die Plattform published immer an einen zuvor eingerichteten Exchange des Brokers. Dieser Exchange kann wiederum an eine oder mehrere Queues gebunden werden. Zur Weiterverarbeitung können die Daten von diesen Queues subscribed werden.

Die einzelnen Telegramme werden von der Plattform als json-Objekt gepublished. Die Objekte sind dabei wie folgt aufgebaut:

Weitere Meta-Informationen wurden in diesem Screenshot für eine bessere Übersichtlichkeit ausgeblendet.

2.2.2 Konfiguration der Plattform

Nach dem Klick auf „Add new forward rule“ könnt ihr in der sich öffnenden Maske im Feld „Name“ frei eine gewünschte Bezeichnung vergeben. Als Type wird „AMQP“ ausgewählt. Des Weiteren müsst ihr die Ziel-URL des Brokers eintragen. Diese setzt sich wie folgt zusammen:

Die Weiterleitung müsst ihr im Anschluss dann noch den Wunsch-Geräten zuweisen (siehe Abschnitt 3: Zuweisen der Weiterleitung)

2.2.3 Subscriben des Brokers

Um die Nachrichten entgegennehmen zu können, ist ein geeigneter AMQP-Client nötig.

Als Client kann bspw. pika verwendet werden. Das folgende python-Beispielskript nimmt alle Nachrichten der Queue „hello“ entgegen und bestätigt diese:

3. Zuweisen der Weiterleitung

Es gibt zwei verschiedene Möglichkeiten, die Weiterleitung zu nutzen beziehungsweise Geräten zuzuweisen:

3.1 Zuweisung an alle Geräte eines Accounts/Mandanten

Es werden alle eingehenden Telegramme von Geräten innerhalb eures Accounts/Mandanten weitergeleitet. Zur Einrichtung klickt ihr unter dem Menüpunkt “Management/Forwarding” bei der im vorherigen Abschnitt erstellten Regel auf „Add“.

Die neue Regel wird anschließend unter „Already added Forwarding Rules to this Tenant“ angezeigt und kann falls erforderlich über „Delete“ wieder inaktiv geschalten werden.

3.2 Zuweisung an einzelne Geräte eines Accounts/Mandanten

Alternativ zu einer globalen Weiterleitung könnt ihr die Weiterleitungsregel auch einzelnen Geräten zuweisen. Hierzu wechselt ihr aus der Geräteliste in die Detailansicht des gewünschten Gerätes. Im Reiter “Forwarding” könnt ihr die Regel anschließend durch den Button „Add“ für das jeweilige Gerät aktiv schalten.

Bereits vorhandene Einträge werden unter „Already added Forwarding Rules to this Device“ angezeigt und können über „Delete“ wieder inaktiv geschalten werden.

Die Plattform unterstützt auch die Authentifizierung mithilfe von „Basic Authentication“. Username und Passwort müssen hierzu in folgender Notation übergeben werden:

https://<user>:<password>@<host>:<port></basic/topic>
Empfohlen3 EmpfehlungenVeröffentlicht in Bedienungshilfen, ZENNER Datahub

Zum Thema passende Artikel

Kommentare

  1. Hallo Community,
    Die im Artikel beschriebene Weiterleitungsmöglichkeit zu einem MQTT-Broker scheint nicht mehr zu existieren? Ich gehe über B.One Middleware/Verwaltung/Weiterleitung und klicke auf das blaue (+) Symbol. Den beschriebenen Link „Add new forward rule“ finde ich nicht. Hier werden mir dann “AMQP”, “HTTP”, “MSQL”, “GRAPHQL”, etc. angeboten – MQTT sehe ich nirgends.
    Mache ich etwas falsch, oder wird MQTT nicht mehr angeboten?

    1. Kurzes Update dazu: Die Implementierung von MQTT als Protokoll für Weiterleitungen im ZENNER Datahub wird überarbeitet und steht daher für die Erstellung neuer Weiterleitungsregeln derzeit nicht zur Verfügung. Sobald dies wieder der Fall ist, werden wir den Beitrag entsprechend aktualisieren.