Module Lua mqtt
Le module mqtt permet de connecter l’agent à un broker MQTT.
Import
Configuration YAML
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
1883pour MQTT non chiffré et8883pour 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.
API 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").