Skip to content

Module gpio

Le module gpio permet de lire et écrire des broches GPIO via l’agent.

Import

Pour importer le module :

local gpio = require("gpio")

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 :

  1. Désérialise le YAML dans la structure Go.
  2. Vérifie que len(Pins) > 0, sinon log d’erreur.
  3. Initialise l’hôte Periph.io avec host.Init().
  4. Pour chaque numéro dans Pins :

  5. Cherche le pin par nom "GPIO<NUM>".

  6. Le configure en entrée (PullNoChange, NoEdge).
  7. Stocke l’objet gpio.PinIO dans la map gpioPins.

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 :

  • 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 (champ name de la config YAML).
  • gpio.type : Type du module ("gpio").