Module gpio
Le module gpio permet de lire et écrire des broches GPIO via l’agent.
Import
Pour importer le module :
Configuration YAML
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.PinIOdans la mapgpioPins.
API 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 :
-
truesi la broche est à l’état haut (High),falsesi 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) :truepour High,falsepour Low.delayMs(integer, optionnel) : Délai en millisecondes avant de réappliquer la valeur (utile pour les pulses).-
Retour :
-
truesi 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 (champnamede la config YAML).gpio.type: Type du module ("gpio").