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 ?
- Ouvrir votre projet avec Dev I/O Studio
- Réalisez l'import base binaire si nécessaire
- Basculer le projet en lecture/écriture
- Cliquez-droit sur Serveur, puis Propriétés...
Assurez-vous que le service Dev I/O soit arrêté.

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" 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" publishTopic ="jsonMQTT/registerEqt" qos="1">
<PublishMessage>{ "eq":"$EquipmentName" }</PublishMessage>
<Date format = "ISO" msSeparator ="."/>
<Ignore equipmentName="MODEL" />
</Model>
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" publishTopic="jsonMQTT/connected" qos="0" PoD="10">
<PublishMessage>{"timestamp":"$NowISO","server":"$ServerName", "connected":"true"}</PublishMessage>
<Date format = "ISO" msSeparator ="."/>
</Model>
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 | ✅ | ✅ |