Acerca de WebSocket

Mediante WebSocket, puede recibir notificaciones de variables, alarmas y errores del sistema. Para recibir notificaciones, es necesario establecer una sesión y suscribirlas.

Se puede utilizar los protocolos WebSocket (versión 13) y el número máximo de sesiones WebSocket es 5.

Si utiliza la seguridad, envíe un comando de autorización. Si no se realiza la autorización, o si el nivel de seguridad no es suficiente, no recibirá una notificación de la unidad de visualización.

Si no hay ninguna comunicación desde el cliente, la unidad de visualización enviará Ping en WebSocket cada 10 segundos. Si no hay respuesta a 5 Pings (es decir, si no hay comunicación desde el cliente, incluido Pong durante 60 segundos), la sesión se cerrará desde la unidad de visualización.

Variables

Puede recibir notificaciones cuando se modifica el valor y/o la calidad de las variables creadas en el software de edición de pantallas.

Para recibir notificaciones, es necesario suscribir las variables a monitorizar. Si la(s) variable(s) suscrita(s) es(son) una(s) variable(s) externa(s), la unidad de visualización comienza a leer el(los) valor(es) desde el(los) dispositivo(s) externo(s).

Nota:

  • No se admiten variables de tipo de datos de usuario (estructura, matriz).

  • El número máximo de variables es 100 por sesión.

Alarmas/Errores del sistema

Cuando se producen/confirman/recuperan alarmas o errores del sistema en la unidad de visualización, puede recibir notificaciones. Para recibir notificaciones, es necesario suscribirse.

Comando

Los comandos son los siguientes:

Nota: El código de ejemplo está escrito en Java.

Establecer la sesión

Para establecer una sesión para WebSocket.

Solicitar

Elemento Valor
MétodosGET
URL<Base URL>/ws Base URL
ParámetrosN/A
Cabecera
Cabecera Valor
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-Version13
Sec-WebSocket-KeyTecla de enlace de WebSocket
CuerpoN/A
Ejemplo

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

Respuesta

Elemento Valor
Código de estado

Sesión establecida con éxito, la unidad de visualización enviará 101 (Protocolo de conmutación).

Código Notas

101 Switching Protocols

Éxito al establecer una sesión.

429 Too Many Requests

Error al establecer una sesión porque se ha alcanzado el número máximo de sesiones.

400 Bad Request

Error al establecer una sesión. La razón es diferente de la anterior.
Cabecera
Cabecera Valor
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-AcceptProtocolo de enlace de WebSocket
CuerpoN/A
Ejemplo

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

Autorización

Si utiliza la administración de usuarios, envíe el comando de autorización primero .

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
Authorizationstring"Bearer <token>"Utilice el token de respuesta en la API de inicio de sesión.
Ejemplo

{

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

}

Agregar variables de control

Agregue variables para suscribirse. Si el número de variables de control supera el número máximo, queda truncado. Para las variables agregadas, la notificación se enviará inmediatamente como el valor inicial.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"add_monitor"Agregar variables de control.
variablematriz de cadena - Conjunto de nombres de variables.
Ejemplo

{

"command": "add_monitor",

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

}

Eliminar las variables de control

Elimine las variables para darse de baja.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"remove_monitor"Elimine las variables del monitor.
variablematriz de cadena - Conjunto de nombres de variables.
Ejemplo

{

"command": " remove _monitor",

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

}

Sustituir las variables de control

Para sustituir todas las variables suscritas. Si el número de variables de control supera el número máximo, queda truncado.

Para las variables agregadas, la notificación se enviará inmediatamente como el valor inicial.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"replace_monitor"Sustituya las variables de control.
variablematriz de cadena - Conjunto de nombres de variables.
Ejemplo

{

"command": " replace_monitor",

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

}

Borrar las variables de control

Para eliminar todas las variables suscritas.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"clear_monitor"Borrar variables de control.
Ejemplo

{

"command": " clear_monitor",

}

Suscribir alarmas y errores del sistema

Para suscribir alarmas y errores del sistema.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"subscribe"Suscribir
alarmmatriz de cadena -

Conjunto de nombres de alarmas a suscribir.

Alarma: "alarm"

Error del sistema: "error"

Ejemplo

{

"command": " subscribe ",

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

}

Anular alarmas y errores del sistema

Para anular las alarmas y los errores del sistema.

Elemento Valor
Remitente Cliente
Datos
Campo Tipo de datos Valor Notas
commandstring"unsubscribe"Anular
alarmmatriz de cadena -

Matriz con el nombre de las alarmas que hay que anular.

Alarma: "alarm"

Error del sistema: "error"

Ejemplo

{

"command": " unsubscribe",

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

}

Suscripción de variables

Para recibir una notificación de la unidad de visualización cuando se modifica el valor o la calidad de la variable suscrita.

Elemento Valor
Remitente Servidor (Unidad de visualización)
Datos
Campo Tipo de datos Valor Notas
updatedstring"variable"Variable
datamatriz del objeto -

Conjunto de información de variables.

Información de la variable:

Campo Tipo de datos Valor Notas
namestring Nombre de la variable Nombre de la variable configurada en el software de edición de pantallas.
qualitystring Cualidad

"bueno": Bien

"inválido": El valor no es válido

"malo": Error

"desconocido": Nunca leído

Valuebooleano, número, cadena El valor de la variable.

Este campo sólo está disponible cuando la calidad es "good".

El tipo de datos de JSON depende del tipo de datos de la variable.

Ejemplo

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

La siguiente tabla muestra los tipos de datos admitidos entre el software de edición de pantallas y WebSocket:

Tipo de datos WebSocket (tipo JSON) Rango de valores de WebSocket
BOOL booleano true/false
BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME number Intervalo de valores de un valor de punto flotante de 64 bits.

*Precisión de 52 bits para LWORD, LINT y ULINT.

*Nulo cuando un valor REAL o LREAL es NaN o INFINITO.

STRING, WSTRING string Caracteres admitidos por UTF-8
DATE, TIME_OF_DAY, DATE_AND_TIME string Formato ISO 8601

Nota: Los valores LWORD se muestran como flotante en la unidad de visualización.

Suscripción de alarmas

Para recibir una notificación de la unidad de visualización cuando se producen/confirman/recuperan/no se confirman alarmas en la unidad de visualización.

Elemento Valor
Remitente Servidor (Unidad de visualización)
Datos
Campo Tipo de datos Valor Notas
updatedstring"alarm"Alarma
datamatriz del objeto -

Conjunto de información de la alarma.

Información de la alarma:

Campo Tipo de datos Valor Notas
messagestring Mensaje Mensaje establecido en el software de edición de pantallas.
parameternumber Parámetro Parámetro establecido en el software de edición de pantallas.
statusstring Estado

“Active”: Ocurrió

"Ack": Confirmado

“Return”: Recuperado

"UnACK":No confirmado

timestring Time Formato ISO-8601
typestring Tipo“HiHi”/”Hi”/”Lo”/”LoLo”
variablestring Nombre de la variable Nombre de la variable relacionada con la alarma.
groupnamestring Nombre del grupo Nombre del grupo de la alarma.
severitynumber Gravedad Gravedad establecida en el software de edición de pantallas.
valuebooleano, número El valor de la variable El tipo de datos de JSON depende del tipo de datos de la variable.
Ejemplo

{

"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

}

]

}

Suscripción de errores del sistema

Para recibir una notificación de la unidad de visualización cuando se producen/confirman/recuperan errores del sistema en la unidad de visualización.

Elemento Valor
Remitente Servidor (Unidad de visualización)
Datos
Campo Tipo de datos Valor Notas

updated

string

"error"

Error del sistema

data

matriz del objeto -

Conjunto de información sobre errores del sistema.

Información sobre el error del sistema:

Campo Tipo de datos Valor Notas

message

string Mensaje Mensaje de error del sistema.

status

string Estado

“Active”: Ocurrió

"Ack": Confirmado

“Return”: Recuperado

time

string Time Formato ISO-8601

equipment

string Nombre del equipo El nombre del dispositivo externo desde el que se genera el error se establece en el nombre del equipo.
Ejemplo

{

"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"

}

]

}