tags: wiegand, digicode, rfid, sécurité, diy, mqtt
- 1. Contexte
- 2. Informations importantes
- 3. La différence entre contrôle d'accès et ouvre porte ?
- 4. Du coup, on fait comment ?
- 4.1 Version Contrôle d'accès (électro aimant, gâche électrique, portail)
- 4.2 La version light (on veut juste remonter les codes nous ! )
- 5 Les Branchements
- 5.1 Pour la version wemos
- 5.2 La version arduino
- 5.3 Les relais
- 6. On programme le bousin !
- 6.1 Arduino IDE
- 6.2 Le Sketch pour la wemos
- 6.3 le sketch pour arduino
- 6.4 La configuration des badges "maitres" et du code "clamerde"
- 6.5 La connexion (wifi et mqtt)
- 6.6 Les Topics
- 7. On CON-clut
1. Contexte
Bonjour à tous, suite à une visite chez mon copain Florient (Monsieur niche connectée), tout fièrement il me présente son lecteur de badge RFID. Il pilote la ventouse de la porte de sa salle de jeux.
Après à peine 30 secondes de recherche : porte déverrouillée sans code et sans badge !
Étant du métier, j’ai tenu à rappeler à Florient les bases d’un contrôle d’accès fiable et à mettre en œuvre un système plus sécurisé.
2. Informations importantes
Il est important de rappeler quelques règles de base :
Il faut avoir un moyen de déverrouiller la porte depuis l’intérieur en cas de problème matériel/logiciel. Il faut pouvoir couper l’alimentation du système qui maintient votre porte fermée.
Il faut également que la partie alimentation/gestion de la porte soit elle aussi sécurisée (le mieux c’est derrière la dite porte tout simplement),
afin d’éviter une éventuelle intrusion. il suffirait à votre intrus (ou Femme) de simplement déconnecter l’ensemble pour déverrouiller la porte.
3. La différence entre contrôle d’accès et ouvre porte ?
On parle de contrôle d’accès pour un peu près tous les éléments qui ouvrent une porte.
On appelle à tord un contrôle d’accès un élément qui ouvre une porte Il existe pourtant une différence entre ouvre porte et contrôle d’accès.
- Le contrôle d’accès :
Comme son nom l’indique il contrôle l’accès avec une traçabilité des utilisateurs et différents droits, il peut aussi y avoir une notion d’heures autorisées et surtout d’actions complémentaires.
Ex : Quand Florient tape son code, la porte s’ouvre et google lui dit « bonjour Florient ». Si ça fille tape son code, on vérifiera d’abord qu’il n’y a pas école demain et qu’on est bien dans la plage horaire autorisée « week end ».
- L’ouvre porte :
Il est beaucoup plus simple, on programme différents badges et différents codes qui autorisent l’ouverture de la porte, mais on aura aucun contrôle sur qui est entré, il sera impossible de faire la différence entre les utilisateurs et faire des scénarios personnalisés.
4. Du coup, on fait comment ?
C’est évident qu’on va faire du vrai contrôle d’accès.
Pour commencer : on va utiliser un lecteur Wiegand 26bits Lecture RFID + DIGICODE parfait pour l’intérieur comme pour l’extérieur.
Ce lecteur possède beaucoup d’avantages :
Il est étanche
On peut piloter la led et le buzzer
On peut le mettre sur une boite d’encastrement
Il fonctionne en 5V pas besoin d’abaisseur de tension pour passer du 12v au 5v.
L’avantage surtout des lecteurs wiegand (non ouvre porte) c’est qu’ils sont impossibles à cracker pour le commun des mortels, et qu’on a aucun fils qui peut ouvrir la porte au cul du lecteur.
4.1 Version Contrôle d’accès (électro aimant, gâche électrique, portail)
On va utiliser une Wemos ou bien un arduino en Ethernet (La version wemos étant un code que j’ai adapter et la version Ethernet que j’ai créé à 100%).
On va également utiliser des relais 5v avec une préférence pour les relais à visser
On va aussi utiliser des contacts magnétiques, j’ai prévu dans le code qu’on puisse utiliser un ou plusieurs contacts magnétiques pour avoir l’état de la porte, du portail de la boite aux lettres ou même d’une sonnette.
On oublie pas la résistance pull up qui vont avec (les résistances pull up ? )
Et on oublie pas le bouton poussoir pour la sortie (la sortie se fait directement par le code, on envoi quand même l’information via mqtt pour permettre par exemple l’extinction des lumières ) et on oublie pas sa résistance pull up à lui aussi.
4.2 La version light (on veut juste remonter les codes nous ! )
Effectivement si vous voulez utiliser, simplement remonter, les codes/badges via MQTT pour lancer des scénarios (Armer/désarmer l’alarme par exemple), vous n’aurez besoin que du lecteur wiegand, une wemos (ou arduino Ethernet) et une alim 5v (2a ).
5 Les Branchements
5.1 Pour la version wemos
Bon on résume tout ça :
D6: (d0) du lecteur wiegand
D7: (d1) du lecteur wiegand
GND: GND du lecteur wiegand ( et gnd de l’alim)
5V: + du lecteur wiegand (et + de l’alim )
D5: Contact magnétique
D2: Encore libre pour le moment
D0: relai 1 (ventouse, gâche ou portail) pour les portails on rentre par l’entrée BP de la carte électronique et on câble entre COM et NO
D1: led clavier
D3: Buzzer clavier
A0: Bouton de sortie (uniquement)
D8: sonnette ou contact magnétique supplémentaire
D4 : Relai 4 (pas utilisé dans cette exemple)
Pour l’alimentation on peut utiliser l’usb de la wemos sur les version simple.
5.2 La version arduino
Pour la version Arduino Uno ou MEGA (pas assez de mémoire sur un arduino nano) il faut vous équiper d’un shield ethernet pour pouvoir se connecté au réseaux local.
LEDCLAVIER =D7
Bouton de sortie ou bien entrée binaire = D4
Relais pour la porte ou le portail D8
BUZZER = D5
RELAY3 D10 (relais en option pour piloter des lumières ou quoi)
RELAY4 D11 (pareille)
ANALOGINPUT2 A1 (entrée supplémentaire pour Bouton ou Contact magnétique : résistance obligatoire)
ANALOGINPUT3 A2 (pareille)
D2 == wiegand D0 (câble vert du lecteur)
D3 == wiegand D1 (câble blanc du lecteur)
Pas d’alimentation en usb on utilise bien les port Vin (ou 9v sur le shield ethernet) et GND et on fait une étoile comme pour la wemos sans quoi ça marcheras pas !
5.3 Les relais
Si pour toi exciter une bobine c’est juste un terme d’électricien salace : ce paragraphe est pour toi !
Bon tout d’abord la base.
Un relai c’est une bobine qu’on vient exciter avec de l’électricité qui permet un changement d’état de la sortie
NO COM et NC (ou NF) ???
NO = NORMALEMENT OUVERT (le relai est ouvert au repos avant qu’on l’excite)
COM = COMMUN c’est par la qu’on rentre
NC = NORMALY CLOSED ou NORMALEMENT FERME ( le relai est fermé au repos )
On as déjà perdu loic « exciter au repos et rentrer » il en peut plus !!!!
Pour un électro aimant (ou ventouse) on va utiliser COM et NF de façon à ce qu’il y ait en permanence de l’électricité dedans et qu’on coupe le contact quand on excite la bobine.
Pour une gâche à RUPTURE (oui il existe plusieurs fonctionnements de gâche) idem qu’une ventouse.
Pour une gâche à ÉMISSION on va utiliser le COM et le NO pour envoyer l’électricité et déverrouiller la gâche.
Pour un portail on va utiliser COM ET NO et utiliser l’entrée Bouton poussoir du portail.
Cas particuliers d’un visiophone qui pilote déjà une porte ou un portail : soit on utilise COM et NO et on rentre sur le bouton poussoir du visiophone (si il existe), soit on va se mettre en parallèle du relai sur le visio ou en série selon ce qu’on pilote. Oui là ça devient compliqué pour faire simple si on utilise le NO du relai de l’interphone on se met en parallèle si on utilise le NC on se met en série et on viendra couper le circuit après le visio (ou avant).
6. On programme le bousin !
Selon la version arduino ou wemos les screens peuvent changer mais le principe reste le même.
6.1 Arduino IDE
On va commencer par télécharger le programme Arduino sur le site https://www.arduino.cc/en/software.
Ensuite on va ouvrir le bébé et télécharger la librairie pour les cartes esp 8266 (wemos)
Maintenant faut télécharger et installer les librairies :
On va commencer par la librairie wiegand ici il faut se connecter a github pour pouvoir la télécharger
Quand le zip est extrait, placez le dossier « Wiegand-Protocol-Library-for-Arduino-master » dans C:\Users\Usineagazz\Documents\Arduino\libraries
pour les autres librairies :
On commence par « PubSubClient » la librairie qui gère le mqtt.
pour la version wemos on aura aussi besoin des librairies :
ESP8266WiFi
ESP8266WebServer
ESP8266mDNS
ArduinoJson
et pour la version Ethernet :
Ethernet
ArduinoJson
6.2 Le Sketch pour la wemos
On retrouvera le sketch pour la wemos sur le github usine a gaz Téléchargez le !
ensuite on le décompresse et on met bien les 4 fichiers dans le même dossier
Et on ouvre le fichier RFID_Wiegand_MQTT.ino et on vérifie de bien avoir ces deux onglets dans le sketch
6.3 le sketch pour arduino
Il y a eut beaucoup de changement pour le sketch de l’arduino, le sketch de la wemos étant un code que j’ai récupérer et modifier je suis pratiquement partit de 0 pour le code de l’arduino alors faite en bonne usage !
j’ai egalement rajouter une option « on pilote »
const int onpilote=false; // si on pilote une porte ou un portail on mets true sinon en mets false dans l’onglet config
Vous pourrez télécharger ici
Même punition que pour la wemos il faut que tout le monde soit dans le même dossier.
6.4 La configuration des badges « maitres » et du code « clamerde »
j’ai rajoute deux fonctions pour pouvoir ouvrir la porte de Florient en cas de coupure de wifi ou de mqtt indisponible.
« Et ça a déjà servit ! une fois mon serveur proxmox a planté plus de mqtt, j’ai pu ouvrir la porte avec mon badge, heureusement que Dimitri pense à tout et qu’il est génial comme mec »
Florient (légèrement enjolivé…)
le code « clamerde » pour déverrouiller par code et les deux badges maitres pour déverrouiller quoi qu’il arrive pour les numéros de badges, ils sont indiqués au dos de chaque badges et on retire les 000 du début.
6.5 La connexion (wifi et mqtt)
6.6 Les Topics
Vous pouvez modifier les topics à votre guise dans l’onglet setting.h pour la version wemos et topic.h dans la version arduino
Les topics infos sont :
rfid/status c’est ici que toutes les 10 secondes la wemos publie 1 pour dire qu’elle est bien connectée
rfid/event c’est ici que la wemos publiera les informations venant du lecteur
On oublie pas pour le code dans « paramètres de la commande » de répéter la valeur identique
rfid/BoutonSortie c’est ici qu’on retrouvera l’information binaire du bouton de sortie
rfid/Contact pareil information binaire du contact magnétique
rfid/sonnette binaire de la sonnette ou d’un contact magnétique ou d’un bouton poussoir
+ les topics infos des relais qui seront créés automatiquement pour connaitre leurs états.
et pour les commandes action :
rfid/PORTE
rfid/LEDCLAVIER
rfid/BUZZER
rfid/relay4
Si on publie 1 dans ces topics on activera les relais (ouvrir la porte, changer la couleur du clavier pour vert, allumer le buzzer) et 0 pour l’action inverse
7. On CON-clut
Voila pour wiegand to mqtt, sachez qu’entre les codes, les essais les vidéos et cette article j’y est passé énormément de temps.
J’espère qu’il vous plait, si vous avez d’autres fonctions à ajouter faites moi signe 😉