Sphinx: Unterschied zwischen den Versionen

Aus Hacksaar Wiki
Zur Navigation springen Zur Suche springen
Zeile 4: Zeile 4:
  
 
== Funktion ==
 
== Funktion ==
Die Sphinx hat in unserem WLAN die IP 222 und den Hostnamen "sphinx". Sie hängt nur im Mitgliedernetz, welches nicht aus dem 5GHz WLAN erreichbar ist! Wer einen Account hat, kann per SSH darauf zugreifen und wird von der TyShell (Tür Shell, in Python geschrieben) begrüßt. Die wichtigsten Kommandos sind
+
Die Sphinx hat in unserem Mitgliedernetz die IP 222 und den Hostnamen "sphinx". Sie hängt nur im Mitgliedernetz, welches nicht aus dem 5GHz WLAN erreichbar ist! Wer einen Account hat, kann per SSH darauf zugreifen und wird von der TyShell (Tür Shell, in Python geschrieben) begrüßt. Die wichtigsten Kommandos sind
  
 
*buzz: Summer an der Haustür betätigen
 
*buzz: Summer an der Haustür betätigen
Zeile 35: Zeile 35:
  
 
== Aufbau des Türsystems ==
 
== Aufbau des Türsystems ==
Das Herzstück der Sphinx bildet das elektronische Schließsystem Abus HomeTec CFA 1000. Dieses bietet Pins, die wir zum Öffnen und Schließen ansteuern können. Jochen hat dazu eine Schaltung entworfen, die Taster zum Schalten und eine stabile Spannungsversorgung für das Türsystem zur Verfügung stellt. Die Platine kann auch mit den GPIOs von einem Raspberry Pi angesprochen werden, um softwareseitig auf- und zuzuschließen.
+
 
 +
'''Achtung: Veraltet'''
 +
 
 +
Das Herzstück der Sphinx ist ein Rasperry Pi, der neben der Tür hängt. Der ist verbunden mit dem elektronischen Schließsystem Abus HomeTec CFA 1000. Dieses bietet Pins, die wir zum Öffnen und Schließen ansteuern können. Jochen hat dazu eine Schaltung entworfen, die Taster zum Schalten und eine stabile Spannungsversorgung für das Türsystem zur Verfügung stellt. Der Pi spricht via I²C mit diesen Pins.
  
 
[[Datei:Sphinx_taster.jpg|200px]]
 
[[Datei:Sphinx_taster.jpg|200px]]
Zeile 41: Zeile 44:
 
[[Datei:Sphinx_hometec.jpg|200px]]
 
[[Datei:Sphinx_hometec.jpg|200px]]
  
Für den Auto-Mode muss die Klingel abgefragt werden. Wenn die Klingel gedrückt wird, kommt oben eine schöne sinusförmige Spannung mit etwa 12V effektiv an. Diese wird mit einem Brückengleichrichter mit nachgeschalteter Last und Glättungskondensator zu einer Gleichspannung gemacht, die wir mit einem Linearspannungsregler LF33 auf einen Pegel von 3,3V für den Pi gebracht wird. Der Pi kann jetzt also an einer steigenden Flanke am GPIO ein Klingeln erkennen.
+
Für den Auto-Mode muss die Klingel abgefragt werden. Wenn die Klingel gedrückt wird, kommt oben eine schöne sinusförmige Spannung mit etwa 12V effektiv an. Diese wird mit einem Brückengleichrichter mit nachgeschalteter Last und Glättungskondensator zu einer Gleichspannung gemacht, die wir mit einem Linearspannungsregler LF33 auf einen Pegel von 3,3V für den Pi gebracht wird. Die Schaltung am Pi kann jetzt also an einer steigende ein Klingeln erkennen, und das per I²C dem Pi mitteilen.
An einem anderen GPIO-Pin des Pi kann der Summer an der Haustür geschaltet werden. Die 3,3V des GPIO schalten über einen Transistor eine Steuerspannung von 5V auf ein Relais, das den Kontakt für den Summer schließt.
+
An einem anderen I²C-Register des Pi kann der Summer an der Haustür geschaltet werden. Die 3,3V des GPIO schalten über einen Transistor eine Steuerspannung von 5V auf ein Relais, das den Kontakt für den Summer schließt.
  
  
Zeile 60: Zeile 63:
 
== Software ==
 
== Software ==
  
Auf dem Türserver (statische IP 192.168.178.222, immer an) hat jeder mit Türzugang einen Linux Useraccount (PAM) mit einem Homeverzeichnis und einer .ssh/authorized_keys. Die Nutzer der Gruppe tuer erhalten beim Login eine in Python geschriebene custom Shell (tyshell), die zum Öffnen und Schließen der Wohnungstür sowie zum Betätigen des Summers verwendet werden kann. Dies wird in der Konfiguration vom SSHD vorgeschrieben.
+
Auf dem Türserver (statische IP 192.168.42.222, immer an) hat jeder mit Türzugang einen Linux Useraccount (PAM) mit einem Homeverzeichnis und einer .ssh/authorized_keys. Die Nutzer der Gruppe tuer erhalten beim Login eine in Python geschriebene custom Shell (tyshell), die zum Öffnen und Schließen der Wohnungstür sowie zum Betätigen des Summers verwendet werden kann. Dies wird in der Konfiguration vom SSHD vorgeschrieben.
 +
 
 +
Die tyshell sendet die Kommandos dann per UNIX socket ( /run/tuer.sock ) das Kommando an den Türdaemon (tuerd). Der tuerd führt dann sequentiell alle erhaltenen Kommandos aus, kapselt also letztlich komplett die ausgehende Kommunikation über den I²C. Er besorgt außerdem das Logging, und kann dabei Kernel-Funktionen nutzen, um den die Aktion auslösenden User herauszufinden.
  
Die tyshell sendet die Kommandos dann per UNIX socket ( /run/tuer.sock ) das Kommando an den Türdaemon (tuerd). Der tuerd führt dann sequentiell alle erhaltenen Kommandos aus, kapselt also letztlich komplett die ausgehende Kommunikation über die GPIO Pins. Er besorgt außerdem das Logging, und kann dabei Kernel-Funktionen nutzen, um den die Aktion auslösenden User herauszufinden.
+
Die Software liegt unter /opt/tuer. Die jeweils aktuelle Entwicklung findet unter /home/pi/tuer, das ist im Wesentlichen ein Klon des [https://git.hacksaar.de/hacksaar/sphinx git-Repos]. Die systemweite Installation erfolgt mittels "sudo make". Die Software benötigt das Python-Modul [https://pypi.python.org/pypi/smbus-cffi/ smbus-cffi], welches im root-lokalen Ordner (/root/.local/lib/python3.*/site-packages) installiert ist.
  
Des Weiteren wird irgendwann ein zweiter Daemon laufen, der die Klingel überwacht (ringd). Wenn dieser das geheime Klingelmuster erkennt, sendet er "buzz" an den tuerd, der daraufhin den Summer betätigt. EVentuell wird dieser Daemon auch teil des tuerd werden.
+
Der Daemon loggt seine Tätigkeiten nach /var/log/door.log. Die Logdateien werden außerdem regelmäßig auf den Hacksaar-Server (/home/sphinxlog/data) gesynced.
  
Geplant ist außerdem ein Daemon, der eine Webcam durch den Türspion überwacht. Sobald er einen QR-Code eines Mitglieds (im Homeordner des Users unter ".qrpw.txt") scant, sendet er "open" an den tuerd, um die Wohnungstür zu öffnen. Mit dem Klingelmuster + QR Code kann man dann also komplett ohne elektronische Geräte den Space betreten.
+
Eine offene Idee ist ein Daemon, der eine Webcam durch den Türspion überwacht. Sobald er einen QR-Code eines Mitglieds (im Homeordner des Users unter ".qrpw.txt") scant, sendet er "open" an den tuerd, um die Wohnungstür zu öffnen. Mit dem Klingelmuster + QR Code kann man dann also komplett ohne elektronische Geräte den Space betreten.
  
 
== Zugang erhalten ==
 
== Zugang erhalten ==

Version vom 13. Mai 2015, 18:36 Uhr

Spinx logo.svg

Die Sphinx ist unser automatisches Zugangssystem für Mitglieder. Jedes Vereinsmitglied bekommt einen eigenen Account, kann sich per ssh auf der Sphinx anmelden und sich so Zugang zum Space verschaffen.

Funktion

Die Sphinx hat in unserem Mitgliedernetz die IP 222 und den Hostnamen "sphinx". Sie hängt nur im Mitgliedernetz, welches nicht aus dem 5GHz WLAN erreichbar ist! Wer einen Account hat, kann per SSH darauf zugreifen und wird von der TyShell (Tür Shell, in Python geschrieben) begrüßt. Die wichtigsten Kommandos sind

  • buzz: Summer an der Haustür betätigen
  • open: Tür oben aufschließen
  • help: Verfügbare Befehle anzeigen

Ein normaler Bedienungsablauf wäre, vor der Haustür den Laptop/das Smartphone auszupacken, sich ins WLAN zu verbinden und per SSH buzz zu befehlen. Oben angekommen, befiehlt man dann open und kann somit den Space betreten. Für die vereinfachte Bedienung auf Touchgeräten gibt es auch eine Androidapp, die das Tippen erspart (siehe unten).

Modi

Die Sphinx beherrscht zwei Modi, zwischen denen mit dem Kippschalter an der Sphinx selbst gewechselt werden kann.

Space offen

Die grüne Leuchte ist an. Die Tür ist nicht abgesperrt, sodass man sie von außen einfach aufdrücken kann. Wenn jemand klingelt, reagiert die Sphinx automatisch damit, den Haustürsummer zu betätigen. Die SpaceAPI zeigt online an, dass der Space offen ist.

Space zu

Die grüne Leuchte ist aus. Die Wohnungstür ist abgesperrt. Die Sphinx reagiert nicht automatisch auf Klingeln.

Space verlassen

Zum Verlassen des Space kippt man den Kippschalter an der Sphinx auf Space zu, geht durch die Tür und zieht diese hinter sich zu. Sobald die Tür zu ist, sollte die Sphinx versuchen, die Tür abzusperren. Aufgrund der Schwäche des Türschließers ist es nötig, beim Absperren die Tür zuzuhalten.

Inkonsistenzen

Wenn die Wohnungstür nicht abgesperrt ist, obwohl der Schalter auf "Space zu" steht oder umgekehrt die Wohnungstür abgesperrt ist aber der Schalter auf "Space zu" steht, wird der Türstatus als inkonsistent bezeichnet. In diesem Fall leuchtet die rote Lampe an der Sphinx. Im Fall, dass die Tür offen ist, wird das als Sicherheitslücke betrachtet und nach einer gewissen Zeit wird Alarm ausgelöst! Wer einen Fehlalarm auslöst, wird als Noob beschimpft.

Sensorausfälle/Fallbackmodus

Für den Fall, dass einer oder mehrere Sensoren der Sphinx ausfallen, besitzt die Software einen Fallbackmodus. In diesem werden die meisten Sensorinputs ignoriert. Ein Funktionieren des Kippschalters wird jedoch vorrausgesetzt. Um den Space zu verlassen, muss dieser Kippschalter von ein auf aus geschaltet werden. Ist der Schalter auf "an" und die Klingel wird gedrückt, wird der Haustürsummer ausgelöst. Ansonsten reagiert die Sphinx nicht auf Sensoreingaben. Man kann sie in diesem Modus nur per SSH über die TyShell steuern. Dass der Modus aktiv ist, erkennt man daran, dass die Rote LED alle 2 Sekunden aufblinkt.

Der Fallbackmodus kann in der Tyshell aktiviert werden.


Aufbau des Türsystems

Achtung: Veraltet

Das Herzstück der Sphinx ist ein Rasperry Pi, der neben der Tür hängt. Der ist verbunden mit dem elektronischen Schließsystem Abus HomeTec CFA 1000. Dieses bietet Pins, die wir zum Öffnen und Schließen ansteuern können. Jochen hat dazu eine Schaltung entworfen, die Taster zum Schalten und eine stabile Spannungsversorgung für das Türsystem zur Verfügung stellt. Der Pi spricht via I²C mit diesen Pins.

Sphinx taster.jpg Sphinx spannung.jpg Sphinx hometec.jpg

Für den Auto-Mode muss die Klingel abgefragt werden. Wenn die Klingel gedrückt wird, kommt oben eine schöne sinusförmige Spannung mit etwa 12V effektiv an. Diese wird mit einem Brückengleichrichter mit nachgeschalteter Last und Glättungskondensator zu einer Gleichspannung gemacht, die wir mit einem Linearspannungsregler LF33 auf einen Pegel von 3,3V für den Pi gebracht wird. Die Schaltung am Pi kann jetzt also an einer steigende ein Klingeln erkennen, und das per I²C dem Pi mitteilen. An einem anderen I²C-Register des Pi kann der Summer an der Haustür geschaltet werden. Die 3,3V des GPIO schalten über einen Transistor eine Steuerspannung von 5V auf ein Relais, das den Kontakt für den Summer schließt.


Relaiskarte für den Summer Relaiskarte für den Summer Sphinx schema v-0-9.png

Den ersten, rudimentären Schaltplan haben wir schnell zusammengestellt. Die nächsten Schritte werden das Umsetzen des Ganzen in ein Platinenlayout und der Einbau in das Wandgehäuse. Der Schaltplan kann als [PDF] bezogen werden. Zum Erstellen der Schaltpläne und des Layouts wird KiCAD verwendet. Die jeweils letzte Projektversion ist hier verfügbar.

'Stand 25.05.2014:' Die erste Platinenversion ist fertig geätzt und kann bestückt werden. Bestückungsdruck und Layout sind hier gezeigt.

Fertig gelayoutete Platine Vorderseite Fertig gelayoutete Platine Rückseite Bestückung mit Dokus und Werten Bestückung mit BauteilenFertig gelayoutete Platine

Software

Auf dem Türserver (statische IP 192.168.42.222, immer an) hat jeder mit Türzugang einen Linux Useraccount (PAM) mit einem Homeverzeichnis und einer .ssh/authorized_keys. Die Nutzer der Gruppe tuer erhalten beim Login eine in Python geschriebene custom Shell (tyshell), die zum Öffnen und Schließen der Wohnungstür sowie zum Betätigen des Summers verwendet werden kann. Dies wird in der Konfiguration vom SSHD vorgeschrieben.

Die tyshell sendet die Kommandos dann per UNIX socket ( /run/tuer.sock ) das Kommando an den Türdaemon (tuerd). Der tuerd führt dann sequentiell alle erhaltenen Kommandos aus, kapselt also letztlich komplett die ausgehende Kommunikation über den I²C. Er besorgt außerdem das Logging, und kann dabei Kernel-Funktionen nutzen, um den die Aktion auslösenden User herauszufinden.

Die Software liegt unter /opt/tuer. Die jeweils aktuelle Entwicklung findet unter /home/pi/tuer, das ist im Wesentlichen ein Klon des git-Repos. Die systemweite Installation erfolgt mittels "sudo make". Die Software benötigt das Python-Modul smbus-cffi, welches im root-lokalen Ordner (/root/.local/lib/python3.*/site-packages) installiert ist.

Der Daemon loggt seine Tätigkeiten nach /var/log/door.log. Die Logdateien werden außerdem regelmäßig auf den Hacksaar-Server (/home/sphinxlog/data) gesynced.

Eine offene Idee ist ein Daemon, der eine Webcam durch den Türspion überwacht. Sobald er einen QR-Code eines Mitglieds (im Homeordner des Users unter ".qrpw.txt") scant, sendet er "open" an den tuerd, um die Wohnungstür zu öffnen. Mit dem Klingelmuster + QR Code kann man dann also komplett ohne elektronische Geräte den Space betreten.

Zugang erhalten

Die Türadmins sind Ralf, Constantin und Chriss. Wer Zugang möchte, soll einer dieser Personen den gewünschten Nutzernamen und einen SSH-Publickey zukommen lassen (Mittwochs manuell per USB Stick oder per signierter EMail). Der Pi ist (absichtlich) von außerhalb des Spaces nicht erreichbar. Daher können die Admins den SSH-Key nur vor Ort hinzufügen.

Was fehlt noch

  • Türschließer hält die Tür nicht dicht genug zum Zusperren
  • alles auf eine Platine ätzen

Ansprechpartner

Software

Hardware

Weitere Links