Zugangskontrolle: Unterschied zwischen den Versionen

Aus Nerdberg
Wechseln zu:Navigation, Suche
(Die Seite wurde neu angelegt: „root@door:/home/pi# echo 17 >/sys/class/gpio/export root@door:/home/pi# echo 10 >/sys/class/gpio/export root@door:/home/pi# echo out >/sys/class/gpio/gpio17/di…“)
 
K (→‎Frontend: Richtiger Link zum Github)
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
root@door:/home/pi# echo 17 >/sys/class/gpio/export
Unser Türschloss besteht aus einen Banana PI mit Relaisplatine und einem ABUS HomeTec CFA 1000.
root@door:/home/pi# echo 10 >/sys/class/gpio/export
 
 
== 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:
<pre>root@door:/home/pi# echo 17 >/sys/class/gpio/export
root@door:/home/pi# echo 10 >/sys/class/gpio/export</pre>
Anschließend müssen diese noch als Output deklariert werden: <pre>
root@door:/home/pi# echo out >/sys/class/gpio/gpio17/direction
root@door:/home/pi# echo out >/sys/class/gpio/gpio17/direction
root@door:/home/pi# echo out >/sys/class/gpio/gpio10/direction
root@door:/home/pi# echo out >/sys/class/gpio/gpio10/direction</pre>
 


Danach können die bash Scripte open_door und close_door benutzt werden: <pre>
root@door:/home/pi# open_door
root@door:/home/pi# open_door
Opening door.. complete!
Opening door.. complete!
root@door:/home/pi# close_door
root@door:/home/pi# close_door
Closing door.. complete!
Closing door.. complete!</pre>
 
Da unsere Mitglieder in der Regel keinen Shellzugang hierzu haben, gibt es mit dem Django Restframework erstellte REST API:
 
{| class="wikitable"
|-
! 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 [https://github.com/Nerdbergev/nerdlock-backend 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 [https://github.com/Nerdbergev/nerdlock-client-web Github]

Aktuelle Version vom 20. Oktober 2019, 11:13 Uhr

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