Aller au contenu

Documentation DevIO – Interface d’Échanges JSONMQTTv2

1. Introduction

L’interface DevIOIEJSONMQTTv2 permet l’intégration d’équipements via le protocole MQTT en utilisant des messages JSON structurés. Elle est particulièrement utile pour chaîner deux serveurs DevIO, par exemple dans une architecture DMZ : un DevIO en zone sécurisée (LAN industriel) communique avec un DevIO en zone DMZ via MQTT, assurant ainsi une séparation réseau tout en permettant la supervision et le transfert de données entre les deux environnements.

Cas d’usage typiques : - Intégration de capteurs MQTT - Remontée de données vers des plateformes cloud - Commande à distance d’équipements via MQTT - Chaînage de deux serveurs DevIO (ex : architecture DMZ)


5. Utilisation et supervision

Exemple de message JSON standard (lecture)

{
  "equipmentName": "CAPTEUR_TEMP_1",
  "blocName": "Bloc1",
  "dataName": "Temperature",
  "dataValue": 22.5,
  "timestamp": "2024-06-20T14:30:00"
}

Exemple de message JSON attendu sur le topic d’écriture (jsonMQTT/write)

Important : Le format exact du message attendu sur le topic jsonMQTT/write dépend de la configuration du serveur DevIO (DevIOMQTTServer) et du modèle défini dans le fichier DevIOMQTTServer.xml. Référez-vous à la documentation du serveur MQTT DevIO pour connaître la structure précise à utiliser.

{
  "equipmentName": "CAPTEUR_TEMP_1",
  "blocName": "Bloc1",
  "data": [
    { "dataName": "Consigne_Temperature", "dataValue": 21.0 },
    { "dataName": "Autre_Donnee", "dataValue": 42 }
  ],
  "write": true
}

Explications des champs : - equipmentName : identifiant de l’équipement (personnalisable avec -E) - blocName : identifiant du bloc (personnalisable avec -B) - data : tableau d’objets à écrire, chaque objet contient : - dataName : nom de la donnée à écrire (personnalisable avec -D) - dataValue : valeur à écrire (personnalisable avec -V) - write : booléen (true/false), indique s’il s’agit d’une écriture effective

Les clés peuvent être renommées via les options -E, -B, -D, -V selon le format attendu par votre application ou broker MQTT.

Exemple de configuration d’un équipement

Nom : CAPTEUR_TEMP_1
Modèle : Model_JSONMQTT
Paramètres : -D dataName -V dataValue -T timestamp

Exemple de mapping concret entre serveur et client

Supposons que le fichier DevIOMqttServer.xml du serveur DevIO contienne le modèle suivant :

<Model name = "data" publishTopic ="jsonMQTT/read/$EquipmentName" qos="1">
    <PublishMessage>{ "eq":"$EquipmentName", "data":[{ "name":"$DataName", "value":"$Value", "time" :"$Timestamp" }] }</PublishMessage>
    <Date format = "ISO" msSeparator ="."/>
</Model>

Dans ce cas, le serveur attend des messages JSON de la forme :

{
  "eq": "CAPTEUR_TEMP_1",
  "data": [
    { "name": "Temperature", "value": 22.5, "time": "2024-06-20T14:30:00" }
  ]
}

Pour que l’IE JSONMQTTv2 produise ce format, il faut configurer les options suivantes côté client :

-E eq -D name -V value -T time

Résumé : - -E eq → la clé JSON pour l’équipement sera eq - -D name → la clé pour la donnée sera name - -V value → la clé pour la valeur sera value - -T time → la clé pour l’horodatage sera time

Important : Toujours vérifier la correspondance entre le modèle XML du serveur et la configuration des options de l’IE côté client pour garantir l’interopérabilité.