Aller au contenu

DEVIOMQTTServer

L'interface applicative DEVIOMQTTServer permet de configurer une passerelle MQTT pour les échanges entre équipements Dev I/O et un broker MQTT.

Elle est notemment utile lorsqu'un serveur Dev I/O à besoin de partager tout ou une partie de ces informations vers un ou plusieurs serveur Dev I/O. Dans ce cas de figure, les Dev I/O distants auront besoin de l'interface d'échange DeIOIEJSONMqtt

Paramètres et configuration

Activation de l'interface applicative

Comment déclarer l'interface applicative ?
  1. Ouvrir votre projet avec Dev I/O Studio
  2. Réalisez l'import base binaire si nécessaire
  3. Basculer le projet en lecture/écriture
  4. Cliquez-droit sur Serveur, puis Propriétés...

Assurez-vous que le service Dev I/O soit arrêté.

DEVIOIAMQTT_serveur

Dans l'onglet MQTT, cochez Activation du serveur MQTT ou renseignez -MQTT dans les arguments additionnels

[depreciated] Paramètres avancés
Paramètre Description
Client ID Client ID
Port MQTT Port TCP utilisé pour la connexion
Adresse MQTT IP ou hostname du broker MQTT
WebSocket Active la communication via WS

Priviligiez l'utilisation du fichier DevIOMQTTServer.xml

DevIOMqttServer.xml

La configuration du module DevIOMqttServer est effectuée à l’aide d’un fichier XML nommé DevIOMqttServer.xml. Ce dernier doit être disposé dans le répertoire des fichiers exécutables de DevI/O (../DevIO/Bin) pour être pris en compte.

A titre d'exemple, un fichier modèle est à disposition Model_DevIOMqttServer.xml dans ce même dossier.

Paramètres de connexion (<DevIOMqttServer>)

Cette balise XML permets de configurer les paramètres de connexion au broker MQTT.

<DevIOMqttServer server="DevIOMQTTServer" user="" password="" endpoint="" certStore="" caCertificate="" clientCertificate="" clientPrivateKey=""
                 clientPrivateKeyPassword="" cleanSession="false" minInterval="60" maxInterval="60" ack="false" keepaliveInterval="30" connectTimeout="30" logFlush="false"
                 hostname="localhost" port="1883" clientId="client_id" websockets="false">
Attribut Description
server Nom relatif du serveur Dev I/O.
user Nom d'utilisateur pour l’authentification (laisser vide si non requis).
password Mot de passe pour l’authentification (laisser vide si non requis).
endpoint URI de connexion complet vers le broker MQTT (utilisé notamment pour WebSockets ou configurations avancées).
certStore Chemin d'accès au répertoire contenant les certificats (vide si TLS non requis).
caCertificate Nom du certificat de l'autorité de certification (sans extension, format .pem), situé dans certStore.
clientCertificate Nom du certificat client Dev I/O (sans extension, format .pem) dans certStore.
clientPrivateKey Nom du fichier de la clé privée associée (sans extension, format .pem) dans certStore.
clientPrivateKeyPassword Mot de passe associé à la clé privée (crypté via DevIOPasswordEncryption).
cleanSession Si false, les abonnements et messages en attente sont conservés entre les sessions (Par défaut : false).
minInterval Intervalle minimal (en secondes) entre deux tentatives de reconnexion (Par défaut : 60).
maxInterval Intervalle maximal (en secondes) entre deux tentatives de reconnexion (Par défaut : 60).
ack (Par défaut : false)
keepaliveInterval Intervalle de keep-alive MQTT (en secondes)(Par défaut : 30).
connectTimeout Durée maximale (en secondes) pour établir une connexion.
logFlush Si true, force l’écriture immédiate des logs pour consultation en temps réel (Par défaut : false).
hostname Adresse du broker MQTT (ex. localhost, mqtt.example.com).
port Port utilisé pour la connexion (par défaut : 1883 ou 8883 en TLS).
clientId Identifiant unique du client MQTT.
websockets Si true, utilise le protocole WebSocket pour la connexion.

Modèles de publication (<Model>)

Le fichier XML permet de configurer plusieurs modèles de messages MQTT. Chaque modèle est lié à un type d’événement (data, registerEqt, unregisterEqt, connected, closing).

ModelName Description
data Modèle de publication sur les données de mesure
registerEqt Modèle de publication lors d'un ajout d’équipement dans Dev I/O
unregisterEqt Modèle de publication lors d'une suppression d’équipement dans Dev I/O
connected Modèle de publication lors de la connexion du serveur Dev I/O au broker MQTT
closing Modèle de publication lors d'une déconnexion volontaire du serveur Dev I/O au broker MQTT
data
Model name = data
<Model name = "data" filterKey="-CLIENTID" filterValue="111" publishTopic ="jsonMQTT/read/$EquipmentName" qos="1" ignoreOnError="true">
    <PublishMessage>{ "eq":"$EquipmentName", "data":[{ "name":"$DataName", "value":"$Value", "time" :"$Timestamp" }] }</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
    <Ignore equipmentName="MODEL" />
</Model>
registerEqt
Model name = registerEqt
<Model name = "registerEqt" publishTopic ="jsonMQTT/registerEqt" qos="1">
    <PublishMessage>{ "eq":"$EquipmentName" }</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
    <Ignore equipmentName="MODEL" />
</Model>
unregisterEqt
Model name = unregisterEqt
<Model name = "unregisterEqt" publishTopic ="jsonMQTT/unregisterEqt" qos="1">
    <PublishMessage>{ "eq":"$EquipmentName" }</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
    <Ignore equipmentName="MODEL" />
</Model>
connected
Model name = connected
<Model name="connected" publishTopic="jsonMQTT/connected" qos="0" PoD="10">
    <PublishMessage>{"timestamp":"$NowISO","server":"$ServerName", "connected":"true"}</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
</Model>
closing
Model name = closing
<Model name="closing" publishTopic="jsonMQTT/connected" qos="0" PoD="10">
    <PublishMessage>{"timestamp":"$NowISO","server":"$ServerName", "connected":"false"}</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
</Model>

LWT (<LastWill>)

Le Last Will and Testament (LWT) est le message prédéfini que le broker MQTT publiera automatiquement à un topic spécifique, si le client MQTT Dev I/O se déconnecte brutalement (sans envoyer un message de déconnexion propre).

  • Perte de communication

  • Arrêt inopiné du service

<LastWill topic="jsonMQTT/connected" qos="1">{"connected":"false","server":"$ServerName","lastWill":"true"}</LastWill>

WildCard

Variable Description Type Utilisable dans publishTopic Utilisable dans publishMessage
$Year Année Int
$Month Mois Int
$Day Jour Int
$Hours Heure Int
$Minutes Minutes Int
$Seconds Secondes Int
$Millisecs Millisecondes Int
$Timestamp Timestamp (ms depuis 01/01/1970 UTC) Int
$Date Format de la date Str
$Now Timestamp actuel (secondes) Int
$NowISO Horodatage ISO 8601 Str
$Value Valeur de la donnée Selon donnée
$State Statut de la donnée Int
$ObjectType Type de la donnée Int
$Type Type d’accès à la donnée Int
$EquipmentName Nom de l’équipement Str
$EquipmentParameters Paramètres de l’équipement Str
$EquipmentAddress Adresse de l’équipement Str
$DataName Nom de la donnée Str
$DataAddress Adresse de la donnée Str
$BlocName Nom du bloc Str
$ServerName Nom du serveur Str
$ServerVersion Version du serveur Str
$IsHisto Indique si la donnée est historique Bool
$RecordType Type d’enregistrement de la donnée Int
$HistoValue Valeur lue depuis les historiques Bool
$Alarm Donnée marquée comme alarme Bool
$Internal Donnée interne DevIO (ex: _CNX) Bool
$Family Numéro de famille Int
$AlarmFamily Indique si la donnée appartient à une famille d’alarme Bool
$ObjectTypeName Libellé du type de donnée Str