Voulant jouer à une époque avec un lecteur RFID USB, je me suis décidé à l'utiliser comme système d'activation/désactivation de mon alarme.
N'ayant pas trouvé beaucoup de documentation sur comment le faire, ci-dessous la méthode que j'ai employée.
Matériel utilisé :
- Un raspberry pi 2 avec Debian 8.2 (boot sur systemd)
- Un lecteur RFID USB 125 KHz EM4100 (trouvable sur internet pour quelques euros)
- des badges/cartes rfid (trouvables pour trois fois rien sur internet)
Etape 1 : interception du lecteur.
sous Debian 8.2, on est en systemd. N'ayant pas trop de maîtrise de cela et n'utilisant pas de clavier, je me suis contenté de patcher les scripts de tty :
Dans le fichier system/serial-getty@.service, remplacer la ligne
Code : Tout sélectionner
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM
Code : Tout sélectionner
ExecStart=-/bin/openvt -c 2 -f -s -w -- /home/pi/badgelisten.py
Note : dans des versions en sysvinit, il suffit d'éditer /etc/rc.local en modifiant :
Code : Tout sélectionner
1:2345:respawn:/sbin/getty 115200 tty1
Code : Tout sélectionner
1:2345:respawn:/bin/openvt -c 2 -f -s -w -- /home/pi/badgelisten.py
Etape 2 : script python
Dans domoticz, créer un device virtuel de type texte, nommé "badge"
Il suffit alors d'écrire le script suivant dans /home/pi/badgelisten.py :
Code : Tout sélectionner
#!/usr/bin/python
import httplib
conn = httplib.HTTPConnection("localhost:8080")
badge = raw_input("Badge : ")
conn.request("GET","/json.htm?type=command¶m=udevice&idx={idx}&nvalue=0&svalue={txt}".format(idx=20,txt=badge))
Il suffit alors d'intercepter le changement de device via un script, et le code du badge entré peut être lu.