Sobre o WebSocket

Usando o WebSocket, você pode receber notificações de variáveis, alarmes e erros do sistema. Para receber notificações, é necessário estabelecer uma sessão e inscrevê-las.

Os protocolos WebSocket (Versão 13) podem ser usados e o número máximo de sessões WebSocket é 5.

Se estiver usando segurança, envie um comando de autorização. Se a autorização não for feita ou se o nível de segurança não for suficiente, você não receberá notificação da unidade do display.

Se não houver comunicação do cliente, a unidade do display enviará o Ping no WebSocket a cada 10 segundos. Se não houver resposta a 5 Pings (ou seja, se não houver comunicação do cliente incluindo Pong por 60 segundos), a sessão será encerrada a partir da unidade do display.

Variáveis

Você pode receber notificações quando o valor e/ou a qualidade das variáveis criadas no software de edição de tela é alterada.

Para receber notificações, você precisa assinar as variáveis para monitorar. Se a(s) variável(eis) inscrita(s) for(em) uma(s) variável(eis) externa(s), a unidade do display começa a ler o(s) valor(es) do(s) dispositivo(s) externo(s).

Observação:

  • Variáveis do tipo de dados do usuário (estrutura, matriz) não são suportadas.

  • O número máximo de variáveis é 100 por sessão.

Alarmes/Erros do sistema

Quando alarmes ou erros do sistema são ocorridos/reconhecidos/recuperados na unidade do display, você pode receber notificações. Para receber notificações, você precisa se inscrever.

Comandos

A seguir estão os comandos:

Sessão de estabelecimento

Para estabelecer uma sessão para WebSocket.

Solicitação

Item Valor
Métodos GET
URL <Base URL>/ws Base URL
Parâmetros N/A
Cabeçalho
Cabeçalho Valor
Upgrade websocket
Connection Upgrade
Sec-WebSocket-Version 13
Sec-WebSocket-Key Tecla de WebSocket Handshake
Corpo N/A
Exemplo

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

Resposta

Item Valor
Código de status

Sucesso para estabelecer uma sessão, a unidade do display enviará 101 (Protocolo de alteração).

Code Notas

101 Switching Protocols

Sucesso para estabelecer uma sessão.

429 Too Many Requests

Não foi possível estabelecer uma sessão porque o número máximo de sessões foi atingido.

400 Bad Request

Não foi possível estabelecer uma sessão. A razão é diferente do acima.
Cabeçalho
Cabeçalho Valor
Upgrade websocket
Connection Upgrade
Sec-WebSocket-Accept WebSocket Handshake
Corpo N/A
Exemplo

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

Autorização

Se você utiliza a gestão do usuário, envie primeiro o comando de autorização.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
Authorization string "Bearer <token>" Use a resposta de token na API de login.
Exemplo

{

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

}

Adicionando variáveis de monitoramento

Adicionar variáveis para subscrever. Se o número de variáveis de monitoramento exceder o número máximo, ele será truncado. Para variáveis adicionadas, a notificação será enviada imediatamente como o valor inicial.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "add_monitor" Adicionar variáveis de monitor.
variable matriz de string - Matriz de nome variável.
Exemplo

{

"command": "add_monitor",

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

}

Removendo variáveis de monitoramento

Remover as variáveis para cancelar a inscrição.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "remove_monitor" Remover as variáveis do monitor.
variable matriz de string - Matriz de nome variável.
Exemplo

{

"command": "remove_monitor",

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

}

Substituindo variáveis de monitoramento

Para substituir todas as variáveis inscritas. Se o número de variáveis de monitoramento exceder o número máximo, ele será truncado.

Para variáveis adicionadas, a notificação será enviada imediatamente como o valor inicial.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "replace_monitor" Substituir variáveis de monitoramento.
variable matriz de string - Matriz de nome variável.
Exemplo

{

"command": "replace_monitor",

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

}

Desmarcar variáveis de monitoramento

Para remover todas as variáveis inscritas.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "clear_monitor" Desmarcar variáveis de monitoramento.
Exemplo

{

"command": "clear_monitor"

}

Subscrevendo alarmes e erros do sistema

Para subscrever alarmes e erros de sistema.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "subscribe" Inscrever
alarm matriz de string -

Matriz de nomes de alarmes para inscrever.

Alarme: “alarm”

Erro do sistema: “error”

Exemplo

{

"command": "subscribe",

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

}

Cancelamento de inscrição de alarmes e erros do sistema

Para cancelar a inscrição de alarmes e erros do sistema.

Item Valor
Remetente Cliente
Dados
Campo Tipo de dados Valor Notas
command string "unsubscribe" Cancelar a inscrição
alarm matriz de string -

Matriz de nomes de alarmes para cancelar a inscrição.

Alarme: “alarm”

Erro do sistema: “error”

Exemplo

{

"command": "unsubscribe",

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

}

Inscrição de variáveis

Para receber notificação da unidade do display quando o valor e/ou a qualidade da variável inscrita for alterada.

Item Valor
Remetente Servidor (Unidade do display)
Dados
Campo Tipo de dados Valor Notas
updated string "variable" Variável
data matriz de objetos -

Matriz de informações variáveis.

Informação variável:

Campo Tipo de dados Valor Notas
name string Nome da variável Nome da variável definido no software de edição de tela.
quality string Qualidade

“good”: Bom

"invalid": O valor é inválido

“bad”: Erro

“unknown”: Nunca lido

Value booleano, número, string O valor da variável.

Somente quando a qualidade é ”good”, este campo está disponível.

O tipo de Dados do JSON depende do tipo de dados da variável.

Exemplo

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

A tabela a seguir lista os tipos de dados suportados entre o software de edição de tela e o WebSocket:

Tipo de dados WebSocket (Tipo JSON) Faixa de valores do WebSocket
BOOL booleana verdadeiro/falso
BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME número Faixa de valor de um valor de ponto flutuante de 64 bits.

*Exato dentro de 52 bits para LWORD, LINT e ULINT.

*Nulo quando um valor REAL ou LREAL é NaN ou INFINITY.

STRING, WSTRING string Caracteres suportados pela UTF-8
DATE, TIME_OF_DAY, DATE_AND_TIME string Formato ISO 8601

Observação: Os valores de LWORD são exibidos como Float na unidade de exibição.

Inscrição de alarmes

Para receber notificação da unidade do display quando os alarmes são ocorridos/reconhecidos/recuperados/não reconhecidos na unidade do display.

Item Valor
Remetente Servidor (Unidade do display)
Dados
Campo Tipo de dados Valor Notas
updated string "alarm" Alarme (Grupo de alarmes)
data matriz de objetos -

Matriz de informações de alarme.

Informações do alarme:

Campo Tipo de dados Valor Notas
message string Mensagem Mensagem definida no software de edição de tela.
parameter número Parâmetro Parâmetro definido no software de edição de tela.
status string Status

“Active”: Ocorrido

“Ack”: Reconhecido

“Return”: Recuperado

“UnACK”: Não reconhecido

time string Time Formato ISO-8601
type string Tipo “HiHi”/”Hi”/”Lo”/”LoLo”
variable string Nome da variável Nome da variável relacionada ao alarme.
groupname string Nome do grupo Nome do grupo do alarme.
severity número Gravidade Severidade definida no software de edição de tela.
value booleano, número O valor da variável O tipo de dados do JSON depende do tipo de dados da variável.
Exemplo

{

"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

}

]

}

Inscrição de erros do sistema

Para receber notificação da unidade do display quando os erros do sistema são ocorridos/reconhecidos/recuperados na unidade do display.

Item Valor
Remetente Servidor (Unidade do display)
Dados
Campo Tipo de dados Valor Notas

updated

string

"error"

Erro do sistema

data

matriz de objetos -

Matriz de informações de erro do sistema.

Informações de erro do sistema:

Campo Tipo de dados Valor Notas

message

string Mensagem Mensagem de erro do sistema.

status

string Status

“Active”: Ocorrido

“Ack”: Reconhecido

“Return”: Recuperado

time

string Hora Formato ISO-8601

equipment

string Nome do equipamento O nome do dispositivo externo a partir do qual o erro é gerado é definido no nome do equipamento.
Exemplo

{

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

}

]

}