Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
tuerschloss [2019-01-09 18:48] – [Vor dem Launch noch zu tun] cikotuerschloss [2019-02-12 19:58] – Implementierung und Administration ausgelagert binarydiv
Zeile 1: Zeile 1:
-====== Türschloss (WIP) ======+====== Elektronisches Türschloss ======
  
-Diese Seite dokumentiert das elektronische Türschloss der AfRA.+**-- Work in ProgressInbetriebnahme ist am Freitag, 15.02.2019. --**
  
-===== Funktionen ===== +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.
-  * 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 (tbd)+
  
-===== Benutzen ===== +Diese Seite beschreibt die Bedienung des SchlossesFür Details zu ImplementierungAdministration etc. siehe [[tuerschloss_implementierung|Türschloss (Implementierung)]].
-Wichtig: Das Schloss prüft nur alle 5-10 Sekunden nach neuen Befehlen - dafür halten die Batterien aber auch 1 Jahr (BLE)Es kann also einen Moment dauernbis sich die Tür öffnet.+
  
-==== Tür aufschließen ==== +{{:img_20190117_210636.jpg?200|}}
-Dein SSH-Key muss auf dem Türschloss hinterlegt sein! //(Hier fehlt der Prozess, wer wann Keys bewilligt und wer diese auf dem Türschloss deployt)//+
  
-Verbinde dich mit dem AfRA WLAN und ssh auf open@SCHLOSS_IP (derzeit 172.23.42.114) auf. Achte darauf, den hinterlegten ssh-key zu nutzen (ssh -i PFAD_ZUM_KEY open@SCHLOSS_IP). Das Schloss öffnet sich innerhalb vom 10 Sekunden. 
  
-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 sind, da sonst das System seinen State verliert und sich neu kalibrieren muss).+===== Schlüssel bekommen =====
  
-Sollte sich die Tür nicht öffnen lassenkann ein physischer Key trotzdem die Tür öffnenHier ist eine Liste mit Kontaktdaten zu physischen Keyholdern: +Um einen Schlüssel für die AfRA zu erhaltenwende dich bitte an [[binarydiv@afra-berlin.de|Lexi]] (binaryDiv im [[irc://irc.freenode.net/#afra|IRC]]).
-* Your name here+
  
-==== Tür zuschließen ==== +Es gibt hierbei zwei Arten von elektronischen Schlüsseln für das Schloss: SSH-Keys und RFID-Tokens.
-  * Option 1: Drücke den Button an der Seite des transparenten Kontrollkastens. Eine rote LED leuchtet. 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 2ssh auf close@SCHLOSS_IP 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 öffnen Bitte nutze diese Option nur wenn die Batterien leer sind, da sonst das System seinen State verliert und sich neu kalibrieren muss).+
  
-===== Hardware ===== +  * Für **SSH-Authentifizierung** erzeuge bitte ein SSH-Schlüsselpaar (''ssh-keygen'')Der **Public** Key wird dann auf dem Türschloss hinterlegt.  
-Das Schloss ist ein [[https://www.eq-3.de/produkte/eqiva/bluetooth-smart-tuerschlossantrieb.html|equiva BLUETOOTH® Smart Türschlossantrieb]]+  * Ein **RFID-Token** (oder eine Karte) kannst du von uns bekommenEs sollte sich jedoch auch jedes andere RFID-Token nach dem EM4100-Standard (125kHz) als Schlüssel registrieren lassen.
-Angesteuert wird alles von einem RPI Zero W über Bluetooth Low EnergyDie 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|}} +Gerne kannst du auch beide Varianten nutzen (für mehr Redundanz!).
-{{::schloss_2.jpg?400|}}+
  
-===== Software ===== +Für Notfälle bzwAusfälle des elektronischen Schlosses existieren auch physische Schlüssel. Diese werden jedoch nur an eine //kleine// Anzahl von Mitgliedern vergeben, die z.Bin der Nähe der AfRA wohnen und in Notfällen aufschließen können.
-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 hinterlegtAußerdem gibt es noch den Close-Button-Watcher als systemd daemonDer open/close user haben kein Passwort, Authentifizierung nur via ssh key.+
  
-Zur Kommunikation mit dem Schloss wird [[https://www.npmjs.com/package/keyble|keyble]] benutzt. 
  
-Um Keys deployen zu können und das System zu ändern gibt es den "pi" user. //(Hier fehlt wie wer wann die Keys deployt)//+===== Bedienung =====
  
-Die Verbindung RPI <-Schloss ist mit einem PSK gesichert, welcher als QR Code vorliegtAus 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 er sollte diese bei Implementierung an $Vorstand übergeben)//+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. 
 + 
 + 
 +==== 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 im Space bist und das Schloss auf- oder zuschließen möchtest, benutze die **zwei Buttons**, die sich am Türschloss selbst (weißer Kasten direkt an der Tür) befinden. 
 +Diese reagieren ohne Verzögerung. Der obere Button schließt auf, der untere Button zu. 
 + 
 +Wenn einmal gar nichts mehr geht, z.B. weil die Batterien leer sind, lässt sich das Schloss auch per Hand am Rad öffnen und schließen. Bitte nutze diese Option jedoch **nur**, wenn es notwendig ist, da das System hierdurch seinen State verliert und sich neu kalibrieren muss. 
 + 
 + 
 +===== Status-Abfrage via HTTP ===== 
 + 
 +Innerhalb des WLANs (discord) ist es möglich, über HTTP den aktuellen Status des Türschlosses abzufragen. 
 + 
 +Hierfür reicht ein simpler GET-Request auf http://door:8080, beispielsweise mittels ''curl door:8080''. 
 + 
 +Der HTTP-Server antwortet dann mit ''Door status: //STATUS//'', wobei ''//STATUS//'' einer der folgenden Status-Werte ist: 
 + 
 +  * ''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) 
 + 
 +//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.// 
 + 
 + 
 +===== Implementierung ===== 
 + 
 +Wer sich dafür interessiert, wie das Türschloss funktioniert, oder es gerne nachbauen möchte, findet Details zur Implementierung, Administration etc. unter [[tuerschloss_implementierung|Türschloss (Implementierung)]].
  
-===== Vor dem Launch noch zu tun ===== 
-  * Statische IP/Hostname/DNS für das Schloss 
-  * (Done) Ein Sicherheitsschloss (Schlüssel geht von beiden Seiten gleichzeitig) kaufen 
-    * ciko hat ein Schloss besorgt 
-  * Sicherheitsschloss einbauen 
-  * Bequemeres Key Management 
-  * Ein Prozess, um die physischen Keys umzutauschen 
-  * Ein Prozess, um einen Key zugesprochen zu bekommen und das deployment zu regeln 
-  * Aufhängen der Box mit dem RPI in Türnähe 
Drucken/exportieren