Daten als HTTP-Server verarbeiten

In diesem Artikel zeigen wir, wie Daten mit Hilfe des HTTP Protokolls vom Gateway empfangen werden können. Hierfür konfigurieren wir das connect-Gateway als HTTP-Server, der eine REST-Schnittstelle bereitstellt.
Das connect-Gateway bietet eine Vielzahl an Protokollen an, die die Kommunikation mit fast allen Arten von Endgeräten wie Maschinen, Datenbanken, IT Systeme oder Cloud-Plattformen ermöglicht. Dabei ist HTTP ein häufig verwendetes Protokoll zur Datenübertragung.
Um dies optimal zu unterstützen, können Daten aus Anfragen an eine frei konfigurierbare REST-Schnittstelle im connect-Gateway verarbeitet werden. Hierdurch können wir eine große Bandbreite an Systemen an das connect-Gateway andocken.
Inhaltsverzeichnis
Konfiguration als HTTP-Server
Wir erfassen die Daten, mit Hilfe des HTTP_SERVER
Plugins. Hierbei gehen wir davon aus, dass die Daten im Beispiel von einer industriellen Fräsmaschine an das connect-Gateway gesendet werden.
Dabei liefert die Maschine ihre Maschinendaten im JSON-Format. Diese Daten dekodieren wir mit Hilfe des JSON_DECODERS
und legen sie in Datenpunkten ab.
Datenpunkte festlegen
Im ersten Schritt definieren wir die Datenpunkte. Unsere Maschine meldet uns eine Spindellaufzeit und die Maschinenlaufzeit, so dass wir zwei Datenpunkte anlegen. Für jeden Datapoint
legen wir den Path
und den Type
fest.
<datapoints> <datapoint> <path>/spindellaufzeit</path> <type>integer</type> </datapoint> <datapoint> <path>/maschinenlaufzeit</path> <type>integer</type> </datapoint> </datapoints>
Endpoint
Als nächstes definieren wir einen Endpoint
, an den die Maschine ihre Daten senden kann.
<endpoint> <name>Maschine_1</name>
Für diesen Endpoint
verwenden wir das HTTP_SERVER
Plugin. Damit die Verbindung über HTTP aufgebaut werden kann, konfigurieren wir die connection_method
als HTTP
den TCP-Port.
<protocol plugin="HTTP_SERVER"> <name>Http_server</name> <parameters> <param key="connection_method">HTTP</param> <param key="port">8833</param> </parameters>
Im nächsten Schritt legen wir einen passiven Trigger
an. Durch diesen lauscht das Gateway nun kontinuierlich auf neue Daten. Bein Eingang neuer Werte werden diese direkt vom Gateway verarbeitet und die beiden Datenpunkte aktualisiert.
<trigger> <passive> </trigger>
Producer
Im abschließenden Schritt konfigurieren wir den Daten-Produzenten.
<producer> <name>http_producer_1</name>
Über die Parameter httpmethod
und path
definieren wir die URL der REST-Anfrage. Und der Parameter payload
gibt an, aus welchem Teil des HTTP-Requests die Payload extrahiert wird.
<parameters> <param key="path">/machine_1</param> <param key="httpmethod">GET</param> <param key="payload">BODY</param> </parameters>
Die HTTP Anfrage liefert ein JSON-Dokument, welches wie folgt aufgebaut ist:
{ "machine_1_uptime": 120, "spindle_1_time": 100, "axis_position_x": 37.22, "axis_position_y": 69.37, }
Anschließend legen wir den JSON – Decoder
an, der die gewünschten Daten aus dem JSON-Dokument extrahiert.
<decoder plugin="JSON_DECODER"> <parameters />
Innerhalb des Decoders
folgt nun die Definition des Mappings
. Dort legen wir fest, welche JSON-Attribute extrahiert und dekodiert werden, um dann in die entsprechenden Datenpunkte abgelegt zu werden.
<mapping> <datapoint>/spindellaufzeit</datapoint> <parameters> <param key="path">spindle_1_time</param> </parameters </mapping> <mapping> <datapoint>/maschinenlaufzeit</datapoint> <parameters> <param key="path">machine_1_uptime</param> </parameters> </mapping>
Aus dem Pfad spindle_1_time
im JSON-Dokument wird der aktuelle Wert ausgelesen und in den Datenpunkt /spindellaufzeit
geschrieben. Außerdem wird der Wert von machine_1_uptime
aus dem JSON-Dokument nach /maschinenlaufzeit
geschrieben.
Ergebnis
Mit dieser Konfiguration lässt sich eine beliebige Anzahl von unterschiedlichen Daten aus der Maschine auslesen und für die Weiterverarbeitung aufbereiten. So bekommen wir abhängig vom Endgerät viele, unterschiedliche Maschinendaten geliefert.
Aufgrund der hohen Flexibilität haben wie die Möglichkeit, ausschließlich die Attribute auszuwählen, welche für uns von Interesse sind.