Ceci est une ancienne révision du document !
Serrure de la porte du local (Raspberry Pi « gatepi »)
Un Raspberry Pi lit les badges sur un lecteur Wiegand placé à la porte et pilote la serrure motorisée. Il gère aussi un bouton qui ouvre le garage en passant par l'atom. Voir aussi ouverture du garage et réseau du local.
Relevé du 13/10/2026.
Schéma réalisé avec Archify ; source : docs/serrure/archify/serrure.architecture.json dans le dépôt AdminLova.
Utilisation
- Passer son badge une fois : la porte se ferme (2 bips).
- Repasser le même badge dans les 4 secondes : la porte s'ouvre (bip long).
- Badge inconnu : 10 bips courts, rien ne bouge.
- À chaque ouverture ou fermeture, un message « Local ouvert / fermé par @pseudo » est posté sur Framateam et la page d'état du site passe à « ouvert » ou « fermé ».
- Bouton garage (à la porte) : le maintenir appuyé 0,5 s ; un air joue sur le lecteur et, 8 secondes plus tard, la porte de garage s'ouvre (ou se ferme).
Matériel
| Élément | Valeur |
|---|---|
| Carte | Raspberry Pi 3 Model B+ |
| Système | Debian 12 (bookworm) |
| Nom / adresse | gatepi · 192.168.42.20 (réservée dans /etc/dnsmasq.d/static.conf de l'atom) |
| Réseau | Wi-Fi (l'Ethernet n'est pas branché) |
| Accès | ssh pi@gatepi ; mot de passe dans le keepass du bureau |
| Lecteur | Lecteur de badges Wiegand 26 bits (fils rouge, noir, vert, blanc, jaune) |
| Serrure | HUA XING QIANG, serrure électronique en applique, avec antenne (récepteur radio intégré) |
| Boîtier | Boîtier imprimé en 3D (rouge) fixé à côté de la porte ; le Pi est monté sur une plaque à pastilles |
| Alimentation | Convertisseur DC-DC réglable LM2596 (bornier à vis en entrée) qui fournit le 5 V du Pi |
| Bouton garage | Petit bouton-poussoir sur le flanc droit du boîtier (fils bleu et violet) |
| Connexions | Deux connecteurs sur le côté gauche du boîtier pour les câbles du lecteur et de la serrure |
L'ancienne adresse 192.168.42.128 n'est plus valable depuis que l'atom distribue les adresses.
Photos
Brochage GPIO
Relevé dans le code (numérotation wiringPi convertie avec gpio readall).
| Fonction | Programme | BCM | Broche physique |
|---|---|---|---|
| Lecteur : Data0 (fil vert) | reader | GPIO17 | 11 |
| Lecteur : Data1 (fil blanc) | reader | GPIO18 | 12 |
| Lecteur : bip à chaque lecture (fil jaune) | reader | GPIO26 | 37 |
| Bips d'état (ouvert, fermé, erreur, garage) | gate | GPIO4 | 7 |
| Serrure : fermer (impulsion de 1 s) | gate close | GPIO14 (TxD) | 8 |
| Serrure : ouvrir (impulsion de 1 s) | gate open | GPIO15 (RxD) | 10 |
| Bouton garage (vers la masse) | garage_button | GPIO16 | 36 |
Les fils Data0 et Data1 du lecteur sont en 5 V : ils doivent être ramenés à 3,3 V avant les GPIO du Pi.
⚠️ Ne pas activer le port série du Pi (enable_uart=1 ou raspi-config → Serial) : la serrure est branchée sur les broches du port série (GPIO14/15), et les messages de démarrage la feraient basculer.
Logiciel
Dossier /home/pi/rpi-wiegand-reader, dérivé de rpi-wiegand-reader.
| Fichier | Rôle | Lancé par |
|---|---|---|
reader (reader.c) | Décode les badges et ajoute une ligne au fichier output | service wg-reader |
gate-service.sh | Vérifie le badge dans perm.list, ouvre ou ferme, prévient Framateam et le site | service gate-service |
gate (gate.c) | gate open, gate close, gate beepo / beepc / beepe / beepg | gate-service.sh, garage_button.sh |
garage_button et garage_button.sh | Attend l'appui sur le bouton, joue un air, attend 8 s et demande à l'atom d'ouvrir le garage | /etc/rc.local (session tmux button) |
perm.list | Badges autorisés, une ligne ID pseudo | — |
Commandes utiles
ssh pi@gatepi sudo systemctl status gate-service wg-reader journalctl -u gate-service -f # suivre les badges en direct cd ~/rpi-wiegand-reader sudo ./gate open # ouvrir la porte (attention : réel) sudo ./gate close # fermer la porte sudo tmux attach -t button # bouton garage (sortir : Ctrl-B puis D)
Ajouter un badge
- Passer le badge sur le lecteur (10 bips courts : il est inconnu).
- Sur le Pi :
journalctl -u gate-service | tail→ relever l'identifiant sur la ligneunauthorized code <ID>. - Ajouter la ligne
<ID> <pseudo>dans~/rpi-wiegand-reader/perm.list. C'est pris en compte immédiatement. - Pour que le badge ouvre aussi le garage, ajouter la même ligne dans
~/garage/perm.listsur l'atom (voir ouverture du garage) : les deux listes sont séparées.
Points d'attention
- Deux listes de badges : celle du Pi (porte) et celle de l'atom (garage) sont tenues à la main. Le 13/10/2026, un badge n'était présent que sur le Pi.
- Le Pi dépend du Wi-Fi pour Framateam, la page d'état et le bouton garage. Les badges, eux, fonctionnent sans réseau.
- Code non sauvegardé : plusieurs fichiers modifiés ou ajoutés ne sont pas versionnés. Avant de les pousser sur un dépôt, retirer l'URL du webhook Framateam de
gate-service.sh. - Le fichier
outputgrossit sans fin (1,6 Mo) : prévoir une rotation. - Le Pi est réglé sur l'heure de Londres : les journaux ont une heure de retard. Correction :
sudo timedatectl set-timezone Europe/Paris.
À vérifier sur place
- Modèle du lecteur Wiegand et tension de l'alimentation en entrée du convertisseur DC-DC.
- Ce que commandent GPIO14/15 (entrées filaires de la serrure, relais ou transistors). La serrure a une antenne : l'Arduino du boîtier garage, qui commande une « porte arrière » par la télécommande de la serrure (D10/D11), pilote probablement cette même serrure par radio. À confirmer.
- Présence de l'adaptation 5 V → 3,3 V sur Data0/Data1.
- Fil jaune (bip) : sur GPIO26 (broche 37), GPIO4 (broche 7), ou les deux ?
- Confirmer que le bouton du flanc droit est bien relié à GPIO16 (broche 36).




