Zutrittssteuerung - Wiegand to FHEM

Begonnen von nugat1, 15 September 2015, 22:43:27

Vorheriges Thema - Nächstes Thema

nugat1

Hallo,

durch "mitlesen" hier im Forum, habe ich bereits schon viel im Bereich Hausautomatisierung bei mir erreicht. Auch die viel zitierte Suchfunktion konnte fast alle meine Problem lösen.  :D
Nur bei meinem aktuellen Projekt, habe ich keine Lösung gefunden.
Ziel ist es einen Fingerprint-Sensor in FHEM so zu integrieren, dass ich auch auswerten kann, wer seinen Finger benutzt bzw. welcher Finger benutzt wird.
Dies hat folgende Vorteile:
- es kann zeitgesteuert Zutritt gewährt werden
- man kann (angelernte) Personen einfach sperren oder temporär zulassen
- ich kann Finger für verschiedene Aufgaben verwenden, z.B.: Zeigefinger Tür öffnen, Mittelfinger Tür verschließen, Ringfinger Licht schalten, ...

Da ich nun für mich eine Lösung gefunden habe, möchte ich das Wissen teilen und bin gern auch für eure Ideen & Verbesserungsvorschläge offen. ;)

Die Auswertung der verschiedenen Finger habe ich auf Basis der Wiegandschnittstelle realisiert. Damit ist es auch möglich diese Lösung auf Codeschlösser oder RFID Leser, welche Wiegand-fähig sind, zu portieren.

Zu meiner Hardware:
- Keymatic für die Tür
- Wiegand-fähigen Fingerprint Sensor - aufgrund der positiven Erfahrungen anderer Forumsmitglieder hab ich mich für den Sebury F2-2 entschieden
- raspberry pi - zur Auswertung Wiegand Signal
- FHEM auf banana pi
- 2x HMLAN mittels vccu
Komponenten sind via Gigabit-LAN verbunden (außer ein HMLAN - der über dLAN)

Software und Verkabelung sind basierend auf folgenden Projekt - PiDoorMan:
http://tonigor.com/pidoorman/
Von dieser Anleitung wurden nur Step 1 und Step 5 benutzt.

Nun hatte ich die Wiegend-ID auf dem Raspberry, sie musste nur noch in FHEM übertragen werden.

Dafür nutze ich einen dummy, der mittel HTTP-GET Befehl gesetzt wird.
Damit ich dies im Code von PiDoorMan machen kann, habe ich diese Aufgabe mittels des libcurl moduls hinzuprogrammiert.
Dazu wurde der Code wie folgt erweitert / verändert:

void printBits()
{
    // Prints out the results
    printf ("Read %d bits\n", bitCount) ; fflush (stdout) ;
printf ("Facility Code: %d\n", facilityCode) ; fflush (stdout) ;
    printf ("TagID: %d\n\n", cardCode) ; fflush (stdout) ;

    // HTTPS
char URL[200];
sprintf(URL, "https://fhem:8089/fhem?cmd=set+Fingerprint+%d", cardCode);

CURL *curl;
CURLcode res;

curl_global_init(CURL_GLOBAL_DEFAULT);

curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, URL);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_easy_setopt(curl, CURLOPT_CAINFO, "/home/pi/fhem.crt");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_USERPWD, "username:password");

/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));

/* always cleanup */
curl_easy_cleanup(curl);
   
}       

return;
}


Compileren muss man es nun mit folgenden Befehl: cc -o wiegand wiegand.c -L/usr/local/lib -lwiringPi -lpthread -lcurl

Wichtig war mir auch das Thema Sicherheit, desshalb HTTPS und User/Password Authentifizierung.
Dafür habe ich auch eine eigene Fhem Website erstellt:


define WEBfingerprint FHEMWEB 8089 global
attr WEBfingerprint HTTPS 1
attr WEBfingerprint basicAuth xxxxxxxxxxxxxxxxxxxxxxxxxx
attr WEBfingerprint allowfrom 192.168.x.x
attr WEBfingerprint allowedCommands set


Gibt es zum Thema Sicherheit von eurer Seite noch Anregungen etwas zu verbessern?


Ausgewertet wird derzeit nur mit einem simplen notify. Hier will ich auf alle Fälle noch mehr machen (wie bereits oben beschrieben)

define notify_Fingerprint notify Fingerprint {\
if($EVENT eq "xxxxxxxx")  { fhem("set keyMatic lock") }\
if($EVENT eq "xxxxxxxy")  { fhem("set keyMatic lock") }\
if($EVENT eq "xxxxxxyy")  { fhem("set keyMatic unlock") }\
if($EVENT eq "xxxxxyyy")  { fhem("set keyMatic unlock") }\
}


Erstaunlicherweise gibt es nach erfolgreicher Authentifizierung am Fingerpint keine Verzögerung bis die keymatic was tut - das passiert gefühlt, trotz dieser vielen beteiligten Komponenten, in Echtzeit.

Ich habe dieses Konstrukt bereits mehrere Wochen am Schreibtisch getestet. Seit dem WE ist es nun im Echt-Betrieb.
Somit fehlt noch die Langzeiterfahrung. :) (Schlüssel habe ich notfalls auch dabei  ;) )

Grüße

Rince

ZitatSomit fehlt noch die Langzeiterfahrung.
Und? Wie funktioniert es?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

nugat1

Hallo,

nach einem Monat Betrieb sind die Erfahrungen nur positiv.  :)
Erfahrungen zur fhem Anbindung:
Bisher hat alles immer funktioniert. Sobald der Fingerprint den jeweiligen Finger positiv erkennt, fängt die Keymatic sofort und ohne jegliche Verzögerung an zu arbeiten.
Ich hatte es in der bisherigen Nutzung nur 2 mal, das es eine Sekunde gedauert hat, bevor was passiert. Wahrscheinlich hatte da der Banana Pi auf dem fhem läuft grad etwas zu tun  ;)

Erfahrungen zum Fingerprint als solcher:
Frauen- und Kinderfinger werden bei kalten Temperaturen erst garnicht als Finger erkannt  :P (Es gibt weder ein positiv noch negativ Signal vom Fingerprint)
-> Aber nach einen kurzen Aufwärmen der Hände durch reinpusten funktioniert es dann problemlos
Ich habe damit übrigens gar kein Problem, meine Finger werden in ca. 80 % beim 1. Mal erkannt, aber so gut wie immer beim 2. Mal.

Ein Nachteil an diesem Konstrukt ist, dass es nicht funktioniert, wenn fhem down ist --> dies ist aber bisher nie eingetreten.

Was ich bisher richtig super finde, das ich halt auch beim Verlassen zuschließen kann.
Und weiterhin bin ich völlig frei, welche anderen Schaltaufgaben ich den verbleibenden Fingern zuweise . :D

Ich werden demnächst noch eine USV einbauen, somit funktioniert das alles auch, falls mal kein Strom da ist.

Rince

Das klingt gut.
Werde wohl ein kleines ESP8266 Evaluationsboard damit beauftragen.

Besonders cool finde ich ja, das man dann schön in fhem Zeitprofile anlegen kann, wer wann Zutritt bekommt. Und das fhem, wenn ich das Haus betrete, schon mal die Kaffemaschine anwerfen wird.

Muss mir jetzt Gedanken machen, wie ich den Sensor außen mit Strom versorge, bzw. wie ich innen effektiv die Leitungen verstecken kann. Lehrrohre sind da wohl keine, und die Wand aufschlitzen ist jetzt auch nicht meins  ;)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

dengbert

Hallo nugat1,
ich bin gerade auf der Suche nach genau der Möglichkeit, die Du bereits realisiert hast.
Mein Vorteil: Ich bin bereits Besitzer des Sebury F2-2 mit Wiegand Protokoll.
Ebenfalls fhem und paspberrys sind mir mehr als geläufig.
Meine Vorstellung ist es, da zwischen meiner fhem und der Haustür einige Meter dazwischen sind,
einen zusätzlichen rasperry zur Auswertung der Wiegand-Daten durchzuführen. Diese dann per WLAN übertragen.

Meine "Noch"-Anfängerfragen:
1) Wie genau hast Du die Zehnerdiode zur Wiegand-Leitung angeschlossen?
Kannst Du davon ein Foto posten? Wo genau wird die D0/D1 Leitung angeschlossen? Am Punkt Breakout-Connector (Bild auf pidoorman)?
2) Step1 ist alles logisch und nachvollziehbar. Aber Step6? Was genau hast Du da gemacht, oder meinst Du mit Step6 die Verarbeitung der Daten in fhem?

Über ein Feedback würde ich mich freuen.
Vielleicht geht die Konstellation bei weiteren Usern dann ja in Serie? ;-)

Gruß dengbert

nugat1

#5
Mittlerweile ist diese Lösung ja schon einige Zeit in Betrieb und es funktioniert immer noch hervorragend und das ohne Ausfälle!! :)
Es ist auch noch eine weitere Keymatic dazugekommen, nun kann ich mit einem Finger die Haustür zuschließen und parallel die Nebeneingangstür der Garage aufschließen und das Garagentor öffnen ;D

@dengbert:
Anbei zwei Bilder des Aufbaus.
Habe die Zenerdiode habe ich in Reihe mit Wiederstand zusammengelötet und das ganze ist mit einer Lüsterklemme zum Fingerprint verbunden. Zwischen der Zenerdiode und dem Wiederstand geht das Kabel zum Raspberry ab. (Dies geht sicherlich um einiges "schöner" aber es funktioniert  ;) )
Oh das mit Step 6 ist ein Tippfehler. Ich meinte Step 5 - run on boot.
Damit funktioniert das alles auch, falls mal kurz der Strom weg war oder der raspberry mal gebootet werden muss.

Eine Herausforderung ist es den ganzen Aufbau gegen einen Stromausfall zu sichern. Habe schon überlegt eine kleine USV hinzustellen, aber Aufgrund des meist hohen Eigenstrombedarfs habe ich das wieder verworfen. Habe jetzt überlegt eine Powerbank zu nehmen und mit einem Step-up Converter die 12v für den Fingerprint rauszuholen.
Vielleicht hat da ja noch jemand eine Idee...

Jan007

Hallo,

erstmal Vielen Dank für die gute Arbeit bis jetzt.

Gibt es da eine etwas genauere Anleitung?
Folgende Probleme der Reihe nach:
- Part C: the C code (http://tonigor.com/pidoorman/) brauch ich das? bzw. was genau muss ich ändern (Damit ich dies im Code von PiDoorMan machen kann, habe ich diese Aufgabe mittels des libcurl moduls hinzuprogrammiert.
Dazu wurde der Code wie folgt erweitert / verändert:)

- Wenn ich ./wiegand ausführe (wenn ich den Punkt weglasse, wie in der Beschreibung steht, geht es nicht)

Wiegand test v0.1
Written for Raspberry Pi
By Ben Kent
11/08/2012

Use standard site code for 26bit numbers (Y/N)?
y

Ready.
Present card:

Unknown format

wird sofort mit Unknown format bestätigt :-(

-was ist  2x HMLAN mittels vccu?

Ich habe seit ca. 1 Woche mit verschieden Einstellungen Versucht den PiDoorMan irgendwie in gang zu bekommen, aber ohne Erfolg. (Hardware 330 Wiederstan und 3,3VZehnerdiode/Raspberry mit aktuellen Raspian steht soweit)

Die Beschreibungen im Netzt sind einfach zu Stichpunkthaltig und wenn man nicht als Profi unterwegs ist, kommt man mit Code-Schnipsel ohne Ziel einfach nicht weiter.

Vielleicht hat jemand Zeit eine Detailliertere Schritt für Schritt Anleitung zu erstellen, wo auch diverse Ordner und Dateinamen erwähnt sind bzw. Beispieldateien oder Bilder.

Vielen Dank für Eure Mühe.

Gruß Jan


dengbert

Hallo Jan,
also ich habe die Kombi Raspi und Fingerprint verworfen.
Habe dafür einen ESP8266 von Olimex mit aufgebautem Relais besorgt, dort das ESP8266.nu Software drauf, Wiegand, Protokoll ausgewählt, Eingänge mit der Zehnerdiodenschaltung angeschlossen, MQTT nach kriwanek Anleitung installiert.
Wichtig war, dass der ESP routiniert, am besten so alle 50 Sekunden, etwas auf dem MQTT sendet, Systemressourcen oder sowas. Ansonsten gibt es einen Disconnect am MQTT Broker. Die Auswirkungen zeigen sich beim Fingerprint lesen.
Wenn eine erfolgreiche Lesung an den MQTT Broker gesendet werden soll, kann diese ins Nirvana gehen. Erst die zweite oder dritte Lesung ist dann erfolgreich an FHEM zugestellt worden.
Mit dem Relais onBoard konnte ich dann die Türentriegelung anstoßen, ebenfalls über MQTT, von FHEM aus.

@nugat1:
Dazu hatte ich mir auch Gedanken gemacht. Nur halte ich einen Stromausfall für sehr unwahrscheinlich im Bezug zur gleichzeitigen Notwendigkeit der elektronischen Türöffnung. Also Notfallkonzept = Schlüssel  ;)

Grüße

Brockmann

Weiß jemand von euch, wie lange das Kabel vom Fingerabdruck-/Kartenleser zum Raspberry Pi maximal sein darf?
Ich habe einen Raspberry Pi in der Nähe der Tür, der ohnehin 24/7 läuft. Aber das Kabel dorthin wäre effektiv vermutlich ca. 10 m lang.
Kann man das machen, ist es zumindest einen Versuch wert oder kann man so eine Länge von vorneherein vergessen?

dengbert

Hallo Brockmann,
sollte kein Problem sein. Ich würde es versuchen.

Brockmann

Kann mir als Elektronik-Laie vielleicht jemand bei der Auswahl behilflich sein?
Ich brauche ja 3V3 Zener-Dioden und 330R-Widerstände.
Jetzt habe ich mal bei reichelt geschaut und da gibt es jeweils mehrere bzw. viele Varianten.

Die Zener-Dioden unterscheiden sich beim Ptot-Wert (0,5 oder 1,3 Watt). Ist das egal oder was ist empfehlenswert?
Bei den Widerständen unterscheidet sich die Nennlast.

Der Physik-Unterricht ist lange her und ich verstehe die physikalischen Zusammenhänger dahinter nicht wirklich, deshalb wäre ich für eine Empfehlung dankbar, mit welchen Bauteilen ich auf der sicheren Seite bin.

dengbert

Also ich habe die 0,5 Watt Zehner Dioden. Bei den Widerständen kannst du auch die kleinsten nehmen.
Bei mir läuft die Schaltung seit über einem Jahr störungsfrei.

Brockmann

Zitat von: dengbert am 04 August 2016, 23:42:50
Also ich habe die 0,5 Watt Zehner Dioden. Bei den Widerständen kannst du auch die kleinsten nehmen.
Bei mir läuft die Schaltung seit über einem Jahr störungsfrei.
Danke!  :)

Benni

Anscheinend gibt es die Seite http://tonigor.com/pidoorman/ nicht mehr :(

Hat da jemand was aktuelles?

Über den Google-Cache lässt sich die Seite zwar noch aufrufen, allerdings fehlen dort die Grafiken/Schaltbilder.


dengbert

Es gibt ja nicht nur Google...
Probier es mal mit archive.org
Gruß dengbert