RFID Reader Zeiterfassungsterminal

  • Hallo dark---inside,


    nach welcher Anleitung hast Du Icon installiert?


    Welche Fehlermeldungen kamen bei dem Versuch, das Programm zum Auslesen der Schnittstelle laufen zu lassen?


    Du brauchst doch in meinem Quellcode-Ausschnitt lediglich die Definition von SER auf Dein Device anzupassen.


    Es ist eigentlich vollkommen, egal, wie das Device heißt. Du musst es nur richtig ansprechen.


    Schau doch mal im Verzeichnis /dev nach, was Dein RFID-Teil an zusätzlichen Einträgen erzeugt.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Andreas : Ich habe ICON nach dieser Anleitung installiert.


    Habe es nun noch mal versucht und der Fehler ist weg. Mein device heißt

    Code
    /dev/input/by-path/platform-bcm2708_usb-usb-0\:1.3\:1.0-event-kbd


    Wenn ich nun dein script abändere bekomme ich folgenden Output:


  • Ich habe mich jetzt mit dark---inside zusammengesetzt und heute morgen einige Sachen getestet, bräuchten jetzt allerdings nochmal Hilfe ;)


    Anhand "ls -l /dev" haben wir festgestellt, dass beim einstecken des USB-RFID Readers das "hidraw0" dazu kommt. So haben wir jetzt auf verschiedene Weise versucht die Schnittstelle auszulesen, dabei kommt folgendes heraus:


    Code
    root@xadmin:/home/pi# od -x </dev/hidraw0
    0000000 0000 0021 0000 0000 0000 0000 0000 0000
    0000020 0000 001e 0000 0000 0000 0000 0000 0000
    0000040 0002 0006 0000 0000 0000 0000 0000 0000
    0000060 0002 0005 0000 0000 0000 0000 0000 0000
    0000100 0002 0007 0000 0000 0000 0000 0000 0000
    0000120 0000 0027 0000 0000 0000 0000 0000 0000
    *
    0000160 0002 0006 0000 0000 0000 0000 0000 0000
    0000200 0000 0028 0000 0000 0000 0000 0000 0000


    Vordere Spalte ist irgend eine Durchnummerierung, (warum auch immer die eine Zeile fehlt), danach kommt entweder 0000 oder 0002, aus einem anderen Projekt aus einem Barcodeleser (unten verlinkt) habe ich gesehen, dass 0000 = normal ist und 0002 = Capslock an. Danach kommt das Zahlenpaket was scheinbar für uns relevant ist, nämlich die ID des Tags.


    Mit folgendem kommt das gleiche heraus, allerdings die Werte von vorher Hex in Dezimal umgewandelt und das überflüsse Zeug abgeschnitten:

    Code
    import sys
    fp = open('/dev/hidraw0', 'rb')
    while True:
    buffer = fp.read(8)
    for c in buffer:
    if ord(c) > 0:
    print ord(c)
    print "\n"


    ergibt:


    Jetzt stehen wir hier und wissen nicht wie das codiert sein soll. In dem Barcodeprojekt hat irgendjemand gefunden welche Zahl welchem Buchstaben entspricht, hier allerdings keine Ahnung. Man hat zwar eine eindeutige Zuordnung, die aber irgendwie nicht ganz richtig ist, der korrekt Key dieser Karte (unter Windows ausgelesen) müsste dieser ein:

    Code
    41CBD00C


    Wer kennt sich mit sowas aus, das Netz gibt nichtsmehr her für mich.

  • Hallo jumpy, versuche auch gerade einem legic usb reader am hidraw auszulesen ! Bist du da vielleicht schon etwas weiter gekommen mit deinem py-Code ? Mfg


  • Hallo jumpy, versuche auch gerade einem legic usb reader am hidraw auszulesen ! Bist du da vielleicht schon etwas weiter gekommen mit deinem py-Code ? Mfg


    hallo
    nein leider ist garnichts weitergegangen da ich momentan wenig Zeit dafür habe.
    Hatte auch mit dem Hersteller des HID Readers geredet doch der wusste auch nicht so wirklich wie man den unter Linux ausliest damit man die ID herausbekommt. Er meinte nur es muss eine Tabelle geben für die Übersetzung.
    Der Hersteller hat mir dann geratet eventuell den Reader umprogrammieren zu lassen, dass er als Serial Device erkannt wird doch ich denke das wird mein Problem nicht beheben.

  • Morgen zusammen, ich habe gerade scheinbar einen Geistesblitz am frühen morgen, ich habe nur einmal auf den Key geschaut und mir fiel folgendes auf:


    Der Key muss laut Windoof "41CBD00C" sein, gegeben haben wir:


    Betrachten wir folgendes: Die Zahlen untereinander sollen den Key darstellen. Die Zahl 2 bedeutet, dass der nachfolgende Buchstabe groß geschrieben wird, somit ergibt das:

    Code
    - 30 = 4
    - 6 = C
    - 5 = B
    - 7 = D
    - 39 = 0
    - 39 = 0
    - 6 = C


    Mich würde es nicht Wundern, wenn z.B. 4 = A ist. Also alles was hilft, wäre unzählige Keys unter Windows auslesen, diese unter Linux auslesen und einen Abgleich machen. Wenn wir zu jeder Zahl einen passenden Buchstaben oder eben die "Keyzahl" haben, schreibe ich das Programm für automatische Umwandlung um, kein Problem.


    Möchtet ihr noch ein paar Sachen lesen und sortiert hier posten? Also Tag1 Windows = Tag1 Linux etc.


    Viel Erfolg :)


    EDIT: Ich habe diesbezüglich nochmal den Beitrag zu dem Barcodescanner aus dem Netz gesucht und gefunden, dass die Werte übereinstimmen. Ich baue da morgen/übermorgen mal etwas, bräuchte allerdings nochmal einen von euch beiden der das dann auch testet. Dann ist die Sache erledigt ;)

  • So, der Code ist jetzt nicht von mir, habe diesen nur geprüft und der sollte so funktionieren wie es gewünscht ist:



    Kurze Erklärung:
    Oben im Code werden die Zeichen festgelegt, die der IDs des Lesers entsprechen. Dabei beinhaltet "hid" alle Zeichen ohne Capslock, "hid2" alle mit Capslock.
    Das Programm prüft bei einem Lesevorgang zunächst ob die Zahl 40 ausgegeben wird, das ist das Zeichen, dass hier der Key endet. Ist dies nicht der Fall, wird geprüft ob die Zahl 2 ausgegeben wurde, dass ist das Signal für Capslock. Dann wird die Zahl die danach kommt mit der "hid2"-Liste abgeglichen und entsprechend in die Console geschrieben - wenn keine 2 entdeckt wurde, wird das gleiche entsprechend der "hid"-Liste ausgegeben.
    Das ganze ist in einer Dauerschleife, bis die Zahl 40 erscheint und somit der Key zuende ist.


    Für RFID-Keys benötigt man nicht zwingend alle Zahlen/Buchstaben und eigentlich auch keine Sonderzeichen. Diese sind da aber drin, wollte das komplett so übernehmen, da der Code nicht von mir ist.


    Jetzt an die Leute mit den RFID-Lesern: Bitte damit testen & einen Abgleich mit den Keys unter Windows durchführen. Sollte natürlich das gleiche bei rauskommen.


    Wenn ihr die Keys nun mit irgendwas abgleichen wollt, müsst ihr die einzelnen Zeichen in eine Variable schreiben, dann könnt ihr die vergleichen. Wenn ihr dabei Hilfe braucht, ich bin da ;)

  • Bin gerade auf den Thread gestoßen. Hat jemand den PI fertig zur Zeiterfassung per RFID im Einsatz? Hat jemand Lust, sowas gegen Bezahlung zu bauen? Die Daten brauchen lediglich fortlaufend in eine Textdatei geschrieben zu werden. Ablauf ganz simpel: Karte scannen - Anzeige Nummer - Tastendruck für "Kommt" oder "geht" - Piepton - loop.

  • Hallo, ich baue aktuell etwas mit RFID, ist ein sehr umfangreiches Projekt mitlerweile. So etwas zu bauen wie du siehst kann sehr einfach bis sehr schwierig sein, da bräuchte man ein paar mehr Informationen:
    - Mehrere Leseeinheiten die vernetzt sind?
    - Kartentyp? Verschlüsselung?
    - Frequenz? 13.56MHz oder 125kHz?
    - "Anzeige Nummer" ? Ist damit Kartennummer gemeint oder Personalnummer oder ähnliches.
    - "Textdatei", wie wird diese ausgewertet? Datenbank, bzw. externer Zugang gewünscht? (Aus EDV Abteilung z.B. ohne an den Pi zu müssen?)
    - 24/7 , 365Tage im Einsatz?


    Bitte beschreibe das alles ein bisschen genauer, ebenfalls ob das Privat oder in eine Firma soll, drinnen oder draußen... (Zwecks Manipulation o.ä.)


    Bitte erstelle dafür einen neuen Thread und erzähle auch kurz was du suchst. Jemanden der dir hilft oder jemanden der dir das gesamte System, oder ein Teilsystem erstellt. Wenn du das hast, bitte eine kurze PN mit Link vom Thread an mich, dann klinke ich mich da wieder ein. :)

  • Zu dem Problem mit dem Kartenleser, vor kurzem:
    Kann es eventuell sein, dass die USB-ID vom Linux (noch)nicht erkannt wird, und deshalb das Ding nicht (sauber) funktioniert?


    Ich hatte mal von Pearl eine dieser Mikro-Funk-Tastatus-Maus-Kombis gekauft, die unter Windows super lief, unter Linux wurde nur die Maus erkannt, nicht die Tastatur (Das Ding meldete zwei USB-IDs) da die ID für die Tastatur nur im Windows bekannt war.


    Jetzt funktioniert die Kombi auch an Linux-Systemen.

    Selber denken,
    wie kann man nur?

  • So nach langer Zeit wieder mal ein Update.


    Hab mit dem Hersteller des RFID Readers Kontakt gehabt und er hat mir nun einen Reader mit Serieller Schnittstelle geschickt. Mit diesem Reader kann ich die Karten ID richtig auslesen.
    Die ID werden nun in eine bestehende Datenbank geschrieben.


    Bin im Moment dabei das Layout für das Display zu erstellen, doch mit dem Display komme ich noch nicht zurecht. Es handelt sich um das 4D Systems SK-43PT-PI (http://www.4dsystems.com.au/product/uLCD_43PT_PI/)
    Ich frage mich immer wieder wie ich Daten von PRi auf das Display bekommen (Zb Uhrzeit oder Karten ID)
    Kennt sich eventuell jemand hier damit aus ?


    LG

  • Hallo,
    das hört sich dann doch gut an. Habe ja leider auf meine Lösung keine Rückmeldung mehr bekommen, das wäre nämlich auch die ID gewesen ohne einen Gerätetausch ;)


    Wo liegt die Datenbank? Ist die lokal auf dem Pi oder eine im Netz?


    Bezüglich des Displays werde ich mal etwas lesen, aber hast du dir ernsthaft das Display für 145$ gekauft? :s


  • Hallo,
    das hört sich dann doch gut an. Habe ja leider auf meine Lösung keine Rückmeldung mehr bekommen, das wäre nämlich auch die ID gewesen ohne einen Gerätetausch ;)


    Wo liegt die Datenbank? Ist die lokal auf dem Pi oder eine im Netz?


    Bezüglich des Displays werde ich mal etwas lesen, aber hast du dir ernsthaft das Display für 145$ gekauft? :s


    wollte dein programm noch testen habe aber leider die hardware damals schon zurück gesendet gehabt.


    die datenbank liegt im lokalen netzwerk, da diese schon vom letzten zeitterminal vorhanden war.


    das display war vorhanden wurde nicht extra gekauft. ich hätte mich für ein anderes entschieden welches leichter zum verwenden ist. aba ja es hat damals auch um die 150$ gekostet


  • Bin im Moment dabei das Layout für das Display zu erstellen, doch mit dem Display komme ich noch nicht zurecht. Es handelt sich um das 4D Systems SK-43PT-PI (http://www.4dsystems.com.au/product/uLCD_43PT_PI/)
    Ich frage mich immer wieder wie ich Daten von PRi auf das Display bekommen (Zb Uhrzeit oder Karten ID)
    Kennt sich eventuell jemand hier damit aus ?


    Du kennst die Seite http://www.4dsystems.com.au/product/uLCD-43/ ?
    Hier gibt es viel Text, und nach diesem benötigt man eventuell deren IDE....


    Da ist ein beliebiges andere Touch-Display wohl einfacher (und günstiger).
    Z.B. die von Adafruit, die man dann mittels Python vollmüllen kann.

    Selber denken,
    wie kann man nur?

  • Du kennst die Seite http://www.4dsystems.com.au/product/uLCD-43/ ?
    Hier gibt es viel Text, und nach diesem benötigt man eventuell deren IDE....


    Da ist ein beliebiges andere Touch-Display wohl einfacher (und günstiger).
    Z.B. die von Adafruit, die man dann mittels Python vollmüllen kann.


    hi
    ja die ide habe ich bereits und habe damit meine oberfläche gestalltet. muss nur die verknüpfung zwischen display und rpi schaffen ...


    ja ich weiß das ein anders display leichter und günstiger wäre aber leider habe ich dieses und muss damit arbeiten

  • Bitte nicht schlagen, das ich Leichenschänder spiele.


    Wie verbindet ihr euch mit dem PI?
    Direkt per Monitor oder per SSH ?


    Wenn sich der RFID Scanner als HID-Tastenklimper anmeldet, dann dürften seine gescannten codes einfach auf dem Bildschirm (Nicht SSH) auftauchen.


  • Bitte nicht schlagen, das ich Leichenschänder spiele.


    Wie verbindet ihr euch mit dem PI?
    Direkt per Monitor oder per SSH ?


    Wenn sich der RFID Scanner als HID-Tastenklimper anmeldet, dann dürften seine gescannten codes einfach auf dem Bildschirm (Nicht SSH) auftauchen.



    hi
    ich verbinde mich nur per ssh auf das gerät.
    wenn du einen bildschirm anschließt und einen editor oder sonstiges öffnest spuckt das hid gerät die id einfach aus.


    bzw wenn du ein cat /dev/ttyUSB0 bekommst du in der shell auch die ausgabe des readers zu sehen.


    lg daniel