RFID Reader ACR122U USB

  • Hallo Zusammen, ich bräuchte Hilfe bei der Einbindung meines USB RFID/ NFC Lesers ins DoorPi


    Habe bislang nur folgendes gefunden....scheint aber nur für einen anderen Leser zu sein ?!
    [keyboards]
    onboardpins = gpio
    rfidreader = rdm6300
    [rfidreader_InputPins]
    421352a813f80 = out:Tueroeffner,1,0,3


    ---------------------


    Es handelt sich um folgenden Leser:


    ACR122U USB NFC TAG READER


    Entsprechende Treiber/ Pakete wurden installiert:
    libudev-dev

    libusb-dev

    libnfc-1.7.1




    Mit dem folgenden Befehl bekomme ich nun den NFC Tag ausgelesen:
    sudo nfc-list




    Ausgabe dann wie folgt:



    nfc-list uses libnfc 1.7.1


    NFC device: ACS / ACR122U PICC Interface opened
    1 ISO14443A passive target(s) found:
    ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 03 44
    UID (NFCID1): 04 21 35 2a 81 3f 80
    SAK (SEL_RES): 20
    ATS: 75 77 81 02 80





  • selbst schon die Lösung gefunden...
    es war auch garnicht so schwer.


    mit dem Befehl sudo lsusb geschaut auf welchem usb port der reader hängt


    in meinem fall wie folgt
    Bus 001 Device 004: ID 072f:2200 Advanced Card Systems, Ltd
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


    dann die doorpi.ini entsprechend angepasst


    [keyboards]
    onboardpins = piface
    nfcreader = pn532


    [nfcreader_keyboard]
    device = usb:072f:2200
    bouncetime = 5000


    [nfcreader_InputPins]
    B614818D = dummy


    [EVENT_OnKeyPressed_nfcreader.B614818D]
    10 = out:Tueroeffner,1,0,5

  • Hallo rambaldi85


    ich habe soweit deinen Beitrag befolgt und ENDLICh nfc-list am Laufen.


    Sobald ein Tag aufgelegt ist, erscheint auch wie bei dir die ATQA UID SAK und ATS.


    Was ich mich nun aber Frag, wie du in deiner doorpi-Konfig auf den Wert B614818D kommst?


    Vermutlich ist das noch mein letztes Thema und dann hoffe ich dass es läuft.


    LG


    PS. Hab da wohl auch noch ein anderes Problem:

    Code
    2020-03-08 20:20:12,979 [ERROR]         [doorpi.keyboard.KeyboardInterface] keyboard nfcreader not found @ keyboard.from_pn532 (msg: No module named nfc)
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/KeyboardInterface.py", line 42, in load_single_keyboard
        keyboard = importlib.import_module('doorpi.keyboard.from_'+keyboard_type).get(
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/from_pn532.py", line 87, in <module>
        import nfc
    ImportError: No module named nfc
    2020-03-08 20:20:12,980 [ERROR]         [doorpi.keyboard.KeyboardInterface] couldn't load keyboard nfcreader
    • Offizieller Beitrag

    Zeig mal deine doorpi.ini (Konfigurationsdatei). Ansonsten ja du hast ein Problem. Du hast die nfcpy-Bibliothek nicht installiert ...

    Code
    sudo pip install -U nfcpy

    (falls du PyPip installiert hast ..) Ohne die Bibliothek funktioniert da nichts. Das steht sonst auch in der Datei from_pn532.py (vgl. https://github.com/motom001/Do…pi/keyboard/from_pn532.py) innerhalb deiner DoorPi-Installation. Die Bibliothek enthält auch eine tagtool.py-Datei. Damit kannst du dir alle Infos über eine vorgehaltene Karte anzeigen lassen (u.a. auch die von dir gesuchte Nummer).


    Die Nummer die rambaldi85 da einträgt müsste die UID darstellen (aber ich hab das Keyboard nicht geschrieben ;)). Wenn du DoorPi im Debug-Modus startest (also doorpi_cli --debug), dann gibt er dir diese Nummer in dem Moment wo er eine neue Karte erkennt in der Konsole auch aus.

  • Morgen,

    Danke, das hatte ich gestern schon versucht mit nfcpy genau wie beschrieben, Ursache war dass DoorPI gar nicht mehr gestartet hatte.

    Ich seh mir das heute Nachmittag nochmal an, poste was genau der Fehler war bzw. Meine Config, wobie die quasi der obigen entspricht.

    Syntaxfehler hatte ich schon geschaut.

    LG

  • WOW. Ich glaub der Sache bin ich durch deine Hilfe ein ganzes Stück näher gekommen.


    Ich hatte heute ohne DoorPI zu starten NFCPY installiert. Anschließend hatte alles prima funktioniert, auch die Aktion sobald ein Tag in die Nähe kommt.


    Mit STRG-C habe ich dann DoorPI beendet und wollte ihn nochmal starten, das ging nicht, gleicher Fehler wie gestern, als ich NFCPY installiert hatte.

    Sobald das vorhanden ist fährt sich nach einem 2. Start DoorPI wieder von selbst herunter:


    Für mich liest sich das, als ob der Reader nicht mehr erreichbar ist, heißt für mich, er wird nicht sauber beendet, obwohl die grüne LED ausgeschaltet ist, sobald DoorPI heruntergefahren wurde.


    Wird das System neu gestartet ODER der Reader an/abgesteckt, funktioniert es wieder 1x.


    LG

    • Offizieller Beitrag

    Hm ich hab das Keyboard nicht geschrieben aber hab bei mir im Trunk da auch Veränderungen vorgenommen.

    Änder mal in der from_pn532.py Zeile 158 und folgende ab:

    Das Problem ist, dass es beim lesen ggf. die Verbindung neu aufbaut. Deswegen muss erst das Lesen unterbrochen werden, und dann die Verbindung getrennt werden.

  • Also ich habe die Datei wie folgt geändert:

    /usr/local/lib/python2.7/dist-packages/doorpi/keyboard/from_pn532.py



    Die zuvor auskommentierten waren bereits drin, abgesehen von der Reihenfolge eigentlich das Gleiche?


    LG

  • In einem anderen Beitrag PN532 Keyboard ist vom Gleichen Problem die Rede.

    Aber auch die gepostete Lösung 2 Posts danach ist bei mir nicht die Lösung.

    Meine Datei ist auch komplett anders als die auf Github, ich hab diese mal eingefügt aber immer noch das Gleiche Problem???


    Wenn ich NACH dem DoorPI shutdown ein nfc-list mache, kann auch er nicht auf das Device zugreifen...

    • Offizieller Beitrag

    Also bei Python ist die Einrückung bzw die Anzahl der Leerzeichen relevant.


    Die Kommentierung hab ich nur vorgenommen, damit jemand der Python lesen kann versteht warum es jetzt sorum sein soll (für denjenigen hab ichs auch an die PEP8 Konvention angepasst).


    Aber ja, die relevante Änderung ist nur, dass du self._shutdown = True zwei Zeilen vor setzt. Das was ich gepostet hatte sollte anstelle von der alten destroy Funktion nicht zusätzlich ;)


    Das nfc-list auch nicht funktioniert bestätigt meine Vermutung, dass das Device nicht freigegeben wurde und weiterhin geblockt ist ...

  • Hier die Original-Datei, wie gesagt diejenige von Github habe ich auch schon versucht, die war deutlich kürzer, sowie die modifiziert.

    Auch das 1. Log wo alles klappt mit sofortigem händischen Shutdown, sowie das anschließend 2. Log wo sich DoorPI selbst gleich wieder beendet.

    Macht er übrigens wohl auch, wenn gar kein Reader dran steckt???

    • Offizieller Beitrag

    Hm Änderung ist so okay. Das Keyboard gefällt mir so zwar nicht, weil da der Fall den du jetzt hast (das der Reader nicht erreichbar ist) nicht abgefangen wird (weshalb sich DoorPi auch direkt beendet, wenn kein Reader dran hängt und du aber in der Konfiguration angegeben hast, dass einer da sei). Auch wird nicht geprüft ob überhaupt noch ein self._clf besteht aber mal fröhlich drauf zugegriffen. Erklärt das Problem aber nicht. Wie gibst du die Adresse deines Readers an? (device=???)


    Könntest du mal das tagtool.py Programm und danach nfc-list ausführen? Damit wir mal sehen ob im Keyboard from_pn532 der Fehler liegt oder wo anders.


    Ach ist dein Nutzername eigtl auch der SBC den du für DoorPi nutzt? https://github.com/nfcpy/nfcpy/issues/69 zB gab's mit dem Orange Pi Zero scheinbar ein ähnliches Problem ( wobei diese Problematik mehrfach bei der Bibliothek schon aufgetreten ist...)

  • In der Config habe ich:


    Für den Test setze ich lediglich eine Symcon Variable, das klappt ja so alles.


    Sorry für die dumme Frage, aber wo finde ich die tagtool.py?


    In meinem /home/pi/libnfc ist nichts zu finden, vor allem da ich in Root geklont hatte bzw. ich hatte ja per PIP installiert?

  • Ohje, ich verhau meinen Raspberry ganz schön, gut dass es nicht der reale DoorPI ist, sondern nur einer auf dem Schreibtisch welcher ausschließlich für die NFC-Tests zuständig ist.


    Ich hab das besagte Repository geklont, ja darin ist tagtool.py.

    Ein start mit python tagtool.py liefert dann gleich mal dass python3 benötigt wird.


    Installiert ist offensichtlich Python 2.7.16 und Python 3.7.3.

    System ist übrigens Raspbian 10.


    Ein Aufruf mit python3 tagtool.py bringt dann auch gleich dass diverse Module wie ndef, nfc config etc. fehlen.

    Versucht die alle nachzuziehen mit pip install ndef, bringt natürlich nichts da pip ja der Aufruf von Python 2 ist.

    Also über apt-get python3-pip installiert und dann pip3 install ndef dann kommt no module nfc usw.


    Letztendlich war dann irgendwann ein pip3 install tagtools erfolgreich...

    Jedoch kann ich dies irgendwie nicht aufrufen?

    Auch ein apt-get install tagtool habe ich gemacht, bis ich mal geschnallt hab, dass das ganz andere Tools für Audio files sind...


    Naja soweit bin ich nun dass python3 tagtool.py noch liefert no Module named nfc.

    Also pip3 install nfc liefert jedoch nen Fehler

    Python
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-install-s7hh7qf3/nfc/setup.py", line 6, in <module>
            from config import pypi_name
        ImportError: cannot import name 'pypi_name' from 'config' (/usr/local/lib/python3.7/dist-packages/config.py)
        
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-s7hh7qf3/nfc/


    Ich glaub ich komm hier nicht wirklich weiter...