À propos de WebSocket

À l'aide de WebSocket, vous pouvez recevoir des notifications de variables, d'alarmes et d'erreurs système Pour recevoir des notifications, il est nécessaire d'établir une session et de les abonner.

Les protocoles WebSocket (Version 13) peuvent être utilisés et le nombre maximum de sessions WebSocket est de 5.

Si vous utilisez la sécurité, envoyez une commande d'autorisation. Si aucune autorisation n'est effectuée ou que le niveau de sécurité n'est pas suffisant, vous ne recevrez pas une notification de l'afficheur.

S'il n'y a aucune communication du client, l'afficheur enverra un ping sur WebSocket toutes les 10 secondes. S'il n'y a aucune réponse après 5 pings (c'est-à-dire, il n'y a aucune communication à partir du client y compris Ping pendant 60 secondes), la session sera fermée sur l'afficheur.

Variables

Vous pouvez recevoir des notifications lorsque la valeur et/ou la qualité des variables créées dans le logiciel d'édition d'écrans sont modifiées.

Pour recevoir des notifications, vous devez abonner les variables à surveiller. Si les variables abonnées sont des variables externes, l'afficheur commence à lire les valeurs à partir d'un équipement externe.

Remarque :

  • les variables du type de données d'utilisateur (structure, tableau) ne sont pas prises en charge.

  • Le nombre maximum de variables est 100 par session.

Alarmes/Erreurs système

Lorsque des alarmes ou des erreurs système se produisent, sont acquittées ou sont récupérées sur l'afficheur, vous pouvez recevoir des notifications Pour recevoir des notifications, vous devez abonner les variables.

Commandes

Voici les commandes :

Remarque : l'exemple de code est écrit en Java.

Établir une session

Pour établir une session pour WebSocket.

Demande

Élément Valeur
MéthodesGET
URL<Base URL>/ws Base URL
ParamètresN/A
En-tête
En-tête Valeur
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-Version13
Sec-WebSocket-KeyWebSocket Handshake Key
CorpsN/A
Exemple

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

Host: localhost:8082

Upgrade: websocket

Connexion : Upgrade

Sec-WebSocket-Version: 13

Sec-WebSocket-Key: k3CyFjeNOBNzFZx4blx9kg==

Origin: ws://localhost:8082

Réponse

Élément Valeur
Code d'état

Établissement de la session réussi, l'afficheur enverra 101 (changement de protocole).

Code Notes

101 Switching Protocols

Établissement de la session réussi.

429 Too Many Requests

Échec de l'établissement de la session car le nombre maximum de sessions est atteint.

400 Bad Request

Échec de l'établissement de la session. La raison est une autre que celle ci-dessus.
En-tête
En-tête Valeur
Upgradewebsocket
ConnectionUpgrade
Sec-WebSocket-AcceptWebSocket Handshake
CorpsN/A
Exemple

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connexion : Upgrade

Sec-WebSocket-Accept: WLjfOfV0ERDw6E/NUUaBpqXnHFc=  

Autorisation

Si vous utilisez la gestion des utilisateurs, envoyez d'abord la commande d'autorisation.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
Authorizationchaîne"Bearer <token>"Utilisez la réponse de jeton dans l'API de connexion.
Exemple

{

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

}

Ajout de variables de surveillance

Ajouter des variables à abonner. Si le nombre de variables de surveillance dépasse le nombre maximum, elles sont tronquées. Pour les variables ajoutées, la notification sera envoyée immédiatement comme valeur initiale.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"add_monitor"Ajouter des variables de surveillance.
variabletableau de chaîne - Tableau du nom de variable.
Exemple

{

"command": "add_monitor",

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

}

Suppression de variables de surveillance

Supprimer les variables à désabonner.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"remove_monitor"Supprimer des variables de surveillance.
variabletableau de chaîne - Tableau du nom de variable.
Exemple

{

"command": " remove _monitor",

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

}

Remplacement des variables de surveillance

Pour remplacer toutes les variables abonnées. Si le nombre de variables de surveillance dépasse le nombre maximum, elles sont tronquées.

Pour les variables ajoutées, la notification sera envoyée immédiatement comme valeur initiale.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"replace_monitor"Remplacer les variables de surveillance.
variabletableau de chaîne - Tableau du nom de variable.
Exemple

{

"command": " replace_monitor",

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

}

Effacement des variables de surveillance

Pour supprimer toutes les variables abonnées.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"clear_monitor"Effacer les variables de surveillance.
Exemple

{

"command": " clear_monitor",

}

Abonnement des alarmes et des erreurs système

Pour abonner des alarmes et des erreurs système.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"subscribe"Abonner
alarmtableau de chaîne -

Tableau de noms d'alarme à abonner.

Alarme : “alarm”

Erreur système : “error”

Exemple

{

"command": " subscribe ",

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

}

Désabonnement des alarmes et des erreurs système

Pour désabonner des alarmes et des erreurs système.

Élément Valeur
Expéditeur Client
Données
Champ Type de données Valeur Notes
commandchaîne"unsubscribe"Désabonner
alarmtableau de chaîne -

Tableau de noms d'alarme à désabonner.

Alarme : “alarm”

Erreur système : “error”

Exemple

{

"command": " unsubscribe",

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

}

Abonnement des variables

Pour recevoir une notification de l'afficheur lorsque la valeur et/ou la qualité de la variable abonnée est modifiée.

Élément Valeur
Expéditeur Serveur (Afficheur)
Données
Champ Type de données Valeur Notes
updatedchaîne"variable"Variable
datatableau de l'objet -

Tableau des informations sur les variables.

Informations sur les variables :

Champ Type de données Valeur Notes
namechaîne Nom de la variable Le nom de variable défini dans le logiciel d'édition d'écrans.
qualitychaîne Qualité

“good”: Bon

"invalid": La valeur n'est pas valide

“bad”: Erreur

“unknown”: Jamais lu

Valueboolean, number, string La valeur de la variable.

Ce champ est disponible uniquement lorsque la qualité est ”good”.

Le type de données de JSON dépend du type de données de la variable.

Exemple

{

"updated":”variable”,

"data": [

 {

  “name”: “Variable1”,

  “quality”: “good”,

  “value”: 100

},

{

   “name”: “Variable2”,

  “quality”: “bad”

},

{

   “name”: “Variable3”,

  “quality”: “unknown”

}

]

}

Le tableau suivant répertorie les types de données pris en charge entre le logiciel d'édition d'écran et WebSocket :

Type de données WebSocket (Type JSON) Plage de valeurs de WebSocket
BOOL boolean true/false
BYTE, SINT, USINT, WORD, INT, UINT, DWORD, DINT, UDINT, LWORD, LINT, ULINT, REAL, LREAL, TIME numéro Plage de valeurs d'une valeur de point flottant 64 bits.

*Exact à l'intérieur de 52 bits pour LWORD, LINT et ULINT.

*Nul lorsqu'une valeur REAL ou LREAL est NaN ou INFINITY.

STRING, WSTRING chaîne Caractères pris en charge par UTF-8
DATE, TIME_OF_DAY, DATE_AND_TIME chaîne Format ISO 8601

Remarque : les valeurs LWORD sont affichés comme valeurs flottantes sur l'afficheur.

Abonnement des alarmes

Pour recevoir une notification de l'afficheur lorsque des alarmes se produisent, sont acquittées/non acquittées ou sont récupérées sur l'afficheur.

Élément Valeur
Expéditeur Serveur (Afficheur)
Données
Champ Type de données Valeur Notes
updatedchaîne"alarm"Alarme
datatableau de l'objet -

Tableau des informations sur les alarmes.

Informations sur les alarmes :

Champ Type de données Valeur Notes
messagechaîne Message Message défini dans le logiciel d'édition d'écrans.
parameternuméro Paramètre Paramètre défini dans le logiciel d'édition d'écrans.
statuschaîne État

“Active” : Survenu

“Ack” : Acquitté

“Return” : Récupéré

“UnACK”: Non acquitté

timechaîne Heure Format ISO-8601
typechaîne Type“HiHi”/”Hi”/”Lo”/”LoLo”
variablechaîne Nom de la variable Nom de la variable reliée à l'alarme.
groupnamechaîne Nom du groupe Nom du groupe de l'alarme.
severitynuméro Gravité Gravité définie dans le logiciel d'édition d'écrans.
valueboolean, number La valeur de la variable Le type de données de JSON dépend du type de données de la variable.
Exemple

{

"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

}

]

}

Abonnement des erreurs système

Pour recevoir une notification de l'afficheur lorsque des erreurs système se produisent, sont acquittées ou sont récupérées sur l'afficheur.

Élément Valeur
Expéditeur Serveur (Afficheur)
Données
Champ Type de données Valeur Notes

updated

chaîne

"error"

Erreur système

data

tableau de l'objet -

Tableau des informations sur les erreurs système.

Informations sur les erreurs système :

Champ Type de données Valeur Notes

message

chaîne Message Message d'erreur système.

status

chaîne État

“Active” : Survenu

“Ack” : Acquitté

“Return” : Récupéré

time

chaîne Heure Format ISO-8601

equipment

chaîne Nom de l'équipement Le nom de l'équipement externe à partir duquel l'erreur est générée est défini dans le nom de l'équipement.
Exemple

{

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

}

]

}