Beiträge von deviloper

    Ich verweise mal nochmal auf Installationsprozess da hab ich eigtl beschrieben, dass bzw wie man sich von DoorPi Web eine lokale Kopie holt, falls du mit dem Pi nicht ans Internet angeschlossen bist. Ansonsten bräuchte ich wie gesagt mal dein trace um zu gucken was ihn stört. Ggf. bei der URL mal den Port (glaub 8080 ist es per default) mit angeben.

    Hm hast du WinSCP? (Da kannst du dann einfacher mit durch die Verzeichnisse gehen) Betreibst du den Pi Headless (also ohne Desktop sozusagen)?

    Du hast da ja erstmal wirklich ein Verzeichnis versucht zu öffnen. Wie hast du es denn genau versucht?

    Normal sollte dir auch ein tracelog File angelegt werden, wenn du doorpi im "Trace"-Modus startest. Etwas mehr vom Output bräuchte ich schon :)

    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.

    Wie im Thread Fingerabdrucksensor bereits besprochen, gab es den Bedarf nach einem Keyboard für einen Fingerabdruck-Sensor. Also anbei eine Anleitung:

    Unterstützt werden unter anderem folgende Sensoren:

    ZhianTec ZFM-20, ZFM-60, ZFM-70, ZFM-100

    GROW R302, R303, R305, R306, R307, R551

    FPM10A


    pyFingerprint installieren (über apt-get)

    Zuerst müsst ihr das PM Codeworks repository hinzufügen:

    Code
    1. ~$ echo "deb http://apt.pm-codeworks.de wheezy main" | sudo tee -a /etc/apt/sources.list
    2. ~$ wget -O - http://apt.pm-codeworks.de/pm-codeworks.de.gpg | sudo apt-key add -

    Nachdem man nun die lokale Repository Liste updated, kann das pyFingerprint Packet installiert werden:

    Code
    1. ~$ sudo apt-get update
    2. ~$ sudo apt-get install python-fingerprint

    Wenn ihr den Sensor über einen Serial/USB-Konverter angeschlossen habt, sollte dieser beim Raspberry Pi unter /dev/ttyUSB0 jetzt ansprechbar sein.


    Fingerabdrücke verwalten

    Wechselt ins Verzeichnis des Paketes

    Code
    1. cd /usr/share/doc/python-fingerprint/examples/

    Dort finden sich ein paar Programme, die mit dem pyFingerprint-Paket mitgeliefert werden.


    • example_enroll.py: Damit lässt sich ein neuer Fingerabdruck auf dem Sensor registrieren (hier bitte die Position notieren!)
    • example_search.py: Damit lässt sich nach einem registrierten Finger suchen und man bekommt dessen Position, falls man diese beim registrieren nicht notiert hat.
    • example_delete.py: Damit lässt sich ein Fingerabdruck wieder vom Sensor löschen


    Keyboard installieren

    Jenachdem wo ihr eure DoorPi installation habt, können die Pfade natürlich abweichen, meist solltet ihr das DoorPi Verzeichnis aber etwa hier finden:

    /usr/local/lib/python2.7/dist-packages/DoorPi2.x/


    Dort wechselt dann in das Verzeichnis doorpi/keyboard/ und legt die Datei from_fingerprint.py mit folgendem Inhalt an:

    Jetzt solltet ihr - nachdem ihr DoorPi neu gestartet habt - ein funktionierendes Keyboard für Fingerabdrucksensoren haben.


    Konfiguration

    Zum einen, müsst ihr euch entscheiden in welchem Modus ihr den Sensor betreiben wollt. Es besteht die Möglichkeit, den Sensor im dauerhaft auszulesen, was beim Testen aber zu Problemen führte oder auf ein Event hin. Als Beispiel für letzteres käme ein Bewegungssensor oder beim ZFM-70 der Capacitiv Touch Sensor (d.h. wenn das Sensorglas berührt wird) in Betracht.

    Falls ihr keinen Dauerbetrieb wollt, müsst ihr einen Output-Pin für das Keyboard definieren. Über diesen und die Aktion "out" könnt ihr den Sensor dann für eine bestimmte Zeit anschalten. Wenn kein Output-Pin definiert ist, geht der Sensor in den Dauerbetrieb.


    Beispiel für eine Konfiguration (hier nicht im Dauerbetrieb) (Kommentarzeilen bitte entfernen, sonst wird DoorPi meckern)

    Zusätzlich kann noch die Baudrate und das Passwort sowie die Adresse des Sensors definiert werden.


    Wenn man nun, wie eingangs erwähnt z.B. auf einen Bewegungsmelder reagieren will (onboardpins muss natürlich als Keyboard, zB. piface registriert sein):

    Code
    1. # Input 0 als Bewegungsmelder zuweisen und als solchen (input) definieren
    2. [onboardpins_InputPins]
    3. 0 = Bewegungsmelder
    4. # auf Bewegung für 30sec den Fingerabdrucksensor anschalten
    5. [onboardpins_InputPins.Bewegungsmelder]
    6. 10 = out:FingerprintAn,30

    Zusätzlich sind noch die Events OnFingerprintFoundKnown und OnFingerprintFoundUnknown registiert, falls egal ist um welchen Finger es sich jetzt genau handelt bzw. falls man jemanden darauf hinweisen möchte, dass ihm der Zutritt verwehrt wird.


    Eine Integration in die Weboberfläche habe ich noch nicht vorgenommen, könnt ihr aber gerne beitragen :)

    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

    M4ce1 : Ist der Weißabgleich echt so bescheiden :O Nja wie dem auch sei. Hast du den Fehler nur, wenn du per ActiveX Plugin drauf zugreifst? Dann auch bei dir - guck dir mal die Steuerung über URLs an...

    Und weiter wird auch beschrieben, wie man IP, HTTP Port und was nicht alles setzt. (WAN_IP=192.168.0.100 z.B.)

    Ansonsten konfigurieren geht auch per https://download.acti.com/?id=528 ohne Active X Plugin ;) aber die Infos sind alle unter dem Link zu finden, den ich dir schon gegeben habe. (Support Seite von Acti, wie zu erwarten...) Da ist auch ein Firmware-Update zu finden. Ggf. kann danach auf diese ActivX Komponente verzichtet werden, weiß ich aber nicht...


    Und das Menü solltest du bekommen wenn du auf das Setup-Icon klickst... (S. Quick Install Guide....)


    Die ACM Serie von Acti unterstütz nur MJPEG und MPEG4 Streams (s. Support-Seite).


    Wie du das Protokoll auswählst (RTP, RSTP, HTTP, etc.) und wie der Stream dann heißt:

    https://download.acti.com/?id=523


    M4ce1 : sicher, dass es nicht GET_STREAM statt SNAPSHOT für nen Videostream ist?

    Hm du hast da ja eigtl einfach den Code von pigpio kopiert ;) Der Code von der Lib die ich dir gepostet habe oder der Code von https://elektronika327.blogspo…ry-pi-python-wiegand.html sind da sinnvoller. Beide haben einen TIMEOUT nachdem sie schauen ob ein sinnvoller Tag gelesen wurde und dann ggf eine Funktion aufrufen könnten. Schau dir evtl. mal den Code von from_pn532 oder from_fingerprint (https://github.com/deviloper-l…board/from_fingerprint.py) an. Beide Beispiele zeigen dir, wie man es anstellt, dass man in der Config die Möglichkeit bekommt auf einen spezifischen Input zu reagieren.


    Wie in der Lib die ich anfangs nannte erwähnt wird, ist Python aber evtl von der Performance nicht ideal (deswegen die alternative Lösung mit Treiber)

    Was meinst du mit übergeben? Du hast bei DoorPi ja Keyboards alias Eingabe/Ausgabe und Aktions. Sinnig wäre es, wenn du aus deinem "Einlesen" ein Keyboard machst und du dann in der Config entsprechend Handler für deine eingelesenen Werte hinterlegst. Da könntest du dann zB auch die Weitergabe an dein Display machen. Sonst zeig doch mal wie du es jetzt momentan einliest.

    Etwas ungünstig direkt nicht wirklich was zu senden. Ne erfolgreiche Meldung zB.

    C: ESP8266
    1. //Doorpi device
    2. server.on("/dopirec", handle_doorpirec);
    3. // doorpi handle 
    4. void handle_doorpirec()
    5. {
    6. Serial.println("Botschaft von Doorpi");
    7. server.send(200, "text/plain", "doorpirec ok")
    8. }

    Timeout für den Aufruf ist 1 Sekunde, das reicht aber bei dir? Eigtl. sollte urlopen eine URLError oder HTTP Exception werfen, wenn er damit unzufrieden ist. (Was er ja auch aus der Konsole macht). Solange der mit deinem "Webserver" unzufrieden ist, wird das nicht funktionieren. Wundert mich nur, dass du keinen Aufruf auf der Gegenseite bekommst weil fürs meckern bei der Antwort muss er diese ja bekommen haben.

    Hm dein Aufruf kommt hin, die Parameter die er bekommt stimmen auch. Einen Fehler wirft er auch nicht. Merkwürdig. Kannst du mal ne Python Konsole öffnen und das eingeben:

    Python: Konsole
    1. import urllib2
    2. response = urllib2.urlopen('http://192.168.178.22/dopirec')
    3. print "Response:", response
    4. print "The URL is: ", response.geturl()
    5. print "response code: ", response.code
    6. print "headers: ", response.info()