Elektronisches Türschloss (Implementierung)

Diese Seite dokumentiert die Implementierung, Administration etc. des elektronischen Türschlosses.

Zum Thema Bedienung (auf-/zuschließen, Schlüsselvergabe) siehe hier.

Hardware

Das Schloss ist ein 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.

Der RFID Reader ist ein Neuftech EM4100 Reader für 125KHz Token. Quasi jeder Token der den EM4100 Standard verwendet lässt sich benutzen. Die meisten RFID Karten (BVG, Mensa) sind inzwischen 13,56MHz, was aber nicht durch unsere Glastür funktionieren würde.

Software

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 Passwort, Authentifizierung nur via ssh key.

Zur Kommunikation mit dem Schloss wird keyble benutzt.

Um Keys deployen zu können und das System zu ändern gibt es den "pi" user.

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/afra/afra_door

Administration

Einen User Deployen

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
    • Warte auf "Connected to RFID Reader"
    • Halte den Token an den Leser
    • Kopiere die ausgegebene Nummer und den MD5 Token
  • Füge den RFID Token Nummer zu /home/open/rfid_codes.txt hinzu
    • Füge den Code als erstes Wort in einer neuen Zeile hinzu. Weitere Worte werden als Kommentare ignoriert.
  • Lege den Nutzer auf Status Ausrollens des neuen Türschloss an. Der MD5 wert wurde von read_rfid_token.py als zweites Wort ausgegeben

Status der Implementierung

  • Auf-/zuschließen via SSH (done)
  • Zuschließen via Button + Timer (done)
  • Auf-/zuschließen via Buttons am Schloss (done)
  • Aufschließen via RFID Token (done)
  • Status-Abfrage via HTTP (done)
  • Statische IP/Hostname/DNS für das Schloss (done)
  • Sicherheitsschloss einbauen, Inbetriebnahme (done)

Noch zu tun:

  • (?) Zuschließen via RFID?
  • Hübsch machen, besseren Schalter (zum Schließen) anbringen
  • Schalter-Delay reduzieren (halbe Sekunde ist zu lang)
  • Admin-Utils zur einfachen Key-Verwaltung, Backup etc.
Drucken/exportieren