La connexion à un broker MQTT
1. Introduction
Dans tous les logiciels modernes, il est possible de publier des données pouvant être utilisées par d'autres applications. Dans QuickView, nous avons opter pour l'utilisation de MQTT. MQTT est une manière de publier des données selon un protocole standard (voir MQTT sur wikipedia ).
2. Configuration
La configuration de la connexion se fait dans VKServer.ini. Une nouvelle section [MQTT] doit être créée. Il faut auparavant avoir obtenu la licence pour permettre cette connexion. La licence correspond à AMConnector car elle est aussi utilisée par VK A&M pour importer des données depuis QuickView.

Exemple de configuration
3. La section [ MQTT ]
Les mots clef suivants peuvent être définis:
Mot clef
Type
Valeur par défaut
Description
Enabled
Boolean
0
Doit être activé pour que la connexion soit créée.
Host
String
vide
Adresse du broker MQTT
Port
Integer
1883
Numéro du port TCP
SSLEnable
Boolean
0
Vrai si la connexion utilise Open SSL (TLSv1.1) pour une connexion sécurisée. Pour pouvoir travailler en mode SSL sécurisé, il faut placer les dll d'OpenSSL dans le même répertoire que QuickView (version 32bits, version testée: 1.0.2.18)
ClientID
String
GUID
Nom du client MQTT
KeepAlive
Integer
60
Temps en secondes pour garder la connexion en vie lorsqu'il n'y a pas de communication
RefreshRate
Integer
30
Temps en secondes pour l'exécution d'un rafraîchissement des variables
Retain
Boolean
0
Vrai si le contenu des variables doit être préservé sur le broker après la déconnexion. Si ce flag est activé, alors des messages seront renvoyés à tous les clients lors de leur connexion au broker.
GroupName
String
MachineName
Nom de publication du groupe. En général correspond au code de la machine par exemple: A34002
ForceIOType
Boolean
1
Vrai si le type défini dans les I/O doit être respecté. Si faux alors le système utilise le type des registres des databanks.
Hierarchical
Boolean
0
Vrai pour forcer une hiérarchie dans la publication des variables par exemple: VKQV\23\Température actuelle. Si faux alors le système n'utilise pas le nom de la variable mais son numéro
exemple: VKQV\924
PublishMachine
Boolean
0
Vrai pour forcer la publication de la machine et des tableaux correspondants comme les redresseurs, les pompes doseuses.
AutoRestart
Boolean
1
Vrai pour forcer la reconnexion et le démarrage de la publication après une perte de connexion.
ValueStyle
Integer
1
Format des valeurs des variables:
1:
{"V":12.4,"U":"°C","T":"Double","TS":"2019-04-06T13:46:15.145"}
V=Value, U=Units, T=Type, TS=TimeStamp
DecimalCount
Integer
2
Nombre de décimales affichées dans les valeurs réelles
UserName
String
vide
Nom de l'utilisateur lorsqu'un login est demandé par le broker
Password
String
vide
Mot de passe lorsqu'un login est demandé par le broker
Language
Integer
0
Langue utilisée pour les textes des alarmes et messages
PublishAlarm
Boolean
0
Vrai pour forcer la publication des alarmes et des messages
UsePosNumber
Boolean
0
Vrai pour utiliser la valeur "display" de la position à la place de son index dans le nom des variables publiées.
PublishDailyData
Boolean
0
Vrai pour publier les données de fonctionnement journalier
4. Définition des variables dans VK QuickView
Les variables sont définies dans les IO de QuickView. Le flag 'Q' doit être ajouté à toutes les variables devant être publiées vers MQTT. Ceci se fait soit manuellement dans le fichier IO.ini soit en utilisant le navigateur d'équipement de VKClient10.

Exemple de définition dans IO.ini
5. La publication des variables
Le système publiera les I/O qui sont définies comme pouvant être publiées dans la définition ci-dessus. Il publiera également les valeurs globales de la machine comme par exemple la définition machine ou les redresseurs à condition que le mot clef "PublishMachine" soit activé.
Les variables sont publiées sous forme d'un enregistrement au format JSON. Exemple:
{"V":12.4,"U":"°C","T":"Double","TS":"2019-04-06T13:46:15.145"}
Le format du message est composé de 4 champs soit: V: valeur U: unité T: type de valeur TS: Timestamp. Il est possible que tous les champs ne soient pas présent dans le message. Par exemple, si l'unité n'est pas spécifiée dans la définition des I/O alors ce champ ne sera pas transmit.
Mis à jour
Ce contenu vous a-t-il été utile ?