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:

Observação: O código do exemplo é escrito em Java.

Sessão de estabelecimento

Para estabelecer uma sessão para WebSocket.

Solicitação

Item Valor
MétodosGET
URL<Base URL>/ws Base URL
ParâmetrosN/A
Cabeçalho
Cabeçalho Valor
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-Version13
Sec-WebSocket-KeyTecla de WebSocket Handshake
CorpoN/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
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-AcceptWebSocket Handshake
CorpoN/A
Exemplo

HTTP/1.1 101 Protocolo de alteração

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
Authorizationstring"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
commandstring"add_monitor"Adicionar variáveis de monitor.
variablematriz 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
commandstring"remove_monitor"Remover as variáveis do monitor.
variablematriz 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
commandstring"replace_monitor"Substituir variáveis de monitoramento.
variablematriz 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
commandstring"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
commandstring"subscribe"Inscrever
alarmmatriz de string -

Matriz de nomes de alarmes para inscrever.

Alarme: "alarm"

Erro de 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
commandstring"unsubscribe"Cancelar a inscrição
alarmmatriz de string -

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

Alarme: "alarm"

Erro de 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
updatedstring"variable"Variável
datamatriz de objetos -

Matriz de informações variáveis.

Informação variável:

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

“good”: Bom

"invalid": O valor é inválido

“bad”: Erro

“unknown”: Nunca lido

Valuebooleano, 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
updatedstring"alarm"Alarme
datamatriz de objetos -

Matriz de informações de alarme.

Informações do alarme:

Campo Tipo de dados Valor Notas
messagestring Mensagem Mensagem definida no software de edição de tela.
parameternúmero Parâmetro Parâmetro definido no software de edição de tela.
statusstring Status

“Active”: Ocorreu

"Ack": Reconhecido

“Return”: Recuperado

“UnACK”: Não reconhecido

timestring Time Formato ISO-8601
typestring Tipo“HiHi”/”Hi”/”Lo”/”LoLo”
variablestring Nome da variável Nome da variável relacionada ao alarme.
groupnamestring Nome do grupo Nome do grupo do alarme.
severitynúmero Gravidade Severidade definida no software de edição de tela.
valuebooleano, 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”: Ocorreu

"Ack": Reconhecido

“Return”: Recuperado

time

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

}

]

}