Hallo,
hatte mal Zeit, ein Keyboard für den PN532 RFID-Reader zu basteln.
Config:
[keyboards]
nfcreader = pn532
[nfcreader_keyboard]
device = tty:AMA0:pn532
[nfcreader_InputPins]
98DD1234 = call:**622
[EVENT_OnKeyPressed_nfcreader.98DD1234]
00 = call:**622
Anstatt 98DD1234 natürlich die ID der eigenen Tags eintragen (lassen sich mit dem Python-Schnipsel unten auslesen oder mit tagtool, sh. unten).
Das keyboard benötigt noch libnfc und für python nfcpy.
Installation in Stichworten:
Installation libnfc nach learn.adafruit.com/adafruit-nf…pberry-pi/building-libnfc
(link ändern - ist jetzt auf github)
vor automake noch ein touch NEWS und touch README (sonst stürzt automake)
pip installieren, falls nicht schon vorhanden
dann danach vorgehen:
nfcpy.org/latest/topics/get-started.html#installation
Verkabelung:
PN532 - Raspberry
VCC - 5V
GND - GND
RX - TX (GPIO 14)
TX - RX (GPIO 15)
python tagtool.py --device tty:AMA0:pn532 -- funktioniert, tag gefunden
srccode nach /usr/local/lib/python2.7/dist-packages/nfc kopieren (sudo)
Zum Testen, ob die Installation von nfcpy erfolgreich war, folgenden code in ein file testnfc.py kopieren:
import nfc
def connected(tag):
try:
hmm = str(tag)
bla, ID = hmm.split('ID=')
print(ID)
return False
except KeyboardInterrupt:
raise
clf = nfc.ContactlessFrontend('tty:AMA0:pn532')
while True:
try:
clf.connect(rdwr={'on-connect': connected})
except KeyboardInterrupt:
raise
Alles anzeigen
dann mit python testnfc.py ausprobieren, ob eine ID ausgegeben wird, wenn man einen Tag an den Reader hält.
Anschließend das angehängte Keyboard nach /usr/local/lib/python2.7/dist-packages/doorpi/keyboard/ entpacken.
Was mir an der Sache noch überhaupt nicht gefällt, ist, daß es in der momentanen Version noch nicht möglich ist, zusätzlich zur ID einen User (für Logging, Weitergabe von Statusinfos an Hausautomatisierung etc) zu hinterlegen. Hier muß ich noch einiges an Arbeit reinstecken. Beim I2C-Keyboard habe ich das schon gemacht, aber momentan habe ich nicht sehr viel Zeit dafür...
Weiters bin ich momentan ein wenig ratlos, warum das nur funktioniert, wenn auch ein OnKeyPressed-Event definiert wird (hier habe ich leider noch immer nicht ganz verstanden, wie diese Dinge in doorpi implementiert sind, ist für mich momentan aber eher Kosmetik)...
Würde mich freuen, wenn jemand die Muße hat, das zu testen und Feedback zu geben...