WebSocket

Con l’uso di WebSocket è possibile ricevere notifiche di variabili, allarmi e errori di sistema. Per ricevere notifiche, occorre stabilire una sessione e se occorre sottoscriverle.

Si usano i protocolli WebSocket (versione 13) e il massimo numero di sessioni WebSocket è 5.

Quando si usa la Sicurezza, inviare il comando di autorizzazione. Se l’autorizzazione non è stata fatta o se il livello di protezione non è sufficiente, non si riceveranno le notifiche dal visualizzatore.

Quando non ci sono comunicazioni dal client, il visualizzatore invierà un Ping al WebSocket ogni 10 secondi. Se non ci sono risposte a 5 Ping (cioè, non ci sono comunicazioni dal client compresi i Pong per 60 secondi), la sessione viene chiusa dal visualizzatore.

Variabili

Le notifiche si ricevono quando il valore e/o la qualità delle variabili create con il software di modifica delle schermate vengono modificati.

Per ricevere le notifiche occorre sottoscrivere le variabili da monitorare. Se le variabili sottoscritte sono variabili esterne, il visualizzatore inizia a leggere i valori dai dispositivi esterni.

Nota:

  • Variabili di tipo di dati utente (strutture, array) non sono supportati.

  • Il numero massimo di variabili è 100 per ogni sessione.

Allarmi/Errori di sstema

Se nel visualizzatore si verificano/si riconoscono/si ripristinano allarmi o errori di sistema, si possono ricevere le notifiche Per ricevere le notifiche occorre sottoscrivere.

Comandi

I comandi sono i seguenti:

Nota: il codice dell’esempio è scritto in Java.

Stabilire la sessione

Stabilire la sessione per WebSocket.

Richiesta

Elemento Valore
MetodiGET
URL<Base URL>/ws Base URL
ParametriN/A
Intestazione
Intestazione Valore
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-Version13
Sec-WebSocket-KeyWebSocket Handshake Key
CorpoN/A
Esempio

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

Host: localhost:8082

Upgrade: websocket

Connessione: Upgrade

Sec-WebSocket-Version: 13

Sec-WebSocket-Key: k3CyFjeNOBNzFZx4blx9kg==

Origin: ws://localhost:8082

Risposta

Elemento Valore
Codice di stato

Autenticazione riuscita, il visualizzatore invierà 101 (Protocollo di commutazione).

Codice Nota

101 Switching Protocols

Tentativo di stabilire la connessione riuscito.

429 Too Many Requests

Tentativo di stabilire la connessione non riuscito perché è stato raggiunto il numero massimo di sessioni.

400 Bad Request

Tentativo di stabilire la connessione non riuscito. La ragione è diversa da quella precedente.
Intestazione
Intestazione Valore
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-AcceptWebSocket Handshake
CorpoN/A
Esempio

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connessione: Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

Autorizzazione

Quando si utilizza la gestione utenti, inviare prima il comando di autorizzazione.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
Authorizationstringa"Bearer <token>"Usare la risposta del token per accedere in API.
Esempio

{

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

}

Aggiunta delle variabili di monitoraggio

Aggiungere le variabili da sottoscrivere. Se il numero delle variabili di monitoraggio supera il numero massimo, viene troncato. Per le variabili aggiunte, la notifica viene inviata immediatamente come valore iniziale.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"add_monitor"Aggiunta variabili da monitorare.
variablearray di stringhe - Array di nomi di variabili.
Esempio

{

"command": "add_monitor",

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

}

Rimozione variabili da monitorare.

Rimozione variabili per annullare la sottoscrizione.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"remove_monitor"Rimozione variabili da monitorare.
variablearray di stringhe - Array di nomi di variabili.
Esempio

{

"command": " remove _monitor",

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

}

Sostituzione variabili da monitorare.

Per sostituire tutte le variabili sottoscritte. Se il numero delle variabili di monitoraggio supera il numero massimo, viene troncato.

Per le variabili aggiunte, la notifica viene inviata immediatamente come valore iniziale.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"replace_monitor"Sostituire le variabili da monitorare.
variablearray di stringhe - Array di nomi di variabili.
Esempio

{

"command": " replace_monitor",

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

}

cancellazione variabili da monitorare.

Per rimuovere tutte le variabili sottoscritte.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"clear_monitor"Cancellare le variabili da monitorare.
Esempio

{

"command": " clear_monitor",

}

Sottoscrizione di allarmi ed errori di sistema

Sottoscrivere allarmi ed errori di sistema

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"subscribe"Sottoscrivere
alarmarray di stringhe -

Array dei nomi di allarmi da sottoscrivere.

Allarme: “alarm”

Errore di sistema: “error”

Esempio

{

"command": " subscribe ",

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

}

Cancellazione sottoscrizione di allarmi ed errori di sistema

Cancellare sottoscrizione di allarmi ed errori di sistema.

Elemento Valore
Mittente Client
Dati
Campo Tipo di dati Valore Nota
commandstringa"unsubscribe"Cancellare la sottoscrizione
alarmarray di stringhe -

Array dei nomi di allarmi di cui cancellare la sottoscrivere.

Allarme: “alarm”

Errore di sistema: “error”

Esempio

{

"command": " unsubscribe",

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

}

Sottoscrizione variabili

Per ricevere le notifiche dal visualizzatore quando il valore e/o la qualità delle variabili sottoscritte è stata modificata.

Elemento Valore
Mittente Server (visualizzatore)
Dati
Campo Tipo di dati Valore Nota
updatedstringa"variable"Variabile
dataarray di oggetti -

Array di informazioni delle variabili.

Informazioni delle variabili.

Campo Tipo di dati Valore Nota
namestringa Nome variabile Nome variabile impostato nel software di modifica delle schermate.
qualitystringa Qualità

"good": Buono

"invalid": Il valore non è valido

"bad": Errore

"unknown": Mai letto

Valuebooleano, numero, stringa Valore della variabile.

Questo campo è disponibile solo se la qualità è ”good”.

Il tipo Dati JSON dipende dal tipo di dati della variabile.

Esempio

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

La tabella seguente elenca i tipi di dati supportati tra il software di modifica delle schermate e WebSocket:

Tipo di dati WebSocket (tipo JSON) Range dei valori di WebSocket
BOOL booleano vero/falso
BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME numero Range del valore del valore a 64 bit in virgola mobile.

*Precisione interna a 52 bit per LWORD, LINT e ULINT.

*Valore nullo se il valore REAL o LREAL è NaN o INFINITY.

STRING, WSTRING stringa Caratteri supportati da UTF-8
DATE, TIME_OF_DAY, DATE_AND_TIME stringa Formato ISO 8601

Nota: I valori LWORD sul visualizzatore si mostrano in virgola mobile.

Sottoscrizione allarmi

Ricevere le notifiche dal visualizzatore quando nel visualizzatore gli allarmi si verificano/sono riconosciuti/sono ripristinati/ non sono riconosciuti.

Elemento Valore
Mittente Server (visualizzatore)
Dati
Campo Tipo di dati Valore Nota
updatedstringa"alarm"Allarme
dataarray di oggetti -

Array di informazioni degli allarmi.

Informazioni degli allarmi:

Campo Tipo di dati Valore Nota
messagestringa Messaggio Messaggio impostato nel software di modifica delle schermate.
parameternumero Parametro Parametro impostato nel software di modifica delle schermate.
statusstringa Stato

"Active": Si è verificato

"Ack": Riconosciuto

"Return": Ripristinato

"UnACK":: Non riconosciuto

timestringa Ora Formato ISO-8601
typestringa Tipo“HiHi”/”Hi”/”Lo”/”LoLo”
variablestringa Nome variabile Nome variabile collegato a un allarme.
groupnamestringa Nome gruppo Nome gruppo di un allarme.
severitynumero Gravità Gravità impostata nel software di modifica delle schermate.
valuebooleano, numero Valore della variabile Il tipo Dati JSON dipende dal tipo di dati della variabile.
Esempio

{

"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

}

]

}

Sottoscrizione errori di sistema

Ricevere le notifiche dal visualizzatore quando si verificano/si riconoscono/si ripristinano errori di sistema nel visualizzatore.

Elemento Valore
Mittente Server (visualizzatore)
Dati
Campo Tipo di dati Valore Nota

updated

stringa

"error"

Errore di sistema

data

array di oggetti -

Array di informazioni errori di sistema.

Informazioni errori di sistema:

Campo Tipo di dati Valore Nota

message

stringa Messaggio Messaggio errori di sistema.

status

stringa Stato

"Active": Si è verificato

"Ack": Riconosciuto

"Return": Ripristinato

time

stringa Ora Formato ISO-8601

equipment

stringa Nome apparecchiatura Il nome del dispositivo esterno da cui si è generato l’errore viene impostato nel nome apparecchiatura.
Esempio

{

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

}

]

}