Infos zu WebSocket

Mit WebSocket können Sie Meldungen zu Variablen, Alarmen und Systemfehlern erhalten. Um diese Meldungen zu erhalten, muss eine Sitzung eingerichtet und ein Abonnement abgeschlossen werden.

Es können Protokolle zu WebSocket (Version 13) verwendet und maximal 5 Sitzungen mit WebSocket genutzt werden.

Senden Sie einen Autorisierungsbefehl, wenn "Sicherheit" verwendet werden soll. Wenn Sie keine Autorisierung durchführen oder die Sicherheitsstufe nicht erfüllt werden kann, werden Sie keinerlei Meldungen vom Anzeigegerät erhalten.

Wenn mit dem Klienten nicht kommuniziert wird, sendet das Anzeigegerät alle 10 Sekunden ein Ping an WebSocket. Sollte nach 5 Pings keine Antwort eintreffen (wenn keine Kommunikation mit Klient einschließlich Pong innerhalb von 60 Sekunden stattfindet), wird die Sitzung vom Anzeigegerät aus geschlossen.

Variablen

Sie können Meldungen erhalten, wenn der Wert und/oder die Qualität der Variablen, die in der Bildschirmbearbeitungssoftware erstellt wurden, geändert wird.

Um Meldungen zu erhalten, müssen die zu überwachenden Variablen abonniert werden. Wenn die abonnierten Variable(n) externe Variable(n) sind, startet das Anzeigegerät mit dem Lesen der Werte des externen Gerätes.

Hinweis:

  • Variablen des Typs "Benutzerdaten" (Struktur, Feld) werden nicht unterstützt.

  • Die maximale Anzahl der Variablen ist 100 pro Sitzung.

Alarm/Systemfehler

Wenn im Anzeigegerät Alarme oder Systemfehler auftreten/quittiert/zurückgesetzt werden, können Sie Meldungen erhalten. Um Meldungen zu erhalten, muss ein Abonnement abgeschlossen werden.

Befehle

Folgende Befehle werden verwendet:

Aufbauen einer Sitzung

Aufbau einer Sitzung mit WebSocket.

Anfrage

Element Wert
Vorgehensweise GET
URL <Base URL>/ws Base URL
Parameter N/A
Kopfzeile
Kopfzeile Wert
Upgrade websocket
Connection Upgrade
Sec-WebSocket-Version 13
Sec-WebSocket-Key WebSocket Handshake Key
Body N/A
Beispiel

GET http://192.168.1.100:8000/api/v1/ws HTTP/1.1

Host: localhost:8082

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Version: 13

Sec-WebSocket-Key: k3CyFjeNOBNzFZx4blx9kg==

Origin: ws://localhost:8082

Antwort

Element Wert
Zustands-Code

Bei erfolgreichem Aufbau einer Sitzung, sendet das Anzeigegerät 101 (Umschaltprotokoll).

Code Hinweise

101 Switching Protocols

Erfolgreicher Sitzungsaufbau.

429 Too Many Requests

Es konnte keine Sitzung aufgebaut werden, da die maximale Anzahl an Sitzungen erreicht wurde.

400 Bad Request

Es konnte keine Sitzung aufgebaut werden. Anderer Grund als genannt.
Kopfzeile
Kopfzeile Wert
Upgrade websocket
Connection Upgrade
Sec-WebSocket-Accept WebSocket Handshake
Body N/A
Beispiel

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

Autorisierung

Wenn Sie die Benutzerverwaltung verwenden, senden Sie zuerst den Autorisierungsbefehl.

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
Authorization Zeichenfolge "Bearer <token>" Verwenden Sie Token-Antwort in der Log-in API
Beispiel

{

"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IlVzZXIxIiwibGV2ZWwiOjF9.eqVwAuo0KMqdggICllJVPs3IE67oHdUpo04w68md7kI "

}

Überwachungsvariablen hinzufügen

Fügen Sie zu abonnierende Variablen hinzu. Wenn die Anzahl der Überwachungsvariablen die Gesamtzahl überschreitet, wird trunkiert. Zum Hinzufügen von Variablen wird sofort eine Meldung als Initialwert gesendet.

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "add_monitor" Überwachungsvariablen hinzufügen.
variable Zeichenfolgefeld - Variablennamenfeld
Beispiel

{

"command": "add_monitor",

"variable": ["Variable1","Variable2"]

}

Überwachungsvariablen entfernen

Variablen entfernen zum Abbestellen

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "remove_monitor" Entfernen der Überwachungsvariablen
variable Zeichenfolgefeld - Variablennamenfeld
Beispiel

{

"command": "remove_monitor",

"variable": ["Variable1","Variable2"]

}

Ersetzen der Überwachungsvariablen

Zum Ersetzen aller abonnierten Variablen. Wenn die Anzahl der Überwachungsvariablen die Gesamtzahl überschreitet, wird trunkiert.

Zum Hinzufügen von Variablen wird sofort eine Meldung als Initialwert gesendet.

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "replace_monitor" Ersetzen der Überwachungsvariablen
variable Zeichenfolgefeld - Variablennamenfeld
Beispiel

{

"command": "replace_monitor",

"variable": ["Variable1","Variable2"]

}

Löschen der Überwachungsvariablen

Ersetzt alle abonnierten Variablen.

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "clear_monitor" Löschen der Überwachungsvariablen
Beispiel

{

"command": "clear_monitor"

}

Abonnieren von Alarm- und Systemfehlern

Zum Abonnieren von Alarm- und Systemfehlern

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "subscribe" Abbonement
alarm Zeichenfolgefeld -

Alarmnamenfeld zum Abonnieren

Alarm: “alarm”

Systemfehler: “error”

Beispiel

{

"command": "subscribe",

"alarm": ["alarm","error"]

}

Abbestellen von Alarm- und Systemfehlern

Zum Abbestellen von Alarm- und Systemfehlern

Element Wert
Sender Client
Daten
Feld Datentyp Wert Hinweise
command Zeichenfolge "unsubscribe" Abbestellen
alarm Zeichenfolgefeld -

Alarmnamenfeld zum Abbestellen.

Alarm: “alarm”

Systemfehler: “error”

Beispiel

{

"command": "unsubscribe",

"alarm": ["alarm","error"]

}

Abonnieren von Variablen

Zum Empfangen von Meldungen des Anzeigegeräts, wenn der Wert und/oder die Qualität der abonnierten Variable geändert wird.

Element Wert
Sender Server (Anzeigegerät)
Daten
Feld Datentyp Wert Hinweise
updated Zeichenfolge "variable" Variablen
data Objektfeld -

Variableninformationsfeld

Variableninformationen:

Feld Datentyp Wert Hinweise
name Zeichenfolge Variablenname In der Bildschirmbearbeitungssoftware festgelegter Variablenname.
quality Zeichenfolge Qualität

“good”: Gut

"invalid": Wert ist ungültig

“bad”: Fehler

“unknown”: Nie gelesen

Value boolesche, Zahl, Zeichenfolge Der Wert der Variable.

Nur bei Qualität ”good” steht dieses Feld zur Verfügung.

Datentyp JSON hängt vom Datentyp der Variable ab.

Beispiel

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

In der folgenden Tabelle werden die unterstützten Datentypen zwischen Bildschirmbearbeitungs-Software und WebSocketaufgeführt.

Datentyp WebSocket (Typ JSON) Wertebereich WebSocket
BOOL Boolesch true/false
BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME Nummer Wertebereich eines 64-Bit Gleitkommawertes.

*Akkurat innerhalb 52 Bits für LWORD, LINT und ULINT.

*Null, wenn die Werte von REAL oder LREAL NaN oder INFINITY sind.

STRING, WSTRING Zeichenfolge Durch UTF-8 unterstützte Zeichen
DATE, TIME_OF_DAY, DATE_AND_TIME Zeichenfolge Format ISO 8601

Hinweis: LWORD-Werte werden auf dem Anzeigegerät als Gleitkomma angezeigt.

Abonnieren von Alarmen

Empfang von Meldungen vom Anzeigegerät, wenn darin Alarme auftreten oder quittiert bzw. zurückgesetzt werden.

Element Wert
Sender Server (Anzeigegerät)
Daten
Feld Datentyp Wert Hinweise
updated Zeichenfolge "alarm" Alarm (Alarmgruppe)
data Objektfeld -

Alarminformationsfeld

Alarminformationen:

Feld Datentyp Wert Hinweise
message Zeichenfolge Meldung In der Bildschirmbearbeitungssoftware festgelegte Meldung.
parameter Nummer Parameter In der Bildschirmbearbeitungssoftware festgelegter Parameter.
status Zeichenfolge Status

“Active”: Aufgetreten

“Ack”: Quittiert

“Return”: Wiederhergestellt

“UnACK”: Nicht quittiert

time Zeichenfolge Zeit Format ISO-8601
type Zeichenfolge Typ “HiHi”/”Hi”/”Lo”/”LoLo”
variable Zeichenfolge Variablenname Mit dem Alarm verbundener Variablenname
groupname Zeichenfolge Gruppenname Gruppenname des Alarms
severity Nummer Stufe In der Bildschirmbearbeitungssoftware festgelegte Stufe.
value Boolesch, Zahl Der Wert der Variable Datentyp JSON hängt vom Datentyp der Variable ab.
Beispiel

{

"updated": “alarm”,

"data”:[

 {

"message": "BOOL_Hi",

"parameter": 100,

"status": "Active",

"time": "2017-07-07T16:20:01",

"type": "Hi",

"variable": "BOOL_Internal"

“groupname”: “AlarmGroup1”,

“severity”: 1,

“value”: true

}

]

}

Systemfehlerabonnement

Zum Empfang von Meldungen vom Anzeigegerät, wenn darin Systemfehler auftreten/quittiert/zurückgesetzt werden.

Element Wert
Sender Server (Anzeigegerät)
Daten
Feld Datentyp Wert Hinweise

updated

Zeichenfolge

"error"

Systemfehler

data

Objektfeld -

Systemfehlerinformationen-Feld

Systemfehlerinformationen

Feld Datentyp Wert Hinweise

message

Zeichenfolge Meldung Systemfehlermeldung

status

Zeichenfolge Status

“Active”: Aufgetreten

“Ack”: Quittiert

“Return”: Wiederhergestellt

time

Zeichenfolge Zeit Format ISO-8601

equipment

Zeichenfolge Gerätename Der Name des externen Geräts, von dem der Fehler generiert wird, wird als Gerätename festgelegt.
Beispiel

{

"updated”:”error",

"data": [

{

"equipment": "MODBUS_Equipment",

"message": "MODBUS_Equipment:TCP connection open error (IP Address:127.0.0.2)",

"status": "Active",

"time": “2017-07-07T16:42:00"

}

]

}