Agent GPIOD¶
Pilote les broches GPIO d'une carte Linux (Raspberry Pi et compatibles) via libgpiod.
Rôle¶
- Lit l'état des broches configurées en entrée et les publie sur le bus.
- Positionne les broches configurées en sortie sur réception d'une consigne
SET_DO/.
Pré-requis¶
| Élément | Exigence |
|---|---|
| Matériel | Carte exposant /dev/gpiochip* |
| Bibliothèque | libgpiod version 2.0 ou supérieure |
| Permissions | L'agent doit pouvoir ouvrir /dev/gpiochip* |
libgpiod 1.x n'est pas compatible
L'agent utilise l'API v2 de libgpiod. Sur une distribution ne fournissant que la 1.x,
le paquet ne s'installera pas ou l'agent échouera à l'ouverture du contrôleur.
Debian Bookworm et supérieures fournissent la 2.x.
Vérifier la présence du matériel :
ls -l /dev/gpiochip*
gpiodetect
gpioinfo
Installation¶
sudo apt install abls-agent-gpiod
Unité systemd¶
abls-agent-gpiod@.service — unité templatée.
sudo systemctl enable --now abls-agent-gpiod@GPIOD_PORTAIL.service
Permissions d'accès aux GPIO¶
L'unité tourne en DynamicUser avec le groupe supplémentaire abls.
Sur Raspberry Pi OS, l'accès aux gpiochip est généralement réservé au groupe gpio.
Si l'agent échoue à l'ouverture, ajoutez une règle udev :
# /etc/udev/rules.d/60-abls-gpio.rules
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GROUP="abls", MODE="0660"
sudo udevadm control --reload-rules && sudo udevadm trigger
Paramètres spécifiques¶
Aucune option de ligne de commande supplémentaire : l'agent découvre les contrôleurs présents et reçoit la configuration de ses broches depuis l'API.
Le choix des broches, leur sens (entrée ou sortie) et leur mapping se font depuis la Console, page Agents GPIOD.
Enrôlement¶
sudo abls-agent-gpiod --agent-tech-id GPIOD_PORTAIL \
--domain-uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--domain-secret 'votre-secret-ici' \
--api-url api.abls-habitat.fr \
--save
sudo systemctl enable --now abls-agent-gpiod@GPIOD_PORTAIL.service
Précautions de câblage¶
Les GPIO du Raspberry Pi sont en 3,3 V
Appliquer 5 V sur une broche détruit le SoC. Interposez systématiquement un optocoupleur ou un module relais isolé entre la carte et le monde extérieur.
État des sorties au démarrage
Entre la mise sous tension de la carte et le démarrage de l'agent, l'état des broches n'est pas maîtrisé. Câblez vos actionneurs de sorte que l'état par défaut soit l'état sûr.
Dépannage¶
| Symptôme | Piste |
|---|---|
Unable to open gpiochip |
Permissions : voir la règle udev ci-dessus |
| Aucun contrôleur détecté | gpiodetect ne renvoie rien : matériel ou noyau incompatible |
Erreur de version de libgpiod |
Distribution fournissant la 1.x ; monter en version |
| Une broche lue reste figée | Broche déjà réservée par un autre processus (gpioinfo indique used) |
| Rebonds sur une entrée | Filtrage à faire côté D.L.S avec une temporisation |
sudo journalctl -u abls-agent-gpiod@GPIOD_PORTAIL.service -f