from_wiegand.py

    • Offizieller Beitrag

    Da hier immer mal wieder das Thema Wiegand aufkam, habe ich mal eine Python-Implementierung angefangen. Da ich selbst aber keinen Sensor habe, der dieses Protokoll unterstützt, kann ich es momentan nicht testen. Gerne könnt ihr auch posten, wenn ihr Verbesserungen habt oder Fehler findet. Dafür hab ich den Code auch weitgehend dokumentiert ... Leider gibt es einige Varianten des Wiegand - Protokolls (26bit ist das original), da es Limitierungen der max. UIDs gab. Ein paar davon hab ich implementiert.


    Ein "funktioniert nicht" werd ich aber nicht beantworten.

    • Offizieller Beitrag

    Du müsstest eine from_wiegand.py im Keyboard Verzeichnis anlegen und den Code darein kopieren.


    In der Konfigurationsdatei dann:

    Code
    [keyboards]
    meinleser = wiegand
    
    [meinleser_keyboard]
    data0 = PinNummer1
    data1 = PinNummer2
    mode = board 
    
    [meinleser_InputPins]
    Input = action

    PinNummer jeweils entsprechend die GPIOs wo die Datenleitungen dran hängen. Bei mode die Pinnummerierung (wenn du auch das GPIO Keyboard nutzt sollten beide denk ich den selben Modus nutzen). Input entsprechend das was du bei neuer Eingabe an Zeichenfolge erwartest (im Debug-Modus sollte er dir aber auch Ausgeben was er gerade gelesen hat) und action dann was gemacht werden soll. Das ist ja wie bei den anderen Keyboards.

  • Hi funktioniert auf anhieb leider nicht.


    ich habe das ganze da einebaut

    root@turkinkel:/usr/local/lib/python2.7/dist-packages/DoorPi-2.5.1-py2.7.egg/doorpi/keyboard# ls -l

    -rw-r--r-- 1 root staff 4091 Mär 22 01:43 AbstractBaseClass.py

    .....

    -rw-r--r-- 1 root staff 7642 Mär 30 18:59 from_wiegand.py

    -rw-r--r-- 1 root staff 81 Mär 22 01:43 __init__.py

    -rw-r--r-- 1 root staff 249 Mär 22 01:43 __init__.pyc

    -rw-r--r-- 1 root staff 5965 Mär 22 01:43 KeyboardInterface.py

    -rw-r--r-- 1 root staff 6982 Mär 22 01:43 KeyboardInterface.pyc


    Mit der doorpi.ini

    • Offizieller Beitrag

    Also /usr/local/lib/python2.7/dist-packages/DoorPi-2.5.1-py2.7.egg/doorpi/keyboard/from_wiegand.py müsste hinkommen. Könntest du DoorPi einmal mit debug statt trace starten? Scheint fast noch ein Syntaxfehler zu sein, das er so früh rausfliegt (also bevor er die Config liest).


    meinleser_InputPins müsstest du noch an deine Situation anpassen (jenachdem was an Input kommen soll und als Aktion wolltest du wahrscheinlich out nutzen, die du auch angeben musst. (Input = out: klingel_g,1,0,3)

  • Ich habe das jetzt nochmal versucht hier die Ausgaben

    für

    [meinleser_InputPins]

    123456 = call:0151123456789

    kommt die Meldung

    Exception NameError: Channel must be an integer or list/tuple of integers




    für

    [meinleser_InputPins]

    test = call:0151123456789

    bekomme ich die Meldung

    Exception NameError: invalid literal for int() with base 10: 'test'


  • Fehler ist jetzt weg DoorPi startet auch ganz brav. Aber ich sehe nix im log das es etwas gelesen hätte.

    Vielleicht siehst ja wer mehr.

    Der Wiegand 26 Leser funktioniert ohne probleme wenn ich ihn uber mein C Script abfrage da ich da die gleichen GPIOs verwende sollte der anschluss auch passen.

    doorpi.txt

  • Hi ja nach dem starten habe ich einen chip ein paar mal an den leser gehalten. Der hat den Chip erkannt und nachdem nichts kam hab ich den DoorPi wieder beendet damit ich ein sauberes log abziehen kann.

  • Hi also ich hab es jetzt mal mit der neuerung auf verschiedenen Pins ausprobiert aber nicht im log zu sehen. Ich habe auch mal versucht die Pins "von Hand" auf GND zu ziehen auch nichts. Mir scheint als könnte der nicht auf die GPIO's zugreifen. Kann da noch irgendetwas sein?

    Sobald ich den Leser an die Pins mit dem C-Script hänge sehe ich die IDs.

    Ich hab jetzt mal alles aus der DoorPi.ini rausgeworfen was man nicht braucht hat aber nichts gebracht

  • ich habe heute noch ein wenig rumgespielt.

    Beim starten von DoorPi wird from_wiegand.py aufgerufen und abgearbeitet. Ich habe mir mal den status der übergeben GPIOs augeben lassen und wenn ich sie am Leser habe zeigen sie Hi und wenn ich sie beim starten auf GND lege bekomme ich die Meldung LOW also funktioniert der Zugriff auf die GPIOs. Was jetzt passieren müsste egal ob ich den Leser betätige oder die Pins von hand auf GND lege ist das ich eine Meldung aus einer der Interrupt Funktionen sehen sollte. Das passiert aber schon nicht. Ist es möglich das DoorPi aus irgendwelchen Gründen kien Interrups von GPIOs verarbeiten kann?