Skip to content

Module Lua mqtt

Le module mqtt permet de connecter l’agent à un broker MQTT.

Import

local mqtt = require("mqtt1")

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 1883 pour MQTT non chiffré et 8883 pour MQTT sur TLS si URI commençant par ssl://.
  • 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").