Aller au contenu

Module Lua at

Le module at permet d'interagir avec les modules GSM/GPRS/3G/4G en utilisant des commandes AT via un port série.

Import

Pour importer le module en Lua :

local at = require("at1")

Configuration YAML

Le module at nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.

iot:
  modules:
    at:
      - name: at1               # nom du module
        port: /dev/ttyUSB0      # port série
        baud: 115200            # vitesse de transmission (défaut : 115200)
        read_timeout: 1000      # timeout de lecture en millisecondes (défaut : 1000)

Détails de la configuration

  • name (string, requis) : Nom du module. Il doit être unique et ne pas contenir d'espaces ou de caractères spéciaux.
  • port (string, requis) : Port série à utiliser. Format : /dev/ttyUSB0 (Linux) ou COM3 (Windows).
  • baud (integer) : Vitesse de transmission (baud rate). Par défaut 115200 (valeurs courantes : 9600, 115200).
  • read_timeout (integer) : Temps d'attente pour la lecture des données en millisecondes. Par défaut 1000.

API Lua

Liste des fonctions

Fonction Signature Lua Rôle Retour (succès) Retour (échec)
send status, err = at.send(cmd) Envoie une commande AT. "OK", nil nil, "msg"
query resp, err = at.query(cmd[, terminator]) Envoie une commande AT et attend la réponse. string, nil nil, "msg"
Champs at.name, at.type Métadonnées du module.

at.send(cmd)

Envoie une commande AT au module configuré. Cette fonction n'attend pas de réponse.

  • Paramètres :
  • cmd (string) : La commande AT à envoyer (sans le suffixe \r\n, ajouté automatiquement).

  • Retour :

  • "OK" si la commande est envoyée avec succès.
  • Message d'erreur en cas de problème (ex. "write error: ...").
local at = require("at1")

local status = at.send("AT+CSQ")
if status == "OK" then
    print("Commande AT envoyée avec succès.")
else
    print("Erreur : " .. status)
end

at.query(cmd[, terminator])

Envoie une commande AT au module configuré et attend une réponse.

  • Paramètres :
  • cmd (string) : La commande AT à envoyer.
  • terminator (string, optionnel) : Chaîne de fin de réponse. Par défaut "OK". La fonction lit jusqu'à trouver cette chaîne.

  • Retour :

  • En cas de succès : la réponse du module, nil.
  • En cas d'erreur : nil, message d'erreur.
local at = require("at1")

-- Requête simple avec terminateur par défaut
local response, err = at.query("AT+CSQ")
if err then
    print("Erreur lors de la requête AT : " .. err)
else
    print("Réponse AT : " .. response)
end

-- Requête avec terminateur personnalisé
local response2, err2 = at.query("AT+CMGL", "ERROR")

Exemple complet

local at = require("at1")

-- Vérifier la connexion au module
local response, err = at.query("AT")
if err then
    print("Module AT non disponible : " .. err)
    return
end
print("Module AT prêt")

-- Obtenir la qualité du signal
local csq, err = at.query("AT+CSQ")
if csq then
    print("Qualité du signal : " .. csq)
end

-- Envoyer un SMS (exemple)
at.send('AT+CMGF=1')  -- Mode texte
at.query('AT+CMGS="+33612345678"', ">")  -- Attendre le prompt
at.send("Hello World\x1A")  -- Message + Ctrl+Z

Champs Lua associés

  • at.name : Retourne le nom de l'instance at.
  • at.type : Retourne le type du module ("at").