Zugangskontrolle
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