​Fingerabdrucksensor

    • Offizieller Beitrag

    Sowohl Hardware-Anschluss, als auch Integration in DoorPi sollten recht einfach werden.

    For test purpose:

    Code
    Step 1: Connect the TX pin of the fingerprint GT511C3 to RX in the GPIO
    Step 2: Connect the RX pin of the fingerprint GT511C3 to TX in the GPIO
    Step 3: Connect the VCC pin of the fingerprint GTC511C3 to VCC 3,3 in GPIO
    Step 4: Connect the Ground pin of fingerprint GT511C3 to ground pin in GPIO

    Die passende Klasse für Python ist auch gleich dort zu finden:
    https://github.com/QuickGroup/pyGT511C3/blob/master/FPS.py


    Ein passendes Keyboard kann ich Dir dann zusammenbauen, wenn wirklich Bedarf besteht.

  • Hallo zusammen.
    Ich nutze schon eit einem Jahr erfolgreich den Fingerscanner von Adafruit um die Türe zu öffnen. Als Controller nutze ich einen Arduino, der über ein Relais meine Tür freigibt. Im zuge der Vereinfachung der Systeme würde ich gerne den Fingeleser auch auf dem Raspi betreiben. Da DoorPi meine Tür eh schon bedient, wollte ich mal anfragen, ob ws eine Möglichkeit gibt, diesen mittels Keyboard gleich zu integrieren? Für den Fingeleser hat Bastian Raschke eine Python Library geschrieben. Leider bin ich noch ein Jung-Pythoner, darum mal die Frage an euch Profis, wie ichdas am schlausten angehe.


    Vielen Dank für eure Feedbacks.

  • Sowohl Hardware-Anschluss, als auch Integration in DoorPi sollten recht einfach werden.

    Die passende Klasse für Python ist auch gleich dort zu finden:https://github.com/QuickGroup/pyGT511C3/blob/master/FPS.py


    Ein passendes Keyboard kann ich Dir dann zusammenbauen, wenn wirklich Bedarf besteht.

    Hallo motom001,
    hast du evtl. schon an einem Keyboard für Fingerprints gearbeitet? Bei mir schlägt das Thema aktuell auch auf. Allerdings habe ich auch den von Adafruit

  • Hallo,
    ich hätte auch Interesse an einer Umsetzung.
    ich habe mir den Sensor mal kommen lassen und überlege meinen Ibutton damit zu ersetzen. Hatte zunächst an eine Arduino umsetzung gedacht aber direkt an den PI wäre natürlich die beste Lösung.


    ich habe den
    GT-521F32

    • Offizieller Beitrag

    Habs euch mal grob mit der pyFingerprint-Library zusammengesetzt. Ich habe aber selbst weder einen der unterstützten Sensoren noch hab ich es getestet. Kann also sein, dass da Syntax und/oder andere Fehler drin sind.


    1. pyFingerprint - Library installieren: https://github.com/bastianrasc…fingerprint/#installation

    2. Fingerabdrücke registieren: https://github.com/bastianrasc…t/#how-to-use-the-library 

    3. /usr/local/lib/python2.7/dist-packages/doorpi/keyboard/from_fingerprint.py anlegen und folgenden Inhalt einfügen:


    6 Mal editiert, zuletzt von deviloper () aus folgendem Grund: 1. Ein '"' zuviel. 2. OnFingerFoundKnown-Event auslösen, sobald ein bekannter Finger erkannt wurde nicht nur, wenn für diesen auch ein Event hinterlegt ist. 3. Code kommentiert und accuracy-score hinzugefügt. 4. Danke an @sgaechter - bzgl schebang & ')' in Zeile 81 5. Leerzeichen entfernt, unnötig Bibliothek entfernt, sauberes Ende des Threads eingeführt (innere while blockte den Thread bis zu neuer Eingabe)

  • Hi developer,

    vielen Dank für deine Mühe.

    Das würde ich gerne heute Abend oder Morgen testen.

    Damit ich gut vorbereitet bin habe ich noch Fragen.

    Die py Datei kopiere ich in /usr/local/lib/python2.7/dist-packages/doorpi/keyboard/ ?

    Aber wie spreche ich das keyboard in der doorpi.ini dann richtig an?



    [keyboards]

    virtual = fingerprint


    Stimmt das? Wenn ja, wie geht es dann weiter?

    • Offizieller Beitrag

    Ich hab es im Beitrag hinzugefügt.


    Das Keyboard verhält sich wie das für PN532/RM6300. Es läuft in einer Endlosschleife, bis DoorPi beendet wurde. Darin wird immer wieder auf einen neuen Finger gewartet.

    Wenn eine Finger gefunden wurde, wird nach diesem unter den Registrierten gesucht. Ist er dort vorhanden und eindeutig als dieser identifiziert (Variable security) wird zunächst OnFoundKnown ausgelöst und dann, falls registriert, für diesen Finger hinterlegte Events (OnKeyDown/Up/Press ) ausgelöst. Die Pin-Nummer ist hierbei jetzt die Position des Fingerabdrucks in der (auf dem Sensor) hinterlegten Datenbank. (Die in der pyFingerprint enthaltene https://github.com/bastianrasc…xamples/example_search.py kann dir die ausgeben)


    Und dann in der Config

  • Hallo deviloper .


    Danke für deine Arbeit. Du hast mir mein fehlendes Puzzleteil zugespielt.

    In deinem Keyboard ist noch ein Syntaxfehler drin: In Zeile 81 hast du eine schliessende Klammer zuviel und das Shebang am Anfang fehlt, damit keine Codierungsfehler auftreten.:

    Code
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    Bei mir sieht die funktionierende Config-Section so aus:

    Code
    [fpreader_InputPins]
    1 = sleep:0
    2 = sleep:0
    
    [fpreader_keyboard]
    port = /dev/ttyUSB0 # hier ist in deinem Beispiel der falsche Keyname angegeben
    security = 80
    
    [keyboards]
    fpreader = fingerprint

    So habe ich das Keyboard dann ans Laufen gekriegt.


    Vielen Dank für deine Arbeit. Da dran habe ich über ein Jahr geknobelt und habe es nie hin gepriegt - jetzt weiss ich auch, wo mein Denkfehler lag :/


    Ich würde vorschlagen, ich teste eine Woche und anschliessend kannst du ja einen pull request zum DoorPi Repository machen, damit Thomas es in den MASTER-Zweig aufnehmen kann.


    Gruss

    Sven

    • Offizieller Beitrag

    Danke fürs korrigieren. Python ist echt ne komische Sprache :O Komm eigtl von C++, da braucht es sowas nicht. Und diese 'undefinierten' Scopes.. (bzw. durchs einrücken... )


    Klingt gut wobei ich gar nicht weiß ob motom001 pull requests noch zulässt.

    M4ce1 testet das Keyboard gerade auch.


    Beim Code müsste man nochmal überlegen, ob die Zuweisung des last-key evtl nur erfolgen soll, falls es ein zutreffender Finger ist und nicht generell bei jedem Finger.

    • Offizieller Beitrag

    M4ce1 meinte jetzt, dass es ggf. schöner wäre nur bei Bedarf den Sensor zu aktivieren. Wenn ich motom001 Struktur richtig verstehe, wäre das eher eine Aktion statt ein Keyboard?

    So wäre eine Beispielimplementierung dann als Action. Das dann aber anstelle von dem Keyboard, da ich die Events recycled habe.

    Die Parameter sind alle optional, da defaults im Skript hinterlegt sind.


    Ausgelöst wird das ganze z.B.: (timeout 30 Sekunden)

    Code: config
    10 = await_fingerprint:30
    • Offizieller Beitrag

    Das sieht ja ziemlich nach einem Relabel vom GROW R503 aus (https://de.aliexpress.com/item/33053655412.html). Der R503 und andere Sensoren des Herstellers, die alle ähnlich leicht in eine Frontplatte integriert werden können, sollten von der pyFingerprint unterstützt werden. Sollte, da r503 nicht explizit aufgelistet wird.


    Die Implementierung fürs Keyboard sieht allerdings mittlerweile so aus: https://github.com/deviloper-l…board/from_fingerprint.py