Skip to main content
Skip table of contents

NATS.IO

Die evoVIU-Kamera unterstützt eine native Anbindung an NATS.io und ermöglicht damit die direkte Übertragung von Bilddaten, Metadaten oder Prüfergebnissen über leichtgewichtige, hochperformante Messaging-Kanäle. Dadurch lässt sich die Kamera nahtlos in verteilte Systeme, Cloud-Infrastrukturen oder Edge-Architekturen integrieren.

Die Kommunikation erfolgt über eine integrierte NATS-Client-Komponente, die Nachrichten an definierte Subjects publiziert. Gleichzeitig kann die Kamera über Subscriptions auf eingehende Nachrichten reagieren, um z. B. Befehle oder Konfigurationsänderungen aus dem System entgegenzunehmen. Dies erlaubt eine bidirektionale Kommunikation zwischen Kamera und Umgebung.

Die Verbindung zu einem NATS-Server (z. B. nats://nats01:4222) sowie die gewünschten Subjects können bequem über die Weboberfläche konfiguriert werden. Nachrichten lassen sich im JSON- oder Binärformat senden, wobei JSON eine einfache Lesbarkeit bietet und das Binärformat für eine effiziente Übertragung großer Bilddaten vorzuziehen ist.

Die NATS-Anbindung ist für geringe Latenz und hohe Zuverlässigkeit ausgelegt. Durch Optionen wie automatisches Reconnect, Heartbeats und optional TLS-gesicherte Verbindungen lässt sich eine stabile und sichere Kommunikation gewährleisten. Bei Bedarf können Nachrichten mit Reply-Subjects versehen werden, um direkte Antwortmechanismen (Request/Reply) zu realisieren.

Dank dieser Integration lässt sich die evoVIU-Kamera flexibel in ereignisgesteuerten Architekturen und skalierbaren IIoT- oder Industrie-4.0-Szenarien einbinden.

Bei der Verwendung von NATS.io im evoVIU VISIONWEB wird im Unterschied zu anderen Verbindungsarten die Subscription immer in Verbindung mit einem Client angelegt. Dabei stellt zunächst der Client die Verbindung zum gewünschten Endpunkt her. Die Subscription kann dann über den Parameter Client Name mit dem Client und dessen Endpunkt verknüpft werden.

Verbindungsparameter

Der Client muss also folgende Informationen besitzen, um sich erfolgreich und sicher zu verbinden:

  • Client Zertifikat (z.B. .crt, .pem, …)

  • Root-CA Zertifikat (z.B. .crt, .pem, …)

  • Schlüsseldatei (optional) (.key)

  • Schlüsseldatei Passwort (optional, falls Schlüsseldatei verschlüsselt ist)

In der nachfolgenden Tabelle können die benötigten Daten, die Sie bei Ihrer IT anfragen sollten, für die jeweilige Situation einsehen.

Parameter

Authentifizierung

Keine

Credentials

Certificate

Expand Certificat

Combination

Client Name

(Haken)

(Haken)

(Haken)

(Haken)

(Haken)

Url

(Haken)

(Haken)

(Haken)

(Haken)

(Haken)

Username

(Haken)

(Haken)

Password

(Haken)

(Haken)

CA-File

(Haken)

(Haken)

(Haken)

CERT-File

(Haken)

(Haken)

(Haken)

Key-File

(Haken)

(Haken)

(Haken)

Use Encrypted

(Haken)

(Haken)

Key-File Password

(Haken)

(Haken)

Timeout

(Haken)

(Haken)

(Haken)

(Haken)

(Haken)

Max Reconnect

(Haken)

(Haken)

(Haken)

(Haken)

(Haken)

Parameter

Type

Einheit

Erklärung

Beispiel

Subscription

Client

Client Name

String

Referenz auf die konfigurierte Client-Komponente, über die die Verbindung läuft. Ohne Client kann keine Subscription aufgebaut werden.

evoviu-cam1

(Haken)

(Haken)

Subject

String

Das Thema, welches abonniert wird. Nur Nachrichten auf diesem Subject werden empfangen.

HelloWorld

(Haken)

URL

String

Die Client-ID ist ein eindeutiger Name zur Identifikation eines Kafka-Clients beim Broker.

nats://nats.myfactory

(Haken)

Username

String

Ein Benutzername in NATS.IO dient zur Authentifizierung von Clients beim NATS-Server und wird häufig zusammen mit einem Passwort verwendet, um den Zugriff zu kontrollieren.

Hans

(Haken)

Password

String

Secret

Ein Passwort in NATS.IO wird zusammen mit dem Benutzernamen verwendet, um den Client gegenüber dem NATS-Server sicher zu authentifizieren. So kann der Zugriff besser kontrolliert werden. Dazu wird ein Secret aus dem evoVIU Secret-Store benötigt.

(Haken)

Ca File

File

*.pem

Das CA-File in NATS.IO überprüft, ob das Zertifikat des NATS-Servers von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde.

(Haken)

Cert File

File

*.pem
*.crt

Das Cert-File (Zertifikatsdatei) enthält das öffentliche Zertifikat eines Clients oder Brokers und bestätigt dessen Identität bei der Verbindung.

(Haken)

Key File

File

*.key

Das Key-File enthält den privaten Schlüssel des Clients oder Brokers und wird genutzt, um TLS-Verbindungen sicher zu verschlüsseln und zu signieren.

(Haken)

Is Encrypted Key File

Boolean

Wenn das Key-File verschlüsselt ist, kann zudem der Schlüssel aktiviert werden mit einem weiteren Key File Password.

(Haken)

Key File Password

Secret

*.key
*.pem

Das Key File Password schützt den privaten Schlüssel in der Key-Datei vor unbefugtem Zugriff – nur mit Passwort kann er entschlüsselt werden.

(Haken)

Timeout

Int32

Maximale Wartezeit in Millisekunden auf Serverantworten, bevor ein Timeout auftritt.

5000

(Haken)

Max Reconnect

Int32

Gibt an, wie oft das System beim Start oder nach einem Verbindungsabbruch versucht, eine Verbindung zum Server herzustellen, bevor der Verbindungsaufbau abgebrochen wird.

-1: Die Verbindung wird unbegrenzt oft versucht wiederherzustellen (dauerhafte Wiederverbindungsversuche).

0: Es wird kein Wiederverbindungsversuch unternommen.

>0: Die Verbindung wird maximal x-mal versucht wiederherzustellen.

(Haken)

Anmerkungen zu den Einstellungen

Je nach Konfiguration des NATS-Servers kann die Authentifizierung entweder über Zugangsdaten (Credentials) und/oder über Zertifikate erfolgen.
Dazu stehen die Konfigurationsmöglichkeiten Use Credentials Authentication und Use Certificate Authentication (als Toggles) zur Verfügung.

Bei der Authentifizierung über Zertifikate können die benötigten Dateien CA File, Cert File und Key File aus dem Dateisystem geladen werden. Diese müssen zuvor im Dateisystem hinterlegt werden.

Falls das Key File verschlüsselt ist, kann über den Toggle Is Encrypted Key File sowie das Eingabefeld Key File Password das erforderliche Passwort hinterlegt werden.

Workflow Setup

Unterschied zwischen NATS Client und NATS Subscription

Der NATS Client dient dazu, eine Verbindung zu einem NATS-Server herzustellen und Nachrichten an ein bestimmtes Subject zu senden (Publish). Über eine NATS Subscription können hingegen Nachrichten empfangen werden, sobald auf dem jeweiligen Subject neue Daten veröffentlicht werden.

In der VISIONWEB-Plattform lassen sich beliebig viele Clients und Subscriptions einrichten. So kann beispielsweise die Bildaufnahme einschließlich zugehöriger Metadaten über eine Subscription ausgelöst und anschließend über einen verbundenen Client an einen gewünschten Ziel-Endpunkt gesendet werden. Gleichzeitig ist es möglich, über einen anderen Client Statusdaten bereitzustellen.

Anlegen des NATS Clients - Schritt für Schritt

  1. Gehen Sie in Workflows unter Components auf ➕ .

image-20250916-135207.png
  1. Suchen Sie nach “NATS Client” und klicken Sie den Eintrag an, damit die Komponente hinzugefügt wird.

  2. Es erscheint eine neue Komponente mit dem Namen “MQTT Client”.

  3. Geben Sie die Verbindungsparameter ein.

Die Mindestvoraussetzung sind der Client Name zur Verknüpfung mit ggf. späteren Subscription und die Url. Alle weiteren Felder sind optional und können wahlweise je nach Authentifizierungsmethode genutzt werden.

image-20250916-195446.png
  1. Wählen Sie den Tab Event Graph und öffnen Sie per Rechtsklick das Context-Menü.

  2. Suchen Sie nach dem Knoten “Publish Value” unter Connections und NATS. IO und fügen Sie den Knoten zum Senden von Daten in Ihrem Workflow ein.

image-20250916-195805.png
  1. Wählen Sie ebenfalls die Komponente mit “Get NATS Client” aus und verbinden Sie diese mit der Publish-Komponente. Fügen Sie das gewünschte “Subject” - also den Ablageort der Daten - ein, den Ihnen der Server bereitstellt.

image-20250916-200455.png

 

  1. Wählen Sie die Variable oder die Datenstruktur aus, die Sie senden möchten, und fügen Sie diese in das Wildcard-Feld Value ein.

image-20250916-200648.png

  1. Wenn gewünscht, können Sie sich das Ergebnis der Übertragung als booleschen Wert ausgeben lassen, um zu prüfen, ob die Übertragung erfolgreich war.

image-20250916-200812.png

Herzlichen Glückwunsch! Sie können nun Ihre Daten an den gewünschten NATS-Server senden.

Anlegen deiner NATS Subscription - Schritt für Schritt

Bevor Sie diesen Schritt durchführen, muss zwingend ein NATS-Client angelegt sein, und es muss ein Client-Name (in unserem Beispiel „nats-evoviu-1“) zur Verlinkung in der Komponente des Clients definiert sein. Dieser Name kann frei gewählt werden.

  1. Gehen Sie in Workflows unter Components auf ➕ .

image-20250916-135207.png
  1. Suchen Sie nach “NATS Subscription” und wählen Sie den Eintrag aus, damit die Komponente hinzugefügt wird.

  2. Es erscheint eine neue Komponente mit dem Namen „NATS Subscription“. Diesen Namen können Sie jederzeit anpassen.

  3. Geben Sie die Verbindungsparameter ein.

Die Mindestvoraussetzung sind der Client Name zur Verknüpfung mit ggf. späteren Subscription und die Url. Alle weiteren Felder sind optional und können je Authentifizierungsmethode wahlweise genutzt werden.

image-20250916-201533.png
  1. Wählen Sie den Tab Event Graph aus und öffnen Sie per Rechtsklick das Context-Menü.

  2. Suchen Sie unter Events nach dem Knoten „NATS Subscription“ und fügen Sie ihn zum Auslösen eines Flows bei der Aktualisierung des Subjects ein.

image-20250916-201805.png
  1. Holen Sie sich den Datensatz über den Wildcard Value direkt in die gewünschte Variable.

image-20250916-202143.png

  1. Optional: Falls Sie direkt eine Rückmeldung über den Erhalt an den NATS-Server senden müssen, können Sie den Knoten Reply Message verwenden und darin die gewünschte Information zurücksenden. Mit diesem Knoten können Sie auch den Knoten Publish Value umgehen. In diesem Fall wird jedoch auf das Sende-Subject geantwortet und nicht — wie bei Publish Value — auf ein frei wählbares Subject.

image-20250916-202535.png

  1. Optional: Falls Sie direkt auf das eingehende Subject über den „Publish Value“-Knoten antworten möchten, können Sie das Subject vom „Reply To“-Ausgang der Subscription direkt mit dem Subject-Eingang des „Publish Value“-Knotens verbinden.

image-20250916-202809.png

Herzlichen Glückwunsch! Sie können nun Daten eines Subjects bei Änderungen empfangen und damit einen Flow auslösen.

Verwendung des Knotens „Publish“

Mit dem „Publish“-Knoten können Sie flexibel und dynamisch Daten an ein beliebiges Subject in NATS senden. Dazu geben Sie entweder das gewünschte Subject direkt in der Parameterzeile des Knotens ein oder lassen es im Workflow automatisch generieren und einbinden.

Bitte stellen Sie sicher, dass die Subjects korrekt geschrieben sind. Wenden Sie sich im Zweifel an Ihre IT-Abteilung.

In der Regel gelten folgende Konventionen für Subjects:

  • Einfache Subjects (direkte Bezeichnungen) bestehen meist aus einem einzelnen Begriff:
    mySubject

  • Hierarchisch aufgebaute Subjects bestehen aus durch Punkte getrennte Tokens:
    mySubject.mySub.myData

  • Es werden keine Schrägstriche (/) verwendet wie bei MQTT — nur Punkte (.) sind zulässig.

  • Keinen abschließenden Punkt am Ende des Subjects setzen.

Sollten Daten nicht wie erwartet gesendet oder empfangen werden, überprüfen Sie bitte die korrekte Schreibweise des Subjects.
Eine fehlerhafte Syntax ist eine häufige Ursache für Übertragungsprobleme.

Der Value kann als Wildcard beliebige Daten enthalten. So lassen sich nicht nur Metadaten und Ergebnisse übertragen, sondern bei Bedarf auch komplette Datensätze, inklusive Bilder.

Verwendung des Knotens „Value“ als Wildcard

Mit dem Knotenpunkt „Value“ können Sie dynamisch Variablen oder Datenstrukturen in die Nachricht einfügen, die beim Ausführen des Workflows befüllt werden. Wählen Sie dazu die gewünschte Variable aus und binden Sie sie über den „Value“-Eingang des Publish-Knotens ein.
Im Unterschied zu MQTT ist keine Umwandlung in ein Byte-Array erforderlich — Datenstrukturen können ebenso direkt (nach Umwandlung in JSON) angeschlossen werden. Die Wildcard-Sockets sind dabei grau markiert und akzeptieren beliebige Datentypen. Auf diese Weise lassen sich Inhalte flexibel zur Laufzeit erzeugen und an das konfigurierte Subject senden, ohne auf feste Datentypen beschränkt zu sein.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.