rfidDaemon: demone per la gestione di un rfid reader

Logo Rfid

Alcune settimane fa girovagando su Amazon mi sono ritrovato ad ordinare per sbaglio un piccolo lettore di tag rfid. Dato il basso costo e dato che non avevo mai avuto esperienze nell’utilizzo di un oggetto del genere ho pensato di non annullare l’ordine in modo da poterci fare un po’ di esperimenti, magari usandolo con uno dei miei Raspberry Pi.

Allora …. l’oggetto in questione è quello che vedere nell’immagine qui sotto.

chafon-rfid-reader

Questo lettore rfid si presenta come una chiavetta usb e funziona in emulazione di tastiera. Quando vi viene avvicinato un tag rfid, il codice in esso contenuto viene inviato al pc come se fosse stato digitato dall’utente sulla propria tastiera. In dotazione al lettore ci sono due card con chip rfid per poter fare un po’ di esperimenti.

Veniamo ora alla parte più interessante, ovvero come potere gestire questo lettore sotto linux, in modo che vengano eseguite azioni diverse in base al codice letto di volta in volta. Per fare questo ho scritto un piccolo script che funziona da demone. Il nome con cui l’ho chiamato è rfidDaemon e può essere scaricato dal proprio repository su gitHub: https://github.com/lejubila/rfidDaemon.

Ho concepito lo script in modo che possano essere gestite diverse tipologie di lettori rfid, dove per ognuno di questi potrà essere implementato un driver diverso. Il driver non è altro che un piccolo script che viene eseguito dal demone per gestire l’interfacciamento con il lettore rfid. Il driver rimane in attesa di una lettura e quando questa avviene, restituisce in output il codice appena letto in modo che il demone ne venga a conoscenza e che esegua l’azione opportuna. Per adesso rfidDaemon è accompagnato da un solo driver che gestisce la lettura in emulazione di tastiera su Raspberry Pi.

Per installare il demone va prima scaricato il pacchetto da https://github.com/lejubila/rfidDaemon/releases oppure direttamente tramite git:

git clone https://github.com/lejubila/rfidDaemon.git

Una volta scaricato il pacchetto e decompresso o dopo averlo clonato con git, troverete nella directory rfidDaemon tutto ciò che occorre per fare funzionare il demone.

Come prima cosa dobbiamo copiare in /etc/rfidDaemon.conf il file di configurazione di esempio presente in /home/pi/rfidDaemon/conf/rfidDaemon.conf.example. Nel file troveremo le seguenti variabili di configurazione:

Variabile di configurazioneDescrizione
RFID_TYPENome del driver da utilizzare per eseguire la lettura dei tag rfid. Il valore da inserire dovrà corrispondere al nome dello script presente nella directory ./rfidDaemon/rfidDrivers/
LOG_FILEPercorso del file contenente i log del demone
LOG_FILE_MAX_SIZELunghezza massima del file di log dopo la quale verrà compresso e archiviato
GZIP
WC
MV
Percorso dei comando gzip, wc e mv.

Una volta copiato e sistemato il file di configurazione il demone potrà essere eseguito utilizzando il seguente comando:

./rfidDaemon.sh start

Per interrompere invece il demone dovrà essere impartito il seguente comando:

./rfidDaemon.sh stop

Avviato il demone, alla lettura di un tag rfid, verrà eseguito il script ./rfidDaemon/rfidScripts/rfid-all.sh, al quale verrà passato come argomento il codice rfid presente nel tag letto.

Il demone oltre allo script appena descritto, ne cercherà anche uno ulteriore in ./rfidDaemon/rfidScripts/ che abbia il nome così composto: rfid-valore_codice_rfid_letto.sh. In pratica se verrà letto un codice rfid con valore 0001234567, verrà eseguito lo script con nome rfid-0001234567.sh. In questo modo potremo fare eseguire azioni diverse in base ai tag letti semplicemente nominando gli appositi script con i giusti valori.

Per fare funzionare correttamente il demone su Raspberry Pi dobbiamo disabilitare le console virtuali andando a modificare il file /etc/inittab e commentando le relative linee come segue:

#1:2345:respawn:/sbin/getty --noclear 38400 tty1   
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

E’ necessario eseguire questa modifica per fare funzionare correttamente la lettura della console dallo script. Tenete presente però che a seguito di questa modifica non potrete più interagire con il vostro Raspberry Pi tramite video e tastiera collegati direttamente ad esso. Quindi attenzione perché potreste perderne il controllo.

Bene sono arrivato a fine e spero di essere stato abbastanza chiaro nell’esporre il funzionamento di rfidDaemon.

In un prossimo post descriverò come ho utilizzato rfidDaemon per attivare e disattivare l’irrigazione delle diverse zone del mio impianto di irrigazione grazie a dei semplici tag rfid.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.