Module Lua mqtt
Le module mqtt
permet de connecter l’agent à un broker MQTT pour publier et souscrire à des topics. Il simplifie l’échange de messages entre l’agent et d’autres applications via le protocole MQTT (Publish/Subscribe).
Pour l’importer, utilisez la déclaration suivante :
Configuration
Le module mqtt
requiert plusieurs paramètres pour établir et maintenir la connexion au broker. Cette configuration se définit dans le fichier YAML de l’agent.
Exemple complet de configuration :
iot:
modules:
mqtt:
- name: mqtt1 # nom unique de l’instance
broker: "tcp://mqtt.ex.com" # URI du broker (tcp:// ou ssl://)
port: 1883 # port du broker (1883 par défaut)
client_id: "agent-mqtt1" # identifiant client MQTT
username: "utilisateur" # optionnel
password: "motdepasse" # optionnel
keepalive: 60 # intervalle keep-alive en secondes
Détails de la configuration
- name : Nom unique de l’instance du module. Doit être sans espaces ni caractères spéciaux.
- broker : URI du broker MQTT. Exemples :
tcp://localhost
,ssl://mqtt.ex.com
. - port : Port TCP du broker. Par défaut
1883
pour MQTT non chiffré et8883
pour MQTT sur TLS si URI commençant parssl://
. - client_id : Identifiant unique utilisé lors de la connexion. Recommandé de le baser sur
name
. - username, password : Identifiants d’authentification, si le broker l’exige.
- keepalive : Intervalle de ping MQTT en secondes. Garantit que la connexion reste active.
Fonctions Lua
mqtt.connect()
Établit la connexion au broker MQTT avec les paramètres configurés.
-
Retour :
-
true
: connexion réussie. nil
,err
: échec de la connexion, avec message d’erreur.
local mqtt = require("mqtt1")
local ok, err = mqtt.connect()
if not ok then
print("Erreur de connexion MQTT : " .. err)
else
print("Connecté au broker MQTT.")
end
mqtt.disconnect()
Ferme proprement la connexion au broker.
-
Retour :
-
true
: déconnexion réussie.
local mqtt = require("mqtt1")
local ok, err = mqtt.disconnect()
if ok then
print("Déconnecté du broker MQTT.")
end
mqtt.publish(topic, payload[, qos])
Publie un message sur le topic spécifié.
-
Paramètres :
-
topic
(string) : nom du topic MQTT. payload
(string) : message à envoyer.-
qos
(integer, optionnel) : Quality of Service (0, 1 ou 2). Par défaut 0. -
Retour :
-
true
: publication réussie. nil
,err
: échec, avec message d’erreur.
local mqtt = require("mqtt1")
local ok, err = mqtt.publish("capteurs/temp", "23.5", 1)
if not ok then
print("Erreur de publication MQTT : " .. err)
else
print("Message publié sur capteurs/temp.")
end
mqtt.subscribe(topic, callback[, qos])
Souscrit à un topic et définit un callback Lua pour traiter les messages reçus.
-
Paramètres :
-
topic
(string) : nom du topic à souscrire. callback
(function) : fonction Lua prenant deux arguments(topic, payload)
.-
qos
(integer, optionnel) : Quality of Service. Par défaut 0. -
Retour :
-
true
: souscription réussie. nil
,err
: échec, avec message d’erreur.
local mqtt = require("mqtt1")
local function onMessage(topic, payload)
print("Reçu sur topic " .. topic .. " : " .. payload)
end
local ok, err = mqtt.subscribe("capteurs/temp", onMessage, 1)
if not ok then
print("Erreur de souscription MQTT : " .. err)
else
print("Souscrit au topic capteurs/temp.")
end
Champs Lua associés
mqtt.name
: Retourne le nom de l’instance (mqtt1
).mqtt.type
: Retourne le type du module ("mqtt"
).