RFID Reader startet nicht

  • Hallo,


    ich habe einen RFID Reader bekommen und möchte diesen gerne in Doorpi einbinden, was mir aber leider nicht gelingt.


    Das ist er: euftech USB Reader Amazon


    Auszug Doorpi.ini


    [onboardpins_OutputPins]

    0 = Tueroeffner


    [EVENT_OnKeyPressed_onboardpins.6]

    10 = out:Tueroeffner,1,0,3


    [DTMF]

    "0" = out:Tueroeffner,1,0,3


    [keyboards]

    onboardpins = piface

    rfidreader = keyboard


    [onboardpins_keyboard]

    bouncetime = 4000

    polarity = 0

    pressed_on_keydown = True


    [onboardpins_InputPins]

    0 = call:**612

    1 = sleep:0

    2 = sleep:0

    3 = sleep:0

    4 = sleep:0

    5 = sleep:0

    6 = sleep:0

    7 = sleep:0



    [pifaceio_InputPins]

    0 = sleep:0

    1 = sleep:0


    [EVENT_OnKeyUp_0]

    10 = call:**612

    5 = os_execute:/usr/local/etc/DoorPi/scripts/Klingelbild.sh


    [EVENT_OnKeyPressed_onboardpins.1]

    10 = os_execute:/usr/local/etc/DoorPi/scripts/Sabotagekontakt.sh


    [EVENT_OnStartup]

    10 = sleep:1

    20 = os_execute:/usr/local/etc/DoorPi/scripts/Startmeldung.sh


    [rfidreader_keyboard]

    device = usb:16c0:27db

    bouncetime = 5000


    [rfidreader__InputPins]

    0010327614 = out:Tueroeffner,1,0,3


    Auszug doorpi.log


    2020-08-02 20:06:58,626 [INFO] [doorpi.conf.config_object] use configfile: /usr/local/etc/DoorPi/conf/doorpi.ini

    2020-08-02 20:06:58,708 [INFO] [doorpi.status.webserver] Initiating WebService at ip and port 8081

    2020-08-02 20:06:58,720 [WARNING] [root] section User not found in configfile

    2020-08-02 20:06:58,725 [ERROR] [doorpi.status.webserver] user admin is assigned to group administrators but doesn't exist as user

    2020-08-02 20:06:58,726 [ERROR] [doorpi.status.webserver] module public doesn't exist but is assigned to group administrators in WritePermission

    2020-08-02 20:06:58,727 [ERROR] [doorpi.status.webserver] module public doesn't exist but is assigned to group administrators in ReadPermission

    2020-08-02 20:06:58,742 [INFO] [doorpi.keyboard.KeyboardInterface] using multi-keyboard mode (keyboards: rfidreader, onboardpins)

    2020-08-02 20:06:58,744 [INFO] [doorpi.keyboard.KeyboardInterface] trying to add keyboard 'rfidreader' to handler

    2020-08-02 20:06:58,745 [WARNING] [root] section rfidreader_InputPins not found in configfile

    2020-08-02 20:06:58,747 [WARNING] [root] section rfidreader_OutputPins not found in configfile

    2020-08-02 20:06:58,751 [ERROR] [doorpi.keyboard.KeyboardInterface] keyboard rfidreader not found @ keyboard.from_keyboard (msg: No module named from_keyboard)

    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)

    ImportError: No module named from_keyboard

    2020-08-02 20:06:58,759 [ERROR] [doorpi.keyboard.KeyboardInterface] couldn't load keyboard rfidreader

    2020-08-02 20:06:58,760 [INFO] [doorpi.keyboard.KeyboardInterface] trying to add keyboard 'onboardpins' to handler

    2020-08-02 20:06:59,432 [INFO] [doorpi.sipphone.SipphoneInterface] found installed sipphone "linphone" and use this as default

    2020-08-02 20:06:59,851 [INFO] [doorpi.sipphone.from_linphone] found 3 possible sounddevices:

    2020-08-02 20:06:59,860 [INFO] [doorpi.sipphone.from_linphone] found 2 possible videodevices:

    2020-08-02 20:06:59,867 [INFO] [doorpi.sipphone.from_linphone] using DoorPi with SIP-Server

    2020-08-02 20:06:59,874 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnKeyUp_0' in configfile

    2020-08-02 20:06:59,875 [INFO] [doorpi.doorpi] registering action '10' for event 'OnKeyUp_0'

    2020-08-02 20:06:59,883 [INFO] [doorpi.doorpi] registering action '5' for event 'OnKeyUp_0'

    2020-08-02 20:06:59,888 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnKeyPressed_onboardpins.1' in configfile

    2020-08-02 20:06:59,890 [INFO] [doorpi.doorpi] registering action '10' for event 'OnKeyPressed_onboardpins.1'

    2020-08-02 20:06:59,893 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnStartup' in configfile

    2020-08-02 20:06:59,894 [INFO] [doorpi.doorpi] registering action '10' for event 'OnStartup'

    2020-08-02 20:06:59,901 [INFO] [doorpi.doorpi] registering action '20' for event 'OnStartup'

    2020-08-02 20:06:59,904 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnKeyPressed_onboardpins.6' in configfile

    2020-08-02 20:06:59,905 [INFO] [doorpi.doorpi] registering action '10' for event 'OnKeyPressed_onboardpins.6'

    2020-08-02 20:07:00,950 [INFO] [doorpi.doorpi] DoorPi started successfully

    2020-08-02 20:07:00,952 [INFO] [doorpi.doorpi] BasePath is /usr/local/etc/DoorPi

    2020-08-02 20:07:00,953 [INFO] [doorpi.doorpi] Weburl is http://raspberrypi:8081/


    doorpi erkennt den Leser nicht, vielleicht habe ich was falsches in die doorpi.ini geschrieben ich weiß es leider nicht.

    Den Port: usb:16c0:27db habe ich mit lsusb ausgelesen.


    vielleicht kann mir jemand bei meinem Problem helfen.


    Vielen Dank :)


    Gruß raptoxx85

    • Offizieller Beitrag

    Ich mache glaub ich mal so ein sticky Post wo was zur mindest Vorraussetzungen zum helfen steht ;) Im ersten Post hast du es wunderbar gemacht. Doorpi.ini und ein aktuelles Log (im Idealfall im Trace-Modus).


    Was heißt er funktioniert? reagiert den der Leser? Zeig mal ein Log. Da sollte drin stehen ob er dein Tag erkannt hat :)

    • Offizieller Beitrag

    1) Log löschen oder bitte nur den Teil vom letzten Versuch. Der Fehler mit keyboard statt rdm6300 steht ja beim letzten Start noch drin.

    2) Installationsprozess (Service stoppen, CLI im Trace starten)

    3) Meldungen angucken, log zeigen. Das du auf Port 80 schon was laufen hast, ist absicht?

    • Offizieller Beitrag

    Ja das liegt daran, wie die from_rdm6300.py das implementiert.

    Python: from_rdm6300.py
    self.last_key = int(chars[5:-3], 16)

    Die ersten 5 Zeichen sind Start und Tag-Type (d.h. Chipkarte oder Token), dann kommt die ID (in hexadezimal) und am Ende die Prüfsumme. Das wird als Integer gespeichert. Dieser Datentyp hat keine führende 0. Lösung bestünde hier darin, last_key stattdessen einen String zu übergeben und diesen entsprechend mit führenden 0en zu füllen.


    Auf dein konkretes Problem: 0en in der ID vor der ersten anderen Zahl weglassen.

  • die 0en kann ich nicht weglassen, da der RFID Chip sich nicht verändern lässt.


    Jetzt bin ich auf diesen Tread gestoßen #10 wo der Code in eine Dezimalzahl umgewandelt wird doch leider funktioniert es noch nicht.


    Ich habe Doorpi im trace gestartet und bekomme auch keine Rückmeldung wenn ich den RFID Chip auflege.


    Anbei nochmal meine aktuelle doorpi.ini und Log Datei.

    • Offizieller Beitrag
    Zitat

    die 0en kann ich nicht weglassen, da der RFID Chip sich nicht verändern lässt.

    Wie gesagt. Die 0en vor der Zahl sind nur Füll-Zeichen. "10327614" entspricht ja der "0010327614" nur ohne der zwei führenden 0en. Das Signal was von deinem Leser kommt entspricht "signal format: ttttiiiiiicc (t = tag, i = id, c = checksum) in hexa-system" (Zeile 93, from_rdm6300.py). Das entspricht einer ID von 6 Zeichen im Hexadezimal-System. Ich weiß nicht ob du dich mit Programmierung auskennst aber ein Integer (wie oben geschrieben - so wird die ID mit der von dir hinterlegten verglichen) hat keine führenden 0en. Diese sind für die ID (die auf deiner Karte steht) aber auch vollkommen uninteressant weil sie keine Informationen enthalten.


    Hab gerade in der from_rdm6300.py nachgesehen. Es muss statt "device" "port" heißen und das Logging der relevanten Daten ist im Debug-Modus zu finden. Starte mal bitte mit --debug statt --trace (da sollte dann mehr im Log stehen):

    Code
    sudo systemctl stop doorpi.service
    doorpi_cli --debug --configfile /usr/local/etc/DoorPi/conf/doorpi.ini

    und ändere in der doorpi.ini:

    Code
    [rfidreader_keyboard] 
    port = usb:16c0:27db 
    bouncetime = 5000 
    
    [rfidreader_InputPins] 
    10327614 = out:Tueroeffner,1,0,3 

    Du kannst sonst auch mal auf das [EVENT_OnFoundTag] reagieren (das wird ausgelöst wenn der funktionierende RFID-Reader irgendwas an Key erkennt und die Dissmiss-Time vorbei ist).


    DoorPi kann mit deinem Eintrag [pifaceio_InputPins] übrigens nichts anfangen.

    • Offizieller Beitrag

    Okay. Er bekommt keinen Zugriff auf deinen Reader:

    Code
    File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 268, in open     raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
    SerialException: [Errno 2] could not open port usb:16c0:27db: [Errno 2] No such file or directory: 'usb:16c0:27db'

    Wahrscheinlich ist der Port ttyUSB0 statt deinem (usb:16c...). Wenn ich es richtig hab (etwas gegooogelt ;)), ist in dem Ding aber weder ein RDM6300 (wovon ich bisher ausgegangen bin) noch ein pn532/rc522 verbaut. Dann wird's umständlich, weil es dafür noch keine fertige Schnittstelle in DoorPi gibt.


    Laut der Amazon Kommentare verhält er sich plus minus wie eine Tastatur? https://beza1e1.tuxen.de/m302_rf_id_reader.html scheint deinem Leser auch nahe zu kommen. Lässt sich das Ding leicht öffnen? Damit wir wenigstens wissen welcher Chip angesprochen werden muss?


    Und deine Startmeldung.sh wird nicht gefunden ;)

  • Da kann ich natürlich lange probieren ^^


    Das steht hinten drauf 8H10D-1. Aber ich

    kann ihn auch öffnen wenn es sein muss.


    Das mit der Startmeldung weiß ich danke


    Edit:


    Jetzt habe ich ihn doch auf geschraubt und es steht da FP9291_1 HXG


    Wenn es jetzt aber gar nicht geht kaufe ich einen rdm6300, kostet ja nicht so viel.

    • Offizieller Beitrag

    Okay. Dann war meine Vermutung richtig. HXG steht für HXG Co. Ltd.

    Code
    sudo dmesg | grep -i usb

    Sollte ggf. noch etwas mehr Infos zu deinem Reader bringen.


    In DoorPi ist dafür kein Keyboard vorhanden.

    Ich hab dir da mal was zusammengeschrieben - es ist nicht getestet und der Code kann sowohl syntaktisch als auch funktionelle Fehler enthalten! Die from_hxgreader.py müsstest du einmal im keyboard-Ordner anlegen und den folgenden Code darein kopieren. In der DoorPi-Konfiguration muss es dann statt rdm6300 hxgreader heißen.

    Also einmal bitte ausprobieren und ggf. die Fehler beim starten im Debug-Modus nennen.

    • Offizieller Beitrag

    Code ist nochmal angepasst, da war ein Logikfehler drin. Problem ist noch, dass dir die Bibliothek python-evdev fehlt. Also die einmal installieren.

    Code
    sudo pip install evdev


    dmesg zeigt deinen Reader ja:

    Code
    [    2.347210] usb 1-1.2: new low-speed USB device number 4 using dwc_otg
    [    2.487610] usb 1-1.2: New USB device found, idVendor=16c0, idProduct=27db, bcdDevice= 0.01
    [    2.493368] usb 1-1.2: New USB device strings: Mfr=1, Product=0, SerialNumber=0
    [    2.496369] usb 1-1.2: Manufacturer: HXGCoLtd
    [    2.512393] input: HXGCoLtd Keyboard as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:16C0:27DB.0001/input/input0
    [    2.587637] hid-generic 0003:16C0:27DB.0001: input,hiddev96,hidraw0: USB HID v1.10 Keyboard [HXGCoLtd] on usb-3f980000.usb-1.2/input