DevIOICMqtt
Introduction
DevIOICMqtt est une Interface Canal (IC) qui fournit des services de communication basés sur le protocole MQTT (Message Queuing Telemetry Transport) pour les interfaces d'échange DevIO. Cette interface permet la publication et l'abonnement à des topics MQTT via un broker, supportant les connexions sécurisées SSL/TLS et WebSocket.
L'interface canal MQTT agit comme un pont entre les interfaces d'échange DevIO et les systèmes de messagerie MQTT, facilitant l'intégration IoT et les communications asynchrones.
Architecture et fonctionnement
Composants principaux
- Interface : Point d'entrée principal avec gestion des paramètres de configuration
- MqttClient : Client MQTT asynchrone avec gestion des connexions et reconnexions
- EventManager : Gestionnaire d'événements asynchrones pour les opérations MQTT
- Topics : Gestionnaire des topics MQTT (publication et abonnement)
- MqttCallback : Gestionnaire des callbacks MQTT (connexion, messages, livraison)
Protocoles supportés
L'interface supporte plusieurs types d'URI pour la connexion au broker :
| Protocole | URI | Description |
|---|---|---|
| TCP | tcp:// |
Connexion MQTT standard non sécurisée |
| SSL/TLS | ssl:// |
Connexion MQTT sécurisée via SSL/TLS |
| WebSocket | ws:// |
Connexion MQTT via WebSocket |
| WebSocket Secure | wss:// |
Connexion MQTT sécurisée via WebSocket SSL |
Qualité de Service (QoS)
L'interface supporte les trois niveaux QoS MQTT :
| QoS | Valeur | Description |
|---|---|---|
| QoS 0 | 0 | Le message est distribué une fois tout au plus (Fire and Forget) |
| QoS 1 | 1 | Le message est toujours distribué au moins une fois (At Least Once) |
| QoS 2 | 2 | Le message est toujours distribué une seule fois (Exactly Once) |
Paramètres de configuration
Paramètres obligatoires
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-SERVER |
Nom du serveur DevIO | Obligatoire |
-NAME |
Nom de l'interface canal | Obligatoire |
-HANDLE |
Handle de l'interface | Obligatoire |
-BROKER |
Adresse du broker MQTT (URI complète) | Obligatoire |
Paramètres de connexion
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-ID |
Identifiant unique du client MQTT | Généré automatiquement |
-USER |
Nom d'utilisateur pour l'authentification | Non défini |
-PWD |
Mot de passe pour l'authentification | Non défini |
-QOS |
Qualité de service MQTT (0, 1, 2) | Qos0 |
-KAI |
Intervalle keep-alive en secondes | 0 (désactivé) |
Paramètres de session
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-CLNS |
Session propre (Clean Session) | Non activé |
-ACK |
Acquittement automatique des messages | Non activé |
-WS |
Utiliser WebSocket | Non activé |
Paramètres de sécurité SSL/TLS
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-PEM |
Fichier PEM contenant les certificats CA de confiance | Non défini |
-CPEM |
Fichier PEM contenant le certificat client et la clé privée | Non défini |
Paramètres de reconnexion
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-MININT |
Intervalle minimum de reconnexion (secondes) | 60 |
-MAXINT |
Intervalle maximum de reconnexion (secondes) | 60 |
Paramètres de debug
| Paramètre | Description | Valeur par défaut |
|---|---|---|
-LOG |
Activation de la journalisation | Non activé |
-TRACE |
Activation des traces MQTT détaillées | Non activé |
Paramètres de topics
| Paramètre | Description |
|---|---|
-MQ |
Liste des topics pour abonnement (subscriber) |
Configuration dans DevIO Studio
1. Déclaration de l'interface canal
- Ouvrir le projet avec DevIO Studio
- Cliquer-droit sur Canaux → Nouveau canal
- Sélectionner MQTT comme type d'interface canal
- Configurer les paramètres selon les besoins
2. Configuration du broker
Broker TCP standard
-BROKER tcp://broker.example.com:1883
Broker SSL sécurisé
-BROKER ssl://broker.example.com:8883 -PEM ca-cert.pem -CPEM client-cert.pem
Broker WebSocket
-BROKER ws://broker.example.com:8080 -WS
Broker WebSocket sécurisé
-BROKER wss://broker.example.com:8081 -WS -PEM ca-cert.pem
3. Exemples de configuration
Configuration MQTT simple
-SERVER MonServeur -NAME ICMqtt_Basic -HANDLE 1 -BROKER tcp://localhost:1883 -ID "DevIO_Client_001"
Configuration avec authentification
-SERVER MonServeur -NAME ICMqtt_Auth -HANDLE 2 -BROKER tcp://broker.com:1883 -USER "devio_user" -PWD "password123" -QOS 1
Configuration SSL avec certificats
-SERVER MonServeur -NAME ICMqtt_SSL -HANDLE 3 -BROKER ssl://secure-broker.com:8883 -PEM "/path/ca.pem" -CPEM "/path/client.pem" -QOS 2
Configuration avec reconnexion automatique
-SERVER MonServeur -NAME ICMqtt_Reconnect -HANDLE 4 -BROKER tcp://broker.com:1883 -MININT 30 -MAXINT 300 -KAI 60
Configuration pour topics spécifiques
-SERVER MonServeur -NAME ICMqtt_Topics -HANDLE 5 -BROKER tcp://broker.com:1883 -MQ "sensors/+/data,alarms/#" -QOS 1
Utilisation et supervision
Publication de messages
L'interface canal publie automatiquement les données provenant des interfaces d'échange vers les topics MQTT configurés.
Abonnement aux topics
- Wildcards supportés :
+: Remplace un niveau de topic (ex:sensors/+/temperature)#: Remplace tous les niveaux suivants (ex:alarms/#)
Surveillance des connexions
L'interface fournit des informations de diagnostic via : - État de connexion : Monitoring de la connexion au broker - Statistiques de messages : Compteurs de publication/réception - Logs de reconnexion : Traces des tentatives de reconnexion
Gestion des erreurs
- Reconnexion automatique : Retry avec backoff exponentiel
- Gestion QoS : Garanties de livraison selon le niveau choisi
- Timeout de connexion : Détection des connexions perdues
Sécurité SSL/TLS
Configuration des certificats
- Certificat CA : Utiliser
-PEM <fichier>pour valider le broker - Certificat client : Utiliser
-CPEM <fichier>pour l'authentification mutuelle - Formats supportés : Fichiers PEM avec certificats et clés privées
Authentification
- Username/Password :
-USERet-PWD - Certificats clients : Authentification mutuelle SSL/TLS
- Combinaison : Possibilité d'utiliser les deux méthodes
Optimisation des performances
Qualité de Service
- QoS 0 : Performance maximale, pas de garantie de livraison
- QoS 1 : Équilibre performance/fiabilité
- QoS 2 : Fiabilité maximale, performance réduite
Reconnexion intelligente
-MININT 10 # Démarrer avec 10 secondes
-MAXINT 600 # Plafonner à 10 minutes
Keep-Alive optimisé
-KAI 30 # Ping toutes les 30 secondes
Session persistante
-CLNS # Désactiver pour sessions persistantes
Intégration IoT
Patterns de topics recommandés
Données de capteurs
sensors/{device_id}/{sensor_type}/data
sensors/{device_id}/{sensor_type}/status
Commandes d'équipements
commands/{device_id}/set/{parameter}
commands/{device_id}/get/{parameter}
Alarmes et événements
alarms/{device_id}/{alarm_type}
events/{device_id}/{event_type}
Formats de données
- JSON : Format recommandé pour l'interopérabilité
- Binaire : Pour l'optimisation de bande passante
- Texte : Pour le debug et la compatibilité
FAQ et dépannage
Q : Comment configurer un broker mosquitto local ?
R : Utiliser -BROKER tcp://localhost:1883 avec mosquitto installé localement.
Q : Problème de connexion SSL ?
R : Vérifier les certificats PEM et utiliser -TRACE pour diagnostiquer.
Q : Messages perdus ?
R : Augmenter le QoS avec -QOS 1 ou -QOS 2 selon les besoins.
Q : Reconnexions fréquentes ?
R : Ajuster -KAI et vérifier la stabilité réseau.
Q : Comment utiliser des wildcards dans les topics ?
R : Utiliser + pour un niveau et # pour tous les niveaux suivants dans -MQ.
Annexes et références utiles
Brokers MQTT populaires
- Eclipse Mosquitto : Broker open-source léger
- AWS IoT Core : Service cloud AWS
- Azure IoT Hub : Service cloud Microsoft
- Google Cloud IoT Core : Service cloud Google
- HiveMQ : Broker commercial haute performance
Outils de test
- MQTT.fx : Client graphique pour tests
- mosquitto_pub/sub : Outils en ligne de commande
- MQTT Explorer : Interface graphique moderne
Standards et protocoles
- MQTT 3.1.1 : Version standard supportée
- MQTT 5.0 : Version avancée (vérifier compatibilité)
- WebSocket : RFC 6455 pour connexions web
Documentation technique
- Configuration des canaux DevIO
- Protocole MQTT - OASIS Standard
- Sécurité IoT avec DevIO
- Intégration cloud avec MQTT
Configuration XML des topics
Fichier Topics.xml
En complément des paramètres de ligne de commande, DevIOICMqtt peut utiliser un fichier XML pour définir la configuration avancée des topics MQTT. Ce fichier permet de structurer les abonnements et les modèles de topics de manière plus flexible.
Structure du fichier XML
<?xml version="1.0" encoding="utf-8"?>
<Topics>
<Model name="JSONMQTT">
<Topic callAddress="-MQ JSONMQTT" qos="Qos1">JSONMQTT/[l'adresse de l'équipement]</Topic>
<Topic callAddress="-MQ JSONMQTT" qos="Qos1">jsonMQTT/discover/response</Topic>
</Model>
<Device model="JSONMQTT"/>
</Topics>
Éléments XML
Balise <Topics>
Élément racine contenant toute la configuration des topics MQTT.
Balise <Model>
Définit un modèle de configuration réutilisable pour les topics.
| Attribut | Description | Exemple |
|---|---|---|
name |
Nom du modèle | "JSONMQTT" |
Balise <Topic>
Définit un topic MQTT individuel avec ses paramètres.
| Attribut | Description | Valeurs possibles |
|---|---|---|
callAddress |
Paramètre de ligne de commande associé | "-MQ JSONMQTT" |
qos |
Qualité de service MQTT | "Qos0", "Qos1", "Qos2" |
Contenu de la balise : Pattern du topic MQTT avec variables dynamiques.
Balise <Device>
Associe un équipement à un modèle de topics.
| Attribut | Description | Exemple |
|---|---|---|
model |
Référence au modèle à utiliser | "JSONMQTT" |
Variables dynamiques
Les topics peuvent contenir des variables qui seront remplacées dynamiquement :
| Variable | Description | Exemple |
|---|---|---|
[l'adresse de l'équipement] |
Adresse de l'équipement DevIO | Device001, Sensor_Temperature |
$EquipmentName |
Nom de l'équipement | Capteur_01 |
$DataName |
Nom de la donnée | Temperature, Pressure |
Exemples de configuration XML
Configuration basique pour IoT
<?xml version="1.0" encoding="utf-8"?>
<Topics>
<Model name="IoTSensors">
<Topic callAddress="-MQ SENSORS" qos="Qos1">sensors/[l'adresse de l'équipement]/data</Topic>
<Topic callAddress="-MQ SENSORS" qos="Qos1">sensors/[l'adresse de l'équipement]/status</Topic>
<Topic callAddress="-MQ COMMANDS" qos="Qos2">commands/[l'adresse de l'équipement]/set</Topic>
</Model>
<Device model="IoTSensors"/>
</Topics>
Configuration pour découverte automatique
<?xml version="1.0" encoding="utf-8"?>
<Topics>
<Model name="Discovery">
<Topic callAddress="-MQ DISCOVER" qos="Qos1">discovery/request</Topic>
<Topic callAddress="-MQ DISCOVER" qos="Qos1">discovery/response/[l'adresse de l'équipement]</Topic>
<Topic callAddress="-MQ HEARTBEAT" qos="Qos0">heartbeat/[l'adresse de l'équipement]</Topic>
</Model>
<Device model="Discovery"/>
</Topics>
Configuration multi-modèles
<?xml version="1.0" encoding="utf-8"?>
<Topics>
<Model name="DataCollection">
<Topic callAddress="-MQ DATA" qos="Qos1">data/[l'adresse de l'équipement]/values</Topic>
<Topic callAddress="-MQ ALARMS" qos="Qos2">alarms/[l'adresse de l'équipement]/critical</Topic>
</Model>
<Model name="Maintenance">
<Topic callAddress="-MQ MAINT" qos="Qos1">maintenance/[l'adresse de l'équipement]/status</Topic>
<Topic callAddress="-MQ MAINT" qos="Qos1">maintenance/[l'adresse de l'équipement]/schedule</Topic>
</Model>
<Device model="DataCollection"/>
<Device model="Maintenance"/>
</Topics>
Utilisation avec les paramètres de ligne de commande
Le fichier XML complète les paramètres de ligne de commande. Par exemple :
# Paramètres de base
-SERVER MonServeur -NAME ICMqtt_XML -HANDLE 1 -BROKER tcp://broker.com:1883
# Les topics sont définis dans le fichier XML référencé par -MQ
-MQ JSONMQTT -QOS 1
Emplacement du fichier
Le fichier XML doit être placé dans le répertoire de configuration de DevIO, généralement :
- Nom suggéré : Topics.xml ou DevIOICMqtt_Topics.xml
- Emplacement : Répertoire de configuration DevIO ou spécifié par paramètre
Avantages de la configuration XML
- Flexibilité : Définition de patterns complexes de topics
- Réutilisabilité : Modèles applicables à plusieurs équipements
- Maintenance : Modification centralisée des topics
- Variables dynamiques : Adaptation automatique aux équipements
- QoS granulaire : Qualité de service par topic
Validation et debug
Pour valider la configuration XML :
- Syntaxe XML : Vérifier la validité du XML
- Références : S'assurer que les modèles référencés existent
- Topics : Tester les patterns avec des équipements réels
- Logs : Utiliser
-LOG -TRACEpour diagnostiquer