Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tuerschloss [2019-01-17 22:39] – [Tür zuschließen] cikotuerschloss [2022-02-22 17:34] (aktuell) – [Schlüssel bekommen] zotan
Zeile 1: Zeile 1:
-====== Türschloss (WIP) ======+====== Elektronisches Türschloss ======
  
-Diese Seite dokumentiert das elektronische Türschloss der AfRA.+Die Eingangstür der AfRA verfügt über ein elektronisches Türschloss, welches mittels SSH-Public-Key-Authentifizierung oder RFID-Token geöffnet werden kann.
  
-===== Funktionen ===== +Diese Seite beschreibt die Bedienung des Schlosses. Für Details zu Implementierung, Administration etc. siehe [[tuerschloss_implementierung|Türschloss (Implementierung)]].
-  * Auf/Zuschließen der AfRA via SSH (done) +
-  * Zuschließen der AfRA via Button + Timer (done) +
-  * Auf/Zuschließen via Buttons am Schloss (done) +
-  * Aufschließen der AfRA via RFID Token (done)+
  
-===== Einen Key bekommen ===== +{{:img_20190117_210636.jpg?200|}} 
-Wenn du Member bist und bereits einen Türschlüssel hast, oder einen Türschlüssel möchtest, wende dich bitte an LexiLexi deployed deinen SSH-key auf dem SchlossAlternativ kannst du zusätzlich einen RFID Token oder eine RFID Karte bekommen.+ 
 + 
 +===== Schlüssel bekommen ===== 
 + 
 +Um einen Schlüssel für die AfRA zu erhalten, wende dich bitte an das monatliche [[plenum|Plenum]]Für mehr details, siehe [[Infos für Mitglieder#Schlüssel]] 
 + 
 +Es gibt hierbei zwei Arten von elektronischen Schlüsseln für das Schloss: SSH-Keys und RFID-Tokens. 
 + 
 +  * Für **SSH-Authentifizierung** erzeuge bitte ein SSH-Schlüsselpaar (''ssh-keygen''). Der **Public** Key wird dann auf dem Türschloss hinterlegt 
 +  * Ein **RFID-Token** (oder eine Karte) kannst du von uns bekommen. Es sollte sich jedoch auch jedes andere RFID-Token nach dem EM4100-Standard (125kHz) als Schlüssel registrieren lassen. 
 + 
 +Gerne kannst du auch beide Varianten nutzen (für mehr Redundanz!). 
 + 
 +Für Notfälle bzw. Ausfälle des elektronischen Schlosses existieren auch physische Schlüssel. Diese werden jedoch nur an eine //kleine// Anzahl von Mitgliedern vergeben, die z.B. in der Nähe der AfRA wohnen und in Notfällen aufschließen können. 
 + 
 + 
 +===== Bedienung =====
  
-===== Benutzen ===== 
 Wichtig: Das Schloss prüft nur alle 2-5 Sekunden nach neuen Befehlen - dafür halten die Batterien aber auch 1 Jahr (BLE). Es kann also einen Moment dauern, bis sich die Tür öffnet. Wichtig: Das Schloss prüft nur alle 2-5 Sekunden nach neuen Befehlen - dafür halten die Batterien aber auch 1 Jahr (BLE). Es kann also einen Moment dauern, bis sich die Tür öffnet.
  
-==== Tür aufschließen ==== 
-Verbinde dich mit dem AfRA WLAN und ssh auf open@172.23.42.114 auf. Achte darauf, den hinterlegten ssh-key zu nutzen (ssh -i PFAD_ZUM_KEY open@172.23.42.114). Das Schloss öffnet sich innerhalb vom 10 Sekunden. 
  
-Alternativ kannst du dein RFID Token verwenden. Der Reader ist hinter der Glastür eingebaut (schwarze Fläche mit rot-leuchtender LED). Halte einfach deinen Token oder deine Karte gegen den Leser. Du hörst einen Piep und der Leser leuchtet Grün. Das Schloss sollte jetzt öffnen.+==== Aufschließen (beim Betreten der AfRA) ==== 
 + 
 +Um via **SSH** aufzuschließen, verbinde dich zunächst mit dem AfRA-WLAN (discord). \\ 
 +Verbinde dich dann mit ''ssh open@door'' zum Türschloss. Achte darauf, den hinterlegten SSH-Key zu nutzen (''ssh -i PFAD_ZUM_KEY open@door''). \\ 
 +Das Schloss öffnet sich innerhalb von 10 Sekunden. 
 + 
 +Um via **RFID** aufzuschließen, halte dein RFID-Token oder deine RFID-Karte gegen den RFID-Reader
 +Dieser ist hinter der Glastür eingebaut (schwarze Fläche mit rot-leuchtender LED). \\ 
 +Du hörst einen Piep-Ton und der Leser leuchtet Grün. Das Schloss sollte jetzt öffnen. 
 + 
 +Sollte sich die Tür nicht öffnen lassen, kann ein physischer Key trotzdem die Tür öffnen. Hier ist eine Liste mit Kontaktdaten zu physischen Keyholdern: [Link] FIXME 
 + 
 + 
 +==== Zuschließen (beim Verlassen der AfRA) ==== 
 + 
 +Wenn du als Letztes die AfRA verlässt, stell bitte sicher, dass du die Tür zuschließt. Beachte bitte außerdem die Hinweise im [[shutdown|Shutdown-Protokoll]]. 
 + 
 +Um die Tür zu verschließen, drücke den **Button an der Seite des transparenten Kontrollkastens** (siehe Fotos unten). Die rote LED im Kasten fängt an zu blinken. \\ 
 +Ziehe die Tür hinter dir zu. Nach ca. **10 Sekunden** schließt das Schloss selbstständig ab. Warte solange und prüfe dann, ob die Tür **wirklich** zu ist! 
 + 
 +Alternativ kannst du die Tür auch mit deinem **SSH-Schlüssel** zuschließen: ''ssh -i PFAD_ZUM_KEY close@door'' 
 + 
 +Wenn sich die Tür mal nicht abschließen lässt, du aber gehen möchtest, reboote einmal den Raspberry Pi im Kontrollkasten (Stecker raus, Stecker rein). 
 +Wenn das immer noch nicht funktioniert, nutze den **Backup-Schlüssel** (hängt oben an der Innentür) um zuzuschließen. 
 +**Bitte informiere die Mitglieder über die Mailingliste**, dass du die Tür manuell zugeschlossen hast, und bring den Schlüssel so bald wie möglich zurück! 
 + 
 + 
 +==== Bedienung des Schlosses innerhalb der AfRA ====
  
-Wenn du bereits im space bist, kannst du auch einfach den "Öffnen" Knopf auf dem Türschloss drücken. Dieser regiert sofort. Notfalls kannst du das Schloss per Hand am Rad öffnen Bitte nutze diese Option nur wenn die Batterien leer sindda sonst das System seinen State verliert und sich neu kalibrieren muss).+Wenn du im Space bist und das Schloss aufoder zuschließen möchtest, benutze die **zwei Buttons**die sich am Türschloss selbst (weißer Kasten direkt an der Türbefinden. 
 +Diese reagieren ohne Verzögerung. Der obere Button schließt auf, der untere Button zu.
  
-Sollte sich die Tür nicht öffnen lassenkann ein physischer Key trotzdem die Tür öffnen. Hier ist eine Liste mit Kontaktdaten zu physischen Keyholdern: +Wenn einmal gar nichts mehr gehtz.B. weil die Batterien leer sind, lässt sich das Schloss auch per Hand am Rad öffnen und schließenBitte nutze diese Option jedoch **nur**, wenn es notwendig ist, da das System hierdurch seinen State verliert und sich neu kalibrieren muss.
-Your name here+
  
-==== Tür zuschließen ==== 
-  * Option 1: Drücke den Button an der Seite des transparenten Kontrollkastens. Eine rote LED blinkt im Kasten. Ziehe die Tür hinter dir zu. Nach ca 10 Sekunden schließt das Schloss selbstständig ab. Prüfe ob die Tür wirklich zu ist! 
-  * Option 2: ssh auf close@door mit deinem hinterlegten Key.  
-  * Option 3: Wenn du im space bist, kannst du auch einfach den "Schließen" Knopf auf dem Türschloss drücken. Dieser regiert sofort. Notfalls kannst du das Schloss per Hand am Rad schließen - Bitte nutze diese Option nur wenn die Batterien leer sind, da sonst das System seinen State verliert und sich neu kalibrieren muss). 
  
-===== Hardware ===== +===== Status-Abfrage via HTTP =====
-Das Schloss ist ein [[https://www.eq-3.de/produkte/eqiva/bluetooth-smart-tuerschlossantrieb.html|equiva BLUETOOTH® Smart Türschlossantrieb]]. +
-Angesteuert wird alles von einem RPI Zero W über Bluetooth Low Energy. Die Hardware ist in einer transparenten Box verbaut. Die Box bekommt einmal 12V und bucht sich via WLAN ins AfRA Netz ein.+
  
-{{:projekte:schloss.jpg?400|}} +Innerhalb des WLANs (discord) ist es möglich, über HTTP den aktuellen Status des Türschlosses abzufragen.
-{{::schloss_2.jpg?400|}}+
  
-Der RFID Reader ist ein [[https://www.amazon.de/dp/B018OYOR3E|Neuftech EM4100 Reader]] für 125KHz Token. Quasi jeder Token der den EM4100 Standard verwendet lässt sich benutzen. Die meisten RFID Karten (BVGMensa) sind inzwischen 13,56MHz, was aber nicht durch unsere Glastür funktionieren würde.+Hierfür reicht ein simpler GET-Request auf http://door:8080beispielsweise mittels ''curl door:8080''.
  
-===== Software ===== +Der HTTP-Server antwortet dann mit ''Door status: //STATUS//''wobei ''//STATUS//'' einer der folgenden Status-Werte ist:
-Angesteuert wird das Schloss von Python-Skripten (/opt/afra_door/*.py) auf dem RPI. Diese sind für den open/close user als login-shell hinterlegt. Außerdem gibt es noch den Close-Button-Watcher als systemd daemon. Der open/close user haben kein PasswortAuthentifizierung nur via ssh key.+
  
-Zur Kommunikation mit dem Schloss wird [[https://www.npmjs.com/package/keyble|keyble]] benutzt.+  * ''UNKNOWN''Türstatus ist unbekannt 
 +  * ''LOCKED'': Tür ist zugeschlossen 
 +  * ''UNLOCKED'': Tür ist aufgeschlossen 
 +  * ''MOVING'': Schloss dreht sich in diesem Moment von einer Stellung zur anderen 
 +  * <del>''OPENED''</del>: (dieser Status existiert laut Spezifikation, sollte bei uns aber nicht auftreten, da "aufgeschlossen" und "offen" bei unserer Tür dasselbe sind)
  
-Um Keys deployen zu können und das System zu ändern gibt es den "pi" user.+//Anmerkung: Es wäre naheliegend, aus dem Türschloss-Status den Space-Status (SpaceAPI, Schlosssymbol auf Startseite, IRC-Bot) abzuleiten. 
 +Dies ist jedoch aus mehreren Gründen explizit **nicht** gewünscht. Türschloss und Space-Status sind unabhängig voneinander. Sinn dieser Status-Abfrage ist beispielsweise eine space-interne Steuerung von Geräten, die nur dann angeschaltet sein sollen, wenn jemand da ist, z.B. Heizungsthermostat, Info-Displays, etc.//
  
-Die Verbindung RPI <-> Schloss ist mit einem PSK gesichert, welcher als QR Code vorliegt. Aus dem PSK leitet sich ein user-key ab. Der einzige user-key ist aktuell auf dem RPI hinterlegt. Die PSKs liegen derzeit bei ciko (und werden an den Vorstand übergeben). 
  
-Die aktuelle Software findet sich unter [[https://github.com/c1ko/afra_door]]+===== Implementierung =====
  
-===== Einen User Deployen ===== +Wer sich dafür interessiert, wie das Türschloss funktioniert, oder es gerne nachbauen möchte, findet Details zur Implementierung, Administration etcunter [[tuerschloss_implementierung|Türschloss (Implementierung)]].
-Um einen neuen User zu deployen/löschen: +
-  * Logge dich mit dem user "pi" auf dem Schloss ein +
-  * Füge den ssh key zu ///home/open/.ssh/authorized_keys// und ///home/close/.ssh/authorized_keys// hinzu +
-  * Lese den RFID Token mit ///home/pi/utils/read_rfid_token.py// aus +
-    * Starte das Script +
-    * Halte den Token an den Leser +
-    * Kopiere die ausgegebene Nummer +
-  * Füge den RFID Token zu ///home/open/rfid_codes.txt// hinzu +
-    * Füge den Code als erstes Wort in einer neuen Zeile hinzuWeitere Worte werden als Kommentare ignoriert.+
  
 +Das Schloss wurde am 15.02.2019 in Betrieb genommen.
  
-===== Vor dem Launch noch zu tun ===== 
-  * Statische IP/Hostname/DNS für das Schloss 
-  * Sicherheitsschloss einbauen 
Drucken/exportieren