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").