Zugangskontrolle

Aus Nerdberg
Version vom 20. Oktober 2019, 11:13 Uhr von MikeTsenatek (Diskussion | Beiträge) (Frontend: Richtiger Link zum Github)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Unser Türschloss besteht aus einen Banana PI mit Relaisplatine und einem ABUS HomeTec CFA 1000.


ABUS HomeTec CFA 1000

Das ABUS HomeTec CFA 1000 ist ein relativ altes automatisches Türschloss bedienbar mit einem Funksender und auf dem Gerät selber mit zwei Knöpfen.

Alternativ kann man eine Remote Interface Platine anstecken, diese würde dann über ein Rolling Key die gleichen Funktionen auslösen wie über Funk.

Wir haben uns dafür entscheiden, trotz dem Nachteil das wir nur das Schloss entriegeln können aber nicht die Türfalle ziehen können, einfach die Taster mit zwei Relais zu überbrücken und so ein Öffnen bzw. ein Schließen auszulösen.

Banana PI

Wir benutzen die GPIO 17 und 10 des Banana PI M2+. Diese müssen erst "freigeschaltet" werden. Dies geschieht mit folgenden zwei Befehlen:

root@door:/home/pi# echo 17 >/sys/class/gpio/export
root@door:/home/pi# echo 10 >/sys/class/gpio/export

Anschließend müssen diese noch als Output deklariert werden:

root@door:/home/pi# echo out >/sys/class/gpio/gpio17/direction
root@door:/home/pi# echo out >/sys/class/gpio/gpio10/direction

Danach können die bash Scripte open_door und close_door benutzt werden:

root@door:/home/pi# open_door
Opening door.. complete!
root@door:/home/pi# close_door
Closing door.. complete!

Da unsere Mitglieder in der Regel keinen Shellzugang hierzu haben, gibt es mit dem Django Restframework erstellte REST API:

URL Name Beschreibung
/api-token-auth Token Auth User bekommt nach eine Basicauth einen Token. So wird das Password des Users nicht am Endgerät gespeichert
/open Öffnen Öffnet die Tür, speichert dies in einer Log und ändert die Spaceapi
/close Schließen Schließt die Tür, speichert dies in einer Log und ändert die Spaceapi
/status Status Gibt ein JSON zurück mit dem Feld "status", dieser enthält entweder "open" oder "close"
/api-auth/login Login Login über Webbrowser, API kann auch aus dem Browser bedient werden
/api-auth/logout Logout Logout über Webbrowser, API kann auch aus dem Browser bedient werden
/admin/ Administration Adminseite, zum Anlegen von Usern und einsehen der Logs

Die Aktionen open und close rufen die o.g. Scripte auf, die die Relais für 250ms anziehen lassen.

Den Quellcode findet ihr im Github

Frontend

Das Frontend ist mit reactjs erstellt. Es holt sich ein Token und legt diesen im localstorage ab. Es gibt auch ein kleines Easteregg :=)

Auch hier ist der Quellcode im Github