Die Inbetriebnahme des NFC Moduls ist wie in dem Artikel zu lesen sehr einfach. Leider lässt sich die Ausgabe mit Hilfe von | nicht umleiten und kann somit auf der Shell nicht weiter verwendet werden.
Ich habe mit den Sourcecode(main.c) der mitgelieferten Polling Software angesehen und ein wenig angepasst, nun wird die UID des Tags in die Datei polling.log geschrieben.
Um so wenig Ausgaben wie möglich zu erhalten habe ich die meisten printf...
Ausgaben aus dem Code entfernt, ausgegeben werden nun nur noch Fehlerausgaben und die UID.
Damit die Ausgabe in eine Datei geschrieben wird, habe ich folgendes in der main.c ausgetauscht.
Vorher:
printf("UID: ");
uint8_t i;
for(i = 0; i < bLength; i++)
{
printf("%02X ", bUid[i]);
}
printf("\n\n");
Nachher:
uint8_t i;
FILE *f = fopen("polling.log","a+");
for(i = 0; i < bLength; i++)
{
fprintf(f,"%02X", bUid[i]);
}
fprintf(f,"%s\n", "");
fclose(f);
Zusätzlich habe ich sleep(1)
auf sleep(4)
gesetzt.
Nach dem kompilieren kann die Software wie vorher über ./card_polling gestartet werde und die UID´s werden in die polling.log geschrieben.
Die UID´s aus der polling.log greife ich über ein kleines Shellscript ab, hierfür mussten zuvor die inotify-tools installiert werden.
apt-get install inotify-tools
Das Script selbst ist wie folgt aufgebaut:
#!/bin/bash
FILE="polling.log"
while true;
do
inotifywait -e modify "${FILE}"
for i in `cat ${FILE}`
do
echo $i
echo "" > ${FILE}
done
done
Wenn das Shellscript gestartet wurde, wird die polling.log überwacht.
Sobald es eine Änderung gibt wird die UID(echo $i) ausgegeben und im Anschluss wird die polling.log geleert.
Anstatt der echo $i
Ausgabe könnte die UID auch in eine mysql Datenbank geschrieben werden, diese könnte dann in einem Webfrontend für zum Beispiel eine Zeiterfassung verwendet werden.
Es wäre auch möglich mit zusätzlicher Hardware ein Türschloss zu öffnen oder ein Programm auf dem Raspberry Pi zu starten.
Natürlich wäre das ganze einfacher wenn man den Sourcecode komplett anpassen würde, um zum Beispiel die UID in die mysql Datenbank zu schreiben, für mich reicht jedoch die Verwendung der UID über die Shell.