Module gpio
Le module gpio
permet de lire et écrire des broches GPIO depuis Lua via l’agent Alemca, en s’appuyant sur la bibliothèque Periph.io.
Pour l’importer en Lua, utilisez :
Configuration
Ce module est automatiquement chargé lors du démarrage de l’agent et n’exige pas d’inclusion explicite dans la section plugins
. Vous pouvez cependant spécifier les broches à initialiser :
modules:
gpio:
- name: gpio1 # Nom logique de l’instance
pins: # Liste de broches BCM à gérer
- 17
- 18
- 27
name
(string, requis) : Nom de l’instance (ex."gpio1"
).pins
(table[int], requis) : Numéros de broches au format BCM (ex.[17,18,27]
).
Si pins
est vide ou absent, une erreur de configuration sera loggée et le module ne fonctionnera pas.
Initialisation
Lors de la lecture de la configuration (SetConfig
), le module :
- Désérialise le YAML dans la structure Go.
- Vérifie que
len(Pins) > 0
, sinon log d’erreur. - Initialise l’hôte Periph.io avec
host.Init()
. -
Pour chaque numéro dans
Pins
: -
Cherche le pin par nom
"GPIO<NUM>"
. - Le configure en entrée (
PullNoChange
,NoEdge
). - Stocke l’objet
gpio.PinIO
dans la mapgpioPins
.
Fonctions Lua
gpio.read(pin)
→ bool
| nil, err
Lit l’état logique d’une broche configurée.
-
Paramètre :
-
pin
(integer) : Numéro BCM de la broche à lire. -
Retour :
-
true
si la broche est à l’état haut (High),false
si bas (Low). nil, "<message d’erreur>"
si la broche n’est pas configurée ou en cas d’échec.
local gpio = require("gpio")
-- Lire l’état de la broche 17
local state, err = gpio.read(17)
assert(not err, err)
if state then
print("GPIO17 est HIGH")
else
print("GPIO17 est LOW")
end
gpio.write(pin, value[, delayMs])
→ true
| nil, err
Écrit un niveau logique sur une broche configurée, avec option de temporisation.
-
Paramètres :
-
pin
(integer) : Numéro BCM de la broche à écrire. value
(boolean) :true
pour High,false
pour Low.delayMs
(integer, optionnel) : Délai en millisecondes avant de réappliquer la valeur (utile pour les pulses).-
Retour :
-
true
si l’écriture s’est bien passée. nil, "<message d’erreur>"
en cas d’échec ou si broche non configurée.
local gpio = require("gpio")
-- Mettre la broche 18 à HIGH pendant 500 ms, puis à LOW
local ok, err = gpio.write(18, true, 500)
assert(ok, err)
gpio.write(18, false)
Champs Lua associés
gpio.name
: Nom de l’instance (champname
de la config YAML).gpio.type
: Type du module ("gpio"
).