Luftschleuse 2
Die Räume in der Aktueller Stand. 90 haben drei Außentüren: Haupteingang (Front), Hinterhof, Notausgang Keller.
Zu diesem Zweck war eine neue Architektur für die alte Luftschleuse1 notwendig, die wir Luftschleuse2 getauft haben.
Zustände
- DOWN Kapsel zu, Strom aus. Niemand da.
- CLOSED Kapsel zu, Strom an, Jemand da, aber nur kurz, schläft oder gerade nur im Keller.
- PUBLIC Kapsel besetzt. Auch Externe/Gäste etc. sollen kommen (Public Tuesday, Lockpicker, Vorträge…). Tür vorne: daueroffen.
muCCC-Mitglieder bekommen den Klingelcode beim Beitritt mit der Willkommensmail von Mailman.
Hackerspace API
Unter https://api.muc.ccc.de/spaceapi.json bietet wir einen Space-API-Endpoint an. Status-Mapping:
- open: Status PUBLIC
- closed: Status MEMBER, CLOSED oder DOWN
Wir speichern aktuell nicht wie viele Leute gerade im Club sind.
Benutzung für Keyholder
- IP: 192.168.2.2 (old)
- DNS: luftschleuse.club.muc.ccc.de
- SSH Host Pubkeys:
- neuer ed25519 key seit 2022-03-27:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICL8XMqL1fwNl3jdtSmQZV6ALs9eVzAT2HFhhNeynmMc luftschleuse
256 SHA256:6Dt6Du80haL4E1yE4QoxPCEsk4t7sl/iwHwaUmZnZlE luftschleuse (ED25519) +--[ED25519 256]--+ |*ooo E | |=B. .. | |+oo.. | |+. .. o | |.o+.* o S | |==+* o . | |+Booo + | |o+=o +oo | | o+..==. | +----[SHA256]-----+
- neuer rsa key seit 2022-04-01:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4Cv0mDzzYz3PRkgjgb0l0fNK/3b8Wuklug9rA/s2EGGYWuxmCXiRwdC5dHyCYHSD7QAiKUi8pHydXyZ4wNtgDJAkgzo4fcmIuEFrgKItbY9EAu90ovQwTgxGFVqGUpp/TCbIyu8tMeTUmsxZMYEJgeDeHjNKSwVOmGlueRBSiOdOXih3uejgzEP+bYXbdrLuCT0sBuViaDHeYGxFgxlzvHGD7rEgvxbXw1tavQN0bC4zbsJzR1GzbdNTL0J4xdOCQSrLAqcCil3Plt9imNXzSP9VsQEQVY4sgb+AvVYgfQlp9i44wgJwNNq7QuOCn5nmxEGPs5RQHRW0A5bBNEyiyLMQRzZAU7vHTBXTob9LDq570KvtCYIjjbSj97YSK8FPQklsmdRGEg38EoUnCQWRbZgAUD5tnZdB2Zd00mG2OugtmWkPD2mAN5E8Z6GeO9mhODXecWvkATo2JaLe0maptuP0udi9T6Buj/v4kYd/ZCWb/YXkcDEHzTDEzJc0gkvmfv1630oMZ33JanA4RUDIYkh+/DIIcyipv67uMi02Uc1Z13kbb23RGLy0vKMw/0vSBQiEsLpjKJD7AnRHgs7E4fCQ/dWzPY4LqIqD1L0RW4k1f5bOzIgN92OYTcVIYKyDfM7Vrfvv0I0sFBkBAVO2Yf+nOq+X6d72Uvgvvz/S6nQ== luftschleuse
4096 SHA256:R8tYTnMKwDXwRzFi9txK4O5oJvJdH4XJj4ZbnS4kssg luftschleuse (RSA) +---[RSA 4096]----+ | .ooB +. | | .* B o | | + X o | | . % O | | S @ . | | .o.o.= . | | ....+o+o= + | | oE=.. =.o | | . . . ... | +----[SHA256]-----+
- alter, unsicherer dss/dsa sowie der 1039 bits rsa key nicht mehr vorhanden
- User: open (Hintertür), openfront (Vordertür)
Seit 2022-03-27 wird ein aktuelles OpenSSH eingesetzt. Bitte etwaige SSH-Konfigurationshacks entfernen.
Trigger-App
https://github.com/mwarning/trigger/
- User: trigger
- Open Command: unlock oder unlockfront
- Status Command: status (derzeit immer “unknown”, da Tuerstatus nicht verfuegbar)
SHA-1 Signaturen Deprecation
Es werden keine SHA-1 Signaturen fuer den Key Exchange mehr supportet. Sollte euer SSH Client das nicht fuer RSA supporten muss der RSA Host Pubkey geloescht werden damit der ED25519 genommen wird.
- Connectbot: Der Host muss entfernt und neu angelegt werden damit eine Verbindung hergestellt werden kann.
Hardware und Aufbau
Zentraler Knotenpunkt ist ein Carambola RPi3, das über den Mastercontroller (MC) per RS485 mit den einzelnen Schlössern verbunden ist.
Die Schlösser haben eigene Elektronik (Lockcontroller bzw. im Diagram Controller und Benutzerschnittstelle in Form von einem Knopf.
Code und Hardware: https://github.com/muccc/luftschleuse2
Carambola, Mastercontroller und Lockcontroller Hintertür
Lockcontroller Vordertür
Taster Vordertür
erledigte? ToDos
- Anforderungen besser definieren
- Funktion
- Was soll ein Nutzer an den Schlosscontrollern einstellen koennen?
- Welche Informationen werden an den Schlosscontrollern angezeigt?
- Gehäuse
- Wo werden sie montiert?
- Wie sicher müssen sie sein?
- Netzteil
- Intern oder extern?
- Fernspeisung über Busleitung
- Lockcontroller werden ueber Bus versorgt, Hauptcontroller versorgt Bus ueber Netzteil
- Benutzerinterface
- LEDs oder Display in den Schlosscontrollern?
- z.B. 1 7-Segment LED, das Codes ausgibt.
- Komponenten
- Wichtig fuer Layout, Vorschlaege weiter unten.
- Akku
- Wielange muss er halten?
- * Solange wie eine Netzstörung dauert
- * 48h wäre gut, Akkus werden ueber Zeit schlechter.
- Was verbaucht das System im Ruhezustand?
- * Sleepmode an Schlosscontrollern haben.
- * Schlosscontroller über BUS oder Nutzerinteraktion wecken
- Intern oder extern?
- Software
- Protokoll fuer RS485 festlegen
Watchdog
Das Carambola kontaktiert ueber den MC zyklisch alle Schlosscontroller.
Die Controller haben einen Hardware-Watchdog, der sie neustartet, wenn keine Aktivitaet auf dem Bus mehr erkennbar ist. Sollte ein
Schlosscontroller den Bus blockieren oder der MC bzw. Carambola sich aufhaengen startet das komplette System neu.
Alternativ: Hauptcontroller schaltet bei Problemen komplette Vesorgungsspannung des Bus.
Verkabelung
Die Verbindung der Module erfolgt ueber Ethernetkabel. Zwei Aderpaare sind fuer die 12 V Versorgungsspannung reserviert. Ein Aderpaar
wird von jedem Schlosscontroller mit einem Widerstand belastet. Der MC wertet dieses Paar aus, um abgesteckte Schlosscontroller schnell zu erkennen.
Kommunikation
Der MC leitet die Datenuebertragung transparent durch. Zwischen Carambola und Schlosscontrollern wird verschluesselt kommuniziert.
Stromversorgung
Ein Bleiakku stellt eine Notstromversorgung. Die Ladung erfolgt direkt aus dem Netzteil des Hauptcontrollers.
Absicherung
Busleitungen
Serienwiderstaende 10 Ohm + Brueckengleichrichter mit Suppressordiode parallel.
“Kapazitaetsarme Schutzbeschaltung”
Stromversorgung
Hauptcontroller
Wechselbare Feinsicherung von Netzteil zum Akku
Polyfuse vom Akku zum Bus
Lockcontroller
Wechselbare Feinsicherung, ueberdimensioniert in Serie mit Polyfuse.
Schlossinterface
Besser H-Bruecke aus Automotive mit Fehlerüberwachung z.B. Kurzschluß, Kabelbruch
Alternativ: Motorstrom mit A/D-Wandler abgreifen.
Vorteile: Kann Motorposition und Bewegung abschaetzen.
Komponenten
Vorschlag:
MC und Schlosscontroller: ATMEL ATMega644A-AU o.ae. (5 V, extended temperature, 2x UART)
RS485 Treiber: MAX487EESA (slew rate limited, extended temperature, esd protected)
Vorschlag: Potentialgetrennter RS485-Treiber-IC von LTC oder MAX, weil es immer Potentialdifferenzen gibt wegen anderer Speisung etc. Einfach zuverlaessiger.
Gehause: ? (Metall? Kunststoff? Wo und wie werden die Schlosscontroller angebracht? Wie gross werden Display und Schalter? Steckverbinder intern oder am Gehaeuserand? Netzteil und Akku intern?)
Display: ? Farbige LEDS wohl besser auf Entfernung ablesbar. Gut wäre 7Segment LED, rot
Taster: Reichelt TASTER 1104 GN Serie
Netzteil: z.B.: Reichelt SNT MW25-12 (zum Einbau in das Gehaeuse)
Akku: z.B.: Reichelt LCR-12V 2,2P (2.2 Ah), besser 5,7Ah
Schaltplan soweit mal erstellt, werde den nachher noch von zuhause mal hochladen.
Lockcontroller:
Atmel ATMega 324A, lagen noch 3 im Labor, wenn es der 644A werden soll, ist ja Pinkompatibel.
Schaltregler 5 V LM2594 0,5 A
Reset/Watchdog MAX705, überwacht RS485, wenn kein Datenverkehr, löst er Reset aus, außerdem Manueller Reset über die protection Loop möglich.
MAX48x als RS485
Eine SOT23 Referenz als Option (REF3040 etc.)
L6201 als H-Brücke für den Schlossmotor ()
2 Relais als potentialfreier Wechsler, 230V geeignet
2 digitale Ausgänge
8 Analoge oder digitale Eingänge (Port A, so das auch der ADC genutzt werden kann) Magnetkontakte, Steuerkontakte vom Schloss etc.
Display soll eigentlich am Carambola Interface angeschlossen werden, evtl. 2. serieller Port noch rausgeführt für Display/lokale Bedienung
Verwendete Einsteckschloesser
1x Dorma SVP2719
1x Dorma SVP3XXX
1x CES IES Beschlag Drücker Kupplung
Funktionalität
Der Club muss wie bisher auch per SSH durch designierte Keyholder “aufgeschlossen” werden; die Verwaltung der Keys wäre wohl wieder per git.
Zusätzlich dazu erhält jeder Türcontroller auch ein oder mehrere alternative Zugangsmedien, bspw. für RFID-Chips. Entsprechende Chips können dann an Members ausgegeben werden, sodass diese sich Zutritt zum Club verschaffen können, sofern per SSH von einem Keyholder der Club aufgeschlossen wurde. Alternativ können natürlich auch bereits vorhandene Zugangsmedien der zutrittswilligen Members erfasst werden anstatt noch etwas mehr Plastik zu verteilen (Firmenausweise, Handys mit NFC, Studentenausweise, etc. pp.). Da es sich bei diesen Zugangsmedien nur um einen besseren Türöffnerknopf handelt, ist die Sicherheit als solches eher nachrangig und man könnte sich bspw. auf die Prüfung der UID des Mediums beschränken. Verwaltung der UIDs wäre dann u.U. auch ein Job fürs git. Was für Hardware braucht es dafür noch extra?
Ich habe noch ein paar alte Elektroniken aus CES Legic Zylindern, die werden für Studentenausweise in MUC benötigt, verwaltung erst mal mit der Progkarte.
ISO Tag (Mifare und OK) evtl. mit einem OpenPCD, später wäre auch eine all in one Lösung denkbar, wir brauchen ja nur die UID abfragen und die könnten später auch über Lockbus vom Carambola zum Leser geschrieben werden.
Meiner Meinung nach koennen wir an die Hintertuer auch einfach ne Klinke bauen und sie offen lassen — schneider 2012/12/07 22:08
Bin fuer OpenPCD, denn wir haben die Macht darueber, und muessen nichts reversen etc. (luja)
BTW: Ist das nicht etwas over-engineered? (luja)
Hackfriday 15.03
Technische Moeglichkeiten
Vordertuer:
Zustaende: Abgesperrt (man kommt immer raus), Public (jeder kommt von draussen rein), Offen (Mitglieder kommen mit zusaetzlicher RFID-Karte oder Klingelcode rein)
Sensoren: Klinke gedrueckt, Tuer offen
Hintertuer:
Zustaende: (siehe oben) Abgesperrt, Public, irgendwie auch Offen
Sensoren: Klinke gedrueckt, Tuer offen
Beide Schlösser können jederzeit von innen geöffnet werden, verriegeln aber und fallen nicht nur in den Schnapper.
Usecase: Club ist abgesperrt, Benutzer kommt durch den Hinterhof
SSH auf open@, die Hintertuer oeffnet einmal.
An der Steuerung kann eine Taste gedrueckt werden um alle Tueren auf Offen zu schalten. Einzelne Tueren koennen danach direkt an der jeweiligen Tuer auf Public geschaltet werden.
Hinweise fuer Stromausschalten werden aktiviert.
Usecase: Club ist abgesperrt, Benutzer kommt an der Vordertuer an
Wollen wir erstmal nicht, aus Komplexitaetsgruenden und anderem.
Usecase: Club ist offen oder Public, Benutzer will den Club absperren
Knopf an der Steuerung an der Hintertuer sperrt alle Tueren. Eine Anzeige zeigt an, dass alle Tueren geschlossen haben.
Der Strom wird falls moeglich automatisch abgeschaltet.
Benutzerinterface
Einzelne Tueren: Taster fuer Offen/Public fuer die einzelne Tuer
SSH: Einmal oeffnen der Hintertuer
Zentrale-Steuerung: Taster fuer Offen (wirkt auf alle Tueren) und Taster fuer Closed (wirkt auf alle Tueren)
Zentrale-Steuerung Anzeigen: Zustand des Systems, rote LED falls der Befehl Close nicht ausgefuehrt werden konnte (Warnton, falls die Tuer dennoch geöffnet wird)
IRC-Interface
Hackfriday 3. April 2013
Gigo's Vorschlag
An der Luftschleusenhauptsteuereinheit gibt es Taster, um den Zustand der Kapsel explizit zu setzten. Dies löst entsprechende Türzustände aus, setzt das Topic entsprechend und kann auch anderweitig ausgenutzt werden (Statuslampen, …).
Vorschläge/Impulse:
- Damit man nicht aus versehen “public” auslöst müssen 2 Taster gleichzeitig gedrückt werden (Vorne + Hinten), wahlweise mit ssh- (public@luftschleuse)
Pinbelegungen
Schaltplan vom EVVA EMZY: evva-emzy-emz02.3.pdf
Stecker Frontpanel:
1: LED Down
2: LED Closed
3: LED Member
4: NC
5: GND
6: Switch Public
7: Button Member
8: Button Closed
9: Button Down
Buchse Frontpanel:
1: Brown
2: Orange
3: Green
5: Blue
6: Blue-White
7: Green-White
8: Orange-White
9: Brown-White
Kabel Frontpanel:
Brown-White: Button Down
Orange-White: Button Closed
Green- White: Button Member
Blue-White: Switch Public
Brown: LED Down
Orange: LED Closed
Green: LED Member
Blue: Gnd
Pinbelegungen Frontdoor (SVP2719)
Schaltplan Schloss: svp2719_schematic.pdf
Schlosskontakt | Name | Variable / Bemerkung | PCB Pin | Funktion |
2 | Brücke | DOOR_LOCK_BRIDGE | I/O 4 | Kabelbrucherkennung |
8 | Entriegelung | DOOR_LOCK_UNLOCKED_CONTACT | I/O 4 | Schloss entriegelt |
5 | Riegel | DOOR_LOCK_LOCKED_CONTACT | I/O 6 | Riegel ausgeschlossen |
7 | Drücker | DOOR_HANDLE_CONTACT | I/O 7 | Klinke gedrückt |
10 | Steuerfalle | DOOR_DOOR_OPEN_CONTACT | I/O 8 | Steuerfalle gedrückt |
13 | Hallsensor | DOOR_LOCK_CONTACT | I/O 1 | Position Motor |
1,3,9 | GND | GND | Masse | |
12 | DC 12V | Motor 1 | Versorgung Hallsensor | |
6 | Motor + | Motor 2 | Motor H-Brücke + | |
4 | Motor - | Motor 3 | Motor H-Brücke - | |
Reedkontakt | Am Türrahmen | I/O 3 | Türkontakt | |
Taster | Tür öffnen | 2.Kontakt GND | I/O 10 | Lokale Tür öffnen |
LED | Tür status | Anode über Vorwiderstand | I/O 9 | Lokale Tür Status |
DC Test | Status DC | 10K an Motor 1, 1K n. GND | I/O 2 | Messung ü. Spannungsteiler |
Klingel | Member ACC | 12V und Masse | Opto 2 | Klingelcode |
Originalkabel
Stecker 65239-007LF - Wire-To-Board-Steckverbinder, 2.54 mm, 14 Kontakt(e), Buchse, DUBOX 65239
Schlosskontakt | Name | Klemmenbezeichnung Originalsteuerung | Farbe | Funktion |
1 | Brücke | 42 | rosa | Kabelbrucherkennung |
2 | Brücke | 41 | grau | Kabelbrucherkennung |
3 | Gebrückt 11 | GND | ||
4 | Motor - | 45 | gelb | Motor |
5 | Riegel | 43 | eosa/grau | Riegelkontakt |
6 | Motor + | 46 | grün | Motor |
7 | Drücker | 26 | blau | Drückerkontakt |
8 | Entriegelung | 24 | rot/blau | Entriegelungskontakt |
9 | GND | 27 | violett | GND Entriegelung+Drücker |
10 | Steuerfalle | 49 | braun | Steuerfalle |
11 | Gebrückt 3 | — | — | PE |
12 | +5V Hall | 21 | weiß | +5V Hallsensor |
13 | Hall Out | 44 | rot | Hallsensor Ausgang |
14 | GND | 23 | schwarz | GND |
Pinbelegungen Backdoor
Stecker am Schloss
Stecker 65239-007LF - Wire-To-Board-Steckverbinder, 2.54 mm, 14 Kontakt(e), Buchse, DUBOX 65239
Schlosskontakt | Farbe Schlosskabel | Zwischensteckerkontakt | Farbe Zwischenkabel | Farbe Schleuse |
1 | rosa | 1 | rosa | ? |
2 | grau | 2 | gruen | ? |
3 | Bruecke | gelb | ? | |
4 | gelb | 3 | grau | ? |
5 | rosa/grau | 4 | rot/blau | ? |
6 | grün | 5 | blau | ? |
7 | blau | 6 | weis | ? |
8 | rot/blau | 7 | rot | ? |
9 | violett | 8 | braun/gruen | ? |
10 | braun | 9 | weis/gruen | ? |
11 | Bruecke | lila | ? | |
12 | weiß | 10 | braun | ? |
13 | rot | 11 | grau/rosa | ? |
14 | schwarz | 12 | schwarz | ? |