MQTT

Introduction à MQTT

MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger, idéal pour les appareils à ressources limitées et les réseaux de faible bande passante. MQTT fonctionne sur un modèle de publication/abonnement, où les clients peuvent publier des messages sur des “topics” spécifiques et s’abonner à ces topics pour recevoir des messages.

Qu’est-ce qu’un Broker MQTT ?

Un broker MQTT est un serveur qui reçoit les messages publiés par les clients et les distribue aux abonnés correspondants. Mosquitto est un exemple populaire de broker MQTT, qui peut être utilisé avec Calaos.

Activation de Mosquitto dans Calaos

Mosquitto est déjà intégré dans Calaos OS. Il suffit de l’activer pour l’utiliser.

Pour activer Mosquitto dans Calaos, utilisez la commande suivante :

systemctl enable --now mosquitto

Il est possible de configurer l’authentification et d’autres paramètres dans le fichier de configuration situé à /mnt/calaos/mosquitto/config/mosquitto.conf.

Pour appliquer les modifications de configuration, redémarrez Mosquitto avec :

systemctl restart mosquitto

Débogage

Pour déboguer ce qui se passe avec MQTT, vous pouvez utiliser un outil comme MQTTX. MQTTX permet de se connecter au broker MQTT et de surveiller les messages échangés, ce qui est utile pour tester et vérifier les configurations des topics et des payloads.

Utilisation de MQTT dans Calaos

Dans Calaos, MQTT peut être utilisé pour différents types d’entrées et sorties (IO). Chaque IO MQTT doit être configuré avec topic_sub, topic_pub et path.

Types d’IO MQTT supportés

  • Sonde de température
  • Interrupteur
  • Entrée analogique
  • Entrée texte
  • Lumière On/Off
  • Lumière à variation
  • Lumière RGB
  • Sortie analogique

Exemple de configuration d’une sonde de température MQTT

Pour configurer une sonde de température MQTT dans Calaos, supposons que la sonde envoie sa valeur au format JSON dans le topic mqtt_devices/temp_01 avec le payload JSON suivant : { "temp": 24.15, "humidity": 43, "battery": 85 }. Pour cette configuration, nous nous concentrerons sur la valeur de la température.

Paramètres de configuration :

Voici la configuration à adopter dans Calaos Installer lors de la création de l’IO MQTT Température:

NomValeur
nameSonde Température
topic_submqtt_devices/temp_01
pathtemp
host127.0.0.1
port1883
precision1

En configurant ces paramètres dans Calaos, vous pourrez recevoir et afficher les valeurs de température envoyées par la sonde de température MQTT.

Paramètres généraux pour les IO MQTT

NomTypeObligatoireDescription
topic_substringouiTopic sur lequel s’abonner.
topic_pubstringouiTopic sur lequel publier.
pathstringouiChemin où trouver la valeur dans le payload MQTT. Si le payload est JSON, les informations seront extraites en fonction du chemin.
userstringnonUtilisateur pour l’authentification avec le broker MQTT. Le mot de passe doit être défini dans ce cas.
keepaliveintnonTemps de keepalive en secondes. Temps entre deux PING MQTT.
portintnonPort TCP du broker MQTT. La valeur par défaut est 1883.
passwordstringnonMot de passe pour l’authentification avec le broker MQTT. L’utilisateur doit être défini dans ce cas.
hoststringnonAdresse IP du broker MQTT. La valeur par défaut est 127.0.0.1.
enabledboolnonActiver l’Entrée/Sortie. La valeur par défaut est true. Ce paramètre est ajouté s’il n’est pas trouvé dans la configuration.
log_historyboolnonSi activé, écrire une entrée dans l’historique des événements pour cet IO.
visibleboolnonAfficher l’Entrée/Sortie sur toutes les interfaces utilisateur si défini. Par défaut, true.
loggedboolnonSi activé, et si influxdb est activé dans la configuration locale, envoyer la valeur à influxdb pour cet IO.
gui_typestringnonType graphique interne pour tous les objets Calaos. Paramètre en lecture seule, défini automatiquement.
io_typestringouiType d’IO, peut être “input”, “output”, “inout”.
idstringouiID unique identifiant l’Entrée/Sortie dans calaos-server.

Paramètres spécifiques pour chaque type d’IO MQTT

MqttInputAnalog

Entrée analogique utilisée pour lire des valeurs analogiques, les afficher et les utiliser dans les règles.

NomTypeObligatoireDescription
topic_substringouiTopic sur lequel s’abonner.
topic_pubstringouiTopic sur lequel publier.
precisionintnonPrécision de la valeur retournée. Représente le nombre de décimales après la virgule.
namestringouiNom de l’Entrée/Sortie.
pathstringouiChemin où trouver la valeur dans le payload MQTT.
io_stylelistouiStyle d’affichage de l’interface utilisateur.
coeff_afloatnonUtilisé avec coeff_b pour appliquer une équation de la forme valeur_affichée = coeff_a * valeur_brute + coeff_b. La valeur par défaut est 1.0.
coeff_bfloatnonUtilisé avec coeff_a pour appliquer une équation de la forme valeur_affichée = coeff_a * valeur_brute + coeff_b. La valeur par défaut est 0.0.
unitstringnonUnité affichée sur l’interface utilisateur en tant que suffixe.

MqttInputString

Entrée de texte utilisée pour lire des valeurs de type chaîne de caractères.

NomTypeObligatoireDescription
topic_substringouiTopic sur lequel s’abonner.
topic_pubstringouiTopic sur lequel publier.
namestringouiNom de l’Entrée/Sortie.
pathstringouiChemin où trouver la valeur dans le payload MQTT.

MqttInputSwitch

Interrupteur avec états appuyé/libéré.

NomTypeObligatoireDescription
on_valuestringouiValeur à interpréter comme ON.
off_valuestringouiValeur à interpréter comme OFF.

MqttInputTemp

Capteur de température utilisé pour afficher la température et contrôler les dispositifs de chauffage via des règles basées sur la valeur de température.

NomTypeObligatoireDescription
topic_substringouiTopic sur lequel s’abonner.
topic_pubstringouiTopic sur lequel publier.
precisionintnonPrécision de la valeur retournée.
namestringouiNom de l’Entrée/Sortie.
pathstringouiChemin où trouver la valeur dans le payload MQTT.

MqttOutputAnalog

Sortie analogique utilisée pour contrôler des dispositifs de sortie analogiques connectés à Calaos.

NomTypeObligatoireDescription
datastringouiLes données envoyées lors de la publication sur le topic.
stepfloatnonDéfinir un pas pour augmenter/diminuer la valeur. La valeur par défaut est 1.0.

MqttOutputLight

Lumière de base avec seulement deux états, ON ou OFF. Peut également être utilisée pour contrôler des relais simples.

NomTypeObligatoireDescription
datastringouiLes données envoyées lors de la publication sur le topic.
on_valuestringouiValeur à interpréter comme ON.
off_valuestringouiValeur à interpréter comme OFF.

MqttOutputLightDimmer

Lumière avec contrôle de variation. L’intensité de la lumière peut être modifiée.

NomTypeObligatoireDescription
datastringouiLes données envoyées lors de la publication sur le topic.

MqttOutputLightRGB

Lumière RGB. Choisissez une couleur à définir pour cette lumière.

NomTypeObligatoireDescription
path_brightnessstringouiChemin où trouver la valeur de luminosité dans le payload MQTT.
path_ystringouiChemin où trouver la valeur Y (espace couleur X/Y) dans le payload MQTT.
path_xstringouiChemin où trouver la valeur X (espace couleur X/Y) dans le payload MQTT.
datastringouiLes données envoyées lors de la publication de la couleur sur le topic.