Zum Hauptinhalt springen

Bereitstellung simulierter Produktionsdaten über REST-Trigger

Dieses Beispiel zeigt, wie im OPC Router selbst ein kleiner RESTful-Webservice mit Bearer-Token-Authentifizierung bereitgestellt werden kann. Der Webservice stellt simulierte Produktionsdaten einer Maschine bereit. Die Werte werden innerhalb des Flows mit Formel- und Taschenrechner-Transferobjekten erzeugt.

Zielbild

Das Beispiel besteht aus zwei getrennten Flows innerhalb desselben REST-Server-Plug-ins. Diese beiden Workflows werden nacheinander erstellt und dann produktiv geschaltet:

  1. Ein Flow mit einem REST-Trigger der Methode POST stellt einen Token-Endpunkt bereit.
  2. Ein zweiter Flow mit einem REST-Trigger der Methode GET liefert die eigentlichen Produktionsdaten.

Der typische Ablauf ist wie folgt:

  1. Ein Client ruft per POST den Endpunkt für die Token-Abfrage auf.
  2. Der OPC Router prüft client_id und client_secret.
  3. Der OPC Router liefert ein Bearer Token als JSON-Antwort zurück.
  4. Der Client ruft anschließend per GET den Datenendpunkt auf und übergibt das Bearer Token im Header Authorization.
  5. Der OPC Router prüft den Header und liefert die simulierten Produktionsdaten zurück.

Ausgangssituation

Für dieses Beispiel wird eine einzelne Maschine PRESS-01 angenommen. Über den Datenendpunkt sollen zum Beispiel folgende Werte bereitgestellt werden:

  • aktuelle Stückzahl
  • Ausschussmenge
  • OEE-Wert
  • Maschinenzustand
  • Zeitstempel der letzten Aktualisierung

Die Werte stammen in diesem Beispiel nicht aus einem Fremdsystem, sondern werden mit Formel- und Taschenrechner-Transferobjekten im OPC Router erzeugt. Dadurch bleibt das Beispiel in sich abgeschlossen und kann ohne zusätzliche Datenquelle nachvollzogen werden.

Beispielaufrufe

Token-Abfrage

POST http://localhost:50117/api/auth/token
Content-Type: application/json

{
"client_id": "demo-client",
"client_secret": "demo-secret"
}

Eine mögliche Antwort sieht so aus:

{
"access_token": "opcrouter-demo-token",
"token_type": "Bearer",
"expires_in": 3600
}

Wertabfrage

GET http://localhost:50117/api/production-data
Authorization: Bearer opcrouter-demo-token
Accept: application/json

Eine mögliche Antwort sieht so aus:

{
"machine_id": "PRESS-01",
"quantity": 524,
"scrap": 11,
"oee": 0.82,
"state": "Produktion",
"timestamp": "2026-05-11T14:30:00Z"
}

Aufbau im OPC Router

REST-Server-Plug-in

Erstellen Sie zunächst ein REST-Server-Plug-in, über das beide Endpunkte bereitgestellt werden. Verwenden Sie zum Beispiel den Routen-Präfix api.

REST-Server-Plug-in für das Produktionsdatenbeispiel

Die grundsätzliche Funktionsweise des REST-Servers und des REST-Triggers ist in den jeweiligen Referenzseiten beschrieben.

REST-Trigger für die Token-Abfrage

Projektieren Sie einen ersten, eigenständigen Flow mit einem REST-Trigger für die Token-Abfrage.

  1. Verwenden Sie als Endpunkt zum Beispiel auth/token.
  2. Wählen Sie als HTTP-Methode POST.
  3. Wählen Sie als Antwortformat application/json.
  4. Legen Sie einen Anfrageparameter für den Request Body an.
  5. Legen Sie einen Antwortparameter für den Response Body an.

Lesen Sie den Request Body anschließend mit einem JSON-Lesen-Transferobjekt aus und extrahieren Sie mindestens die Felder client_id und client_secret.

Prüfen Sie die beiden Werte danach mit einem Formel- und Taschenrechner-Transferobjekt gegen die erwarteten Demo-Zugangsdaten, zum Beispiel demo-client und demo-secret.

In einer echten Projektierung gehören die erwarteten Zugangsdaten nicht in den Vergleichsausdruck, sondern in Variablen vom Typ Secret String, und der Vergleich in ein Bedingung (IF)-Transferobjekt: Es hält den Wert maskiert, während das Formel- und Taschenrechner-Transferobjekt ihn für die Berechnung einsetzt und im Ergebnis als gewöhnlichen Text ausgibt.

Erstellen Sie bei gültigen Werten mit einem JSON-Schreiben-Transferobjekt die Token-Antwort. Für ein in sich geschlossenes Beispiel genügt ein fest vorgegebener Token-Wert wie opcrouter-demo-token.

Eine mögliche JSON-Struktur für die Antwort ist:

{
"access_token": "opcrouter-demo-token",
"token_type": "Bearer",
"expires_in": 3600
}

Verbinden Sie den erzeugten JSON-Inhalt mit dem Response Body des REST-Triggers.

Schalten Sie diesen Flow anschließend produktiv, bevor Sie den zweiten Flow testen oder produktiv schalten.

REST-Trigger für die Wertabfrage

Projektieren Sie danach einen zweiten, eigenständigen Flow mit einem REST-Trigger für die eigentliche Datenabfrage.

  1. Verwenden Sie als Endpunkt zum Beispiel production-data.
  2. Wählen Sie als HTTP-Methode GET.
  3. Wählen Sie als Antwortformat application/json.
  4. Legen Sie einen Anfrageparameter vom Typ HTTP-Header an.
  5. Verwenden Sie als Header-Namen Authorization.
  6. Legen Sie einen Antwortparameter für den Response Body an.

Prüfen Sie den Inhalt des Headers anschließend gegen den erwarteten Wert Bearer opcrouter-demo-token. Auch dieser Erwartungswert gehört in einer echten Projektierung in eine Variable vom Typ Secret String.

Erzeugen Sie danach die Produktionsdaten mit Formel- und Taschenrechner-Transferobjekten. Für ein einfaches Demo-Szenario können Sie konstante oder leicht variierte Werte verwenden, zum Beispiel:

  • quantity = 524
  • scrap = 11
  • oee = 0.82
  • state = Produktion

Fassen Sie diese Werte anschließend mit einem JSON-Schreiben-Transferobjekt zu einer JSON-Antwort zusammen und verbinden Sie das Ergebnis mit dem Response Body des REST-Triggers.

Eine mögliche JSON-Struktur ist:

{
"machine_id": "PRESS-01",
"quantity": 524,
"scrap": 11,
"oee": 0.82,
"state": "Produktion",
"timestamp": "2026-05-11T14:30:00Z"
}

Schalten Sie anschließend auch diesen zweiten Flow produktiv.

Empfohlene Projektstruktur

Für ein übersichtliches Demo-Projekt bietet sich folgende Aufteilung an:

  1. Flow Tokenabfrage mit REST-Trigger, JSON-Lesen, Formel- und Taschenrechner-Transferobjekt sowie JSON-Schreiben-Transferobjekt.
  2. Flow Produktionsdaten mit REST-Trigger, Formel- und Taschenrechner-Transferobjekten zur Werterzeugung sowie JSON-Schreiben-Transferobjekt.
  3. Optional eine oder mehrere Variablen, wenn Zwischenergebnisse getrennt abgelegt oder wiederverwendet werden sollen.

Produktiv schalten

Da dieses Beispiel aus zwei getrennten Flows besteht, müssen beide Flows nach der Projektierung explizit produktiv geschaltet werden. Eine allgemeine Beschreibung dazu finden Sie auf der Seite Flow anlegen. Dort wird im Abschnitt zum Pop-up-Menü auch der Button Flow produktiv schalten beschrieben.

Für dieses Beispiel bietet sich folgende Reihenfolge an:

  1. Flow Tokenabfrage erstellen und produktiv schalten.
  2. Token-Endpunkt per POST testen.
  3. Flow Produktionsdaten erstellen und produktiv schalten.
  4. Datenendpunkt per GET mit Bearer Token testen.

Hinweise für ein vollständiges Beispielprojekt

Für eine spätere Bereitstellung als .rpe-Datei ist dieses Beispiel besonders geeignet, weil es keine externe Infrastruktur voraussetzt. Der komplette Ablauf kann im OPC Router selbst demonstriert werden:

  1. Token per POST anfordern.
  2. Bearer Token aus der Antwort übernehmen.
  3. Produktionsdaten per GET abrufen.

Damit eignet sich dieses Szenario gut als in sich vollständiges Demo-Projekt für den Bereich Beispiele und Konzepte.

Beispielprojekt zum Import

Das vollständige Beispielprojekt steht als rest_bearer_token_and_production_data_example.rpe bereit.

Die Projektdatei enthält die beiden hier beschriebenen REST-Trigger-Flows sowie zusätzlich die beiden Flows aus dem Beispiel Verbindung mit Bearer Token.

Importieren Sie diese Projektdatei in den OPC Router, um das Beispiel vollständig nachzuvollziehen und direkt zu testen.