Sphinx: Unterschied zwischen den Versionen

Aus Hacksaar Wiki
Zur Navigation springen Zur Suche springen
(48 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
[[Datei:Spinx logo.svg|64px|right]]
 +
 
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.
 
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 ==
 
== Funktion ==
Die Sphinx soll, wenn sie fertig ist, zwei Modi beherrschen.  
+
Die Sphinx hat in unserem Mitgliedernetz die IP 222 und den Hostnamen "sphinx". Sie hängt nur im Mitgliedernetz, welches nicht aus dem Freifunk-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
 
 
=== Auto-Mode ===
 
Wenn sich jemand im Space befindet, soll die Tür oben offen bleiben, ein Türschließer hält sie zu, so dass sie aufgedrückt werden kann. Um die Tür zum Treppenhaus zu öffnen, kann in diesem Modus die Klingel betätigt werden, wodurch der Summer an der Haustür ausgelöst wird.
 
 
 
=== Manuelles Aufschließen ===
 
Wenn noch niemand da ist oder der Auto-Mode nicht aktiv ist, kann sich jedes Vereinsmitglied vor der Tür in ein W-Lan einloggen und sich per ssh mit der Sphinx verbinden. Dann stehen verschiedene Befehle zur Verfügung:
 
  
 
*buzz: Summer an der Haustür betätigen
 
*buzz: Summer an der Haustür betätigen
 
*open: Tür oben aufschließen
 
*open: Tür oben aufschließen
*close: Tür oben abschließen
 
 
*help: Verfügbare Befehle anzeigen
 
*help: Verfügbare Befehle anzeigen
  
So ist der Zugang für jedes Mitglied ermöglicht.
+
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).
  
== Aufbau des Türsystems ==
+
'''Hinweis:''' Die unten erwähnten Leuchten sind momentan leider nicht verdrahtet, und daher immer aus.
  
 +
=== 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 und der Schalter auf ''ON''. 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 [http://spaceapi.hacksaar.de/ SpaceAPI] zeigt online an, dass der Space offen ist.
  
 +
==== Space zu ====
 +
Die grüne Leuchte ist aus und der Schalter auf ''OFF''. 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 ''OFF'' (nach ''unten''), 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 ''OFF'' steht oder umgekehrt die Wohnungstür abgesperrt ist aber der Schalter auf ''ON'' 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 versucht, die Tür zu schließen, und '''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.
  
  
 +
== Hardware ==
  
 +
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, Marc und Carsten haben dazu eine Schaltung entworfen die ensprechende Ein- und Ausgänge hat. Dieser werden über I²C Busexpander (PCF8574) mit dem Pi verbunden.
 +
Die Spannungsversorgung von Pi und SphinxBoard läuft über ein externes 5V Netzteil (Backpowering).
 +
Der Schlossaktor (Abus) wird über die gleiche Spannungsschiene versorgt. Das erlaubt es dessen Eingänge direkt an die Busexpander anzuschließen.
  
 +
Für den Auto-Mode muss die Klingel abgefragt werden. Wenn die Klingel gedrückt wird, kommt oben eine sinusförmige Spannung mit etwa 12V effektiv an. Diese wird gleichgerichtet und über einen Optokoppler getrennt. 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.
 +
Um die Tür automatisch zu öffnen ist ein Relais vorgesehen.
  
= Alter Artikel: SPaceSchließsystem =
+
Alte Version: https://wiki.hacksaar.de/index.php?title=Sphinx&oldid=1618
  
Hier kommen die Infos rein, die während des Baus unseres Schliesssystems, das jedem Mitglied ohne physikalischen Schlüssel Zugang zu den Räumen per Netzwerkzugriff ermöglichen soll, anfallen.
+
== Software ==
  
Die Vorarbeiten von Jochen bzgl. elektrischen Schliesszylinder sollten mit den Software-Erweiterungen und QR-Code Zugangstests erweitert dokumentiert werden.
+
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.
  
== Elektrischen Schliesszylinder und Modifikationen ==
+
Die tyshell sendet die Kommandos dann per UNIX socket (<tt>/run/tuer.sock</tt>) 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.
  
Nutzung eines elektrischen Schliesszylinders. Modifikation um Platine zur Betätigung der Hardwareknöpfe mittels Mikrokontrollers.
+
Damit I²C funktioniert, muss in der <tt>/boot/config.txt</tt> folgendes gesetzt werden: <tt>dtparam=i2c_arm=on</tt>.
  
Anschluss des Summers....
+
Die Software liegt unter <tt>/opt/tuer</tt>. Die jeweils aktuelle Entwicklung findet unter <tt>/home/pi/tuer</tt>, 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 (<tt>/root/.local/lib/python3.*/site-packages</tt>) installiert ist. Das muss jedoch niemand von Hand machen, <tt>sudo pip3 install --user smbus_cffi</tt> richtet alles automatisch ein.
  
Abfrage der Klingel....
+
Der Daemon loggt seine Tätigkeiten nach <tt>/var/log/door.log</tt>. Die Logdateien werden außerdem regelmäßig auf den Hacksaar-Server (/home/sphinxlog/data) gesynced.
  
== Datenbank-Backend und Netzwerkzugriff ==
+
Zum E-Mail-Versand schickt der Daemon die Mails direkt an den [[Brückenkopf]], der sie dann über hacksaar.de an den gewünschten Empfänger weiterreicht.
  
...wie ist die Software-Seite geplant?
+
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.
  
== QR-Code Zugang ==
+
== Zugang erhalten ==
  
...hier Infos zu QR-Code Generierung und Logik....
+
Die Türadmins sind [[Benutzer:Ralf | Ralf]], [[Benutzer:Constantin | Constantin]] und [[Benutzer:Chriss | Chriss]]. Wer Zugang möchte, muss sich ein [https://help.github.com/articles/generating-ssh-keys/ SSH-Schlüsselpaar generieren] und dessen öffentlichen Teil einer dieser Personen zusammen mit dem gewünschten Nutzernamen 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.
  
= Alter Artikel: "TÜR" =
+
== Was fehlt noch ==
 +
*Türschließer hält die Tür nicht dicht genug zum Zusperren
  
Unser Türzugangssystem ist noch nicht fertig (in progress) und noch nicht dokumentiert (TODO). In der Zwischenzeit siehe hier: [http://pad.hacksaar.de/p/T%C3%BCr Pad zum Thema Tür]
+
== Ansprechpartner ==
 
 
== STATUS ==
 
 
 
in Progress: Hier fehlen noch einige Infos . Projekt ist noch nicht abgeschlossen
 
 
 
== Ziel ==
 
 
 
Über eine oder mehrere Schnittstellen soll es den Vereinsmitgliedern möglich sein, selbstständig Zutritt zum Space zu verschaffen.
 
 
 
Es soll ein Zugangslogbuch erstellt werden.
 
 
 
=== Ausgangslage ===
 
 
 
Zwei Türen, die zeitlich unabhängig voneinander geschalten werden müssen.
 
 
 
Tür Nr. 1: Aktivieren des Summer für X Sekunden
 
 
 
Tür Nr. 2:
 
  
  - falls geschlossen: Aufsperren
+
=== Software ===
- falls aufgeschlossen: Schnapper aktivieren
+
*[[Benutzer:Ralf | Ralf]]
- (falls aufgeschlossen): Abschließen
+
*[[Benutzer:Constantin | Constantin]]
 +
*[[Benutzer:Marvin| Marvin]] (Android-App)
 +
*[[Benutzer:Kimcm| Kim]] (Windows Phone App)
 +
*[[Benutzer:Matsta| Mathias]] (Android-App (YASC))
  
== Idee ==
+
=== Hardware ===
 +
*[[Benutzer:Jochen | Jochen]]
 +
*[[Benutzer:Cpresser | Carsten]]
 +
*Micha
  
Zugangsberechtigung soll über eine schon existierende Benutzerverwaltung, die aufgebohrt wird, realisiert werden.
+
== Weitere Links ==
 +
* [https://git.hacksaar.de/hacksaar/sphinx Projekt-Seite] in unserem [[GitLab]]
  
== Hardware ==
+
* [https://git.hacksaar.de/hacksaar/rinx Reimplementierung in Rust] (noch in der Planungsphase)
  
Zum Schließen von Tür 2 wird ein automatisches Sperrsystem genutzt. TODO: Ausführliche Erklärung
+
* [https://play.google.com/store/apps/details?id=de.matsta.sshclient YASC (Yet Another Sphinx Client) Android-App Google Play]
  
Zum Steuern des Sperrsystem von Tür 2 und zum Aktivieren des Summer von Tür 1 wird ein Raspberry Pi(?) eingesetzt.
+
* [https://git.hacksaar.de/matsta/yasc/uploads/fdf5632d5d87997a6202fa360683d97e/yasc-release_v3.apk YASC (Yet Another Sphinx Client) Android-App APK-Download]
  
== Software ==
+
* [http://larma.de/AndTuer.apk Alte Android-App]
  
Bash-Script
+
* [https://github.com/KimCM/SpaceControl Sourcecode für Windows Phone 8 App]
 
 
API Usage für vorhanden Benutzerverwaltung...
 
 
 
== Ansprechpartner ==
 
  
mehrere.. TODO
+
[[Kategorie:Projekt]]

Version vom 7. April 2019, 13:02 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 Freifunk-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).

Hinweis: Die unten erwähnten Leuchten sind momentan leider nicht verdrahtet, und daher immer aus.

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 und der Schalter auf ON. 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 und der Schalter auf OFF. 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 OFF (nach unten), 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 OFF steht oder umgekehrt die Wohnungstür abgesperrt ist aber der Schalter auf ON 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 versucht, die Tür zu schließen, und 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.


Hardware

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, Marc und Carsten haben dazu eine Schaltung entworfen die ensprechende Ein- und Ausgänge hat. Dieser werden über I²C Busexpander (PCF8574) mit dem Pi verbunden. Die Spannungsversorgung von Pi und SphinxBoard läuft über ein externes 5V Netzteil (Backpowering). Der Schlossaktor (Abus) wird über die gleiche Spannungsschiene versorgt. Das erlaubt es dessen Eingänge direkt an die Busexpander anzuschließen.

Für den Auto-Mode muss die Klingel abgefragt werden. Wenn die Klingel gedrückt wird, kommt oben eine sinusförmige Spannung mit etwa 12V effektiv an. Diese wird gleichgerichtet und über einen Optokoppler getrennt. 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. Um die Tür automatisch zu öffnen ist ein Relais vorgesehen.

Alte Version: https://wiki.hacksaar.de/index.php?title=Sphinx&oldid=1618

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.

Damit I²C funktioniert, muss in der /boot/config.txt folgendes gesetzt werden: dtparam=i2c_arm=on.

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. Das muss jedoch niemand von Hand machen, sudo pip3 install --user smbus_cffi richtet alles automatisch ein.

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.

Zum E-Mail-Versand schickt der Daemon die Mails direkt an den Brückenkopf, der sie dann über hacksaar.de an den gewünschten Empfänger weiterreicht.

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, muss sich ein SSH-Schlüsselpaar generieren und dessen öffentlichen Teil einer dieser Personen zusammen mit dem gewünschten Nutzernamen 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

Ansprechpartner

Software

Hardware

Weitere Links