Portal 300 | P300
Handbuch
tl;dr
WLAN: Portal-Dev
(später: portal
)
Aufschließen (Fronteingang): ssh open-front@portal.shackspace.de
Aufschließen (Hintereingang): nicht implementiert
Abschließen: ssh close@portal.shackspace.de
Statusabfrage: ssh status@portal.shackspace.de
Statusabfrage (maschinenlesbar): ssh status@portal.shackspace.de simple-status
. Die möglichen Antworten stehen unten.
Alternative mit SSH command: Es kann jeder Benutzer auch als Befehl hinter einen anderen Benutzer geschrieben werden, hiermit können auch Apps wie
Trigger bedient werden. Beispiel:
Türen
A: Die Holztüre an der Straße
B: Die Glastüre an der Straße
B2: Die innere Türe zum shackspace, an der Straße
C: Die Hintertüre auf dem Hof.
C2: Die innere Türe zum shackspace, Richtung Hof
shack-Zustände
open
: shack ist aufgeschlossen und open for public
locked
: Alle Türen sind abgeschlossen, shack ist zu.
unlocked via b2
: Der shack ist aktuell nur über die Türe B2 betretbar.
unlocked via c2
: Der shack ist aktuell nur über die Türe C2 betretbar.
unobserved
: Die Sensoren haben noch keine ausreichenden Informationen für die Zustandserfassung geliefert.
Initial-Fragen aus U300 Haustechnik
Initialzustand Gebäudetechnik
In Raum 04 ist die Gegensprechanlage S, um die Tür zu öffnen
An Türe B ist ein (potentiell KNX-fähiger) Türöffner (ungeklärt, ob er KNX frisst)
Tür B1 ist nicht verschlossen
Tür B2 hat einen Schließzylinder
Türe C (Hintereingang) ist typischerweise abgeschlossen, ohne Türöffner (dürften Schlüssel nachmachen)
Türe C1 hat keinen Schließzylinder.
Türe C2 hat einen Schließzylinder.
Türe A1 ist eine Türe, die von innen immer geöffnet werden kann, aber von außen einen Schlüssel benötigt. Benötigt Hausschlüssel
Türe B ist eine Türe mit Schließzylinder und dem Hausschlüssel.
Als Türklingel m. Gegensprechanlage und Türöffner ist an Eingang B eine Busch-Welcome Anlage installiert.
Projektziel
Die shack-Vordertür (B2) wird wie in 0xFF mit RaspberryPi + Motorschloss geöffnet und geschlossen. Hierfür werden auch Reedkontakte für „Türe ist mechanisch zu“ sowie „Schließbolzen ist im Schloss“ benötigt.
Die shack-Hintertür (C2) wird wie die Vordertür mit einer Portalschaltung versehen
Wenn shack-Vordertür (B2) geöffnet wird, muss die Gebäude-Vordertür (B) mit der Buzzer-Schaltung für eine gewisse Zeit geöffnet werden. Dies sollte potentiell erst einige Sekunden nach dem Schließen der SSH-Verbindung enden, damit man Zeit hat, seine Geräte wieder zu verstauen und die Türe aufzudrücken
Für die Gebäude-Hintertür (C) muss eine technische Lösung etabliert werden, um diese auf/abschließen zu können, um Zugang zur shack-Hintertür (C2) zu erhalten
Die Klo-Tür (To) sowie die Zwischentüre (A1) müssen mit einem Klo-Button ähnlich dem in der 0xFF gelöst werden. Dies ist aber potentiell ein separates Projekt.
Fragen / Brainstorming
Hinter- und Vordertür sollten nicht synchron aufgeschlossen werden, aber zugeschlossen
Hierfür open@ für vorn, backdoor@ für hinten und close@ für „gesamten shack schließen“?
Portal-Einheiten müssen miteinander reden für synchronen Close-Request
Architektur
Das Portal der U300 besteht aus mehreren Komponenten, welche über MQTT miteinander kommunizieren:
MQTT-Nachrichten
Die MQTT-Nachrichten sind nun in der Software an einer zentralen Stelle dokumentiert.
Hardware & Elektronik
Initialzustand Motorschloss
Mechanik
Für das vollständige zerlegen benötigte Schraubenzieher:
Elektronik
-
-
2× Motor
Motor 1 dreht das Schloss aktiv auf und zu
Motor 2 betätigt eine mechanische Kupplung, welche Motor 1 und Schloss mechanisch trennen kann
-
Manuell implementierter Drehencoder(?) mit 2 Schaltern
Testpunkte für PRG1 (Proz: ???) und PRG2 (Proz: ???) verfügbar, vermutlich Programmierinterface für STM8L052C6 und CYW20736.
Versorgung via 3 * Mignon-AA-Zellen, also ca. 4.5V
1mA Stromaufnahme im Standby
~400mA Stromaufnahme bei dauerhafter Motorbewegung (unbelastet)
~900mA Stromaufnahme bei Anfahren (unbelastet)
~1000mA Stromaufnahme bei Blockieren
Motor fährt beim Anschalten kurzzeitig zurück, und anschließend in die gewünschte Richtung
Die Motoren werden direkt mit der Batteriespannung versorgt
Umbau Motorschloss
Das Motorschloss hat im Batteriefach jetzt Schraubklemmen, die die beiden Taster sowie die Stromversorgung (4.5V) bereitstellen.
Die Schalter SW0 und SW1 haben jeweils zwei Anschlüsse, hierbei ist + jeweils der aktive Schalteingang (active low) und - die jeweilige Masse des Schalters.
Der Anschluss BAT erwartet zwischen - (GND) und + (VCC) 4.5 Volt. Hier ist zu klären, ob auch 5V Versorgungsspannung gehen.
Türsprechanlage Busch-Welcome
-
-
neben Tür B2
Türöffner (Tö) wird mit internen 12V~ versorgt. Für direkte Ansteuerung wäre also ein Wechselkontakt zur Vermeidung von Kurzschlüssen nötig.
Tö wird für 1s bis 10s (einstellbar an der Zentrale) aktiviert. Die Tür kann geöffnet werden, solange es „summt“.
-
Innenbus OUT1 ist im Rack 1-UG-2-2, AMP-Panel „51-100“, Port 21-25 aufgelegt und nach 1-UG-1-2 B022, B028, B046, und B089 gepatcht.
Innenbus OUT2 ist unbeschaltet. Restleistung von ~30W sollte für einen RPi reichen :)
-
-
Terminal
Verbaut sind:
In einer Audio-Aufzeichnung direkt am Bus kann man etwas verstehen. Die massiven Störungen sind aber im Hörer nicht zu hören. Könnte Telefon-Filter 300-3400Hz sein oder sie nutzen nicht nur PAL-Video sondern auch den Ton-Träger bei 5.5MHz.
Die Kommunikation Terminal → Controller scheinen ~250mA Pulse zu sein. Gegenrichtung sieht in der Aufzeichnung ähnlich aus.
Modifikation
Der Tö-Taster ist an R72 angeschlossen und geht nach GND. Der Taster für die lokale Klingel arbeitet auch so. An der Steckverbindung ist DB_EX das aufbereitete (L, R, TVS-Diode) Signal.
Achtung! GND könnte floating sein. Nicht mit a1 oder b1 mixen!
→ Klingel am Stecker herausgelöst und mit Kabel zu R72 ersetzt.
Auf dem „Power“-Modul war ein Relais nicht bestückt. Q1 schaltet die Versorgung des I2130SYI mit 3.3V solange an, wie die LED in der Tö-Taste blinkt. Die LED selber hat keine zugänglichen Lötpunkte auf der Bestückungsseite.
→ Ein SFH6156 Optokoppler hat auf den Relais-Pads eine ordentliche Klemme bekommen. Anode an Q1/D6 und Kathode über 270 Ohm an GND
Neue Klemmenbelegung:
a1
b1
Tö-Taster
GND für Tö-Taster
Emitter Optokoppler
Collector Optokoppler
Mit Brücken zwischen 3 und 6 sowie 4 und 5 öffnet Klingeln die Tür. An den ESP32 sollte also ein weiterer Optokoppler als „Taster“.
Es wurde ein ESP32 Board (WT32-ETH01) mit dem Busch-Welcome galvanisch getrennt verbunden. Die Kabelbelegung ist wie folgt:
Das Klingelsignal ist auf dem ESP als IO15 verfügbar (benötigt internen Pull-Up), die Türe kann via IO39 geschaltet werden.
Software & Architektur
Software-Entwicklung
Prozesse
Die Gedanken hinter diesem Prozess sind folgende:
Es ist sinnvoller, immer erst eine Türe aufzuschließen und die zweite Tür nur dann zu öffnen, wenn die erste Türe tatsächlich benutzt wurde (also nicht nur aufgeschlossen ist, sondern auch geöffnet wurde).
Dies ist notwendig, dass der Fehlerfall „Türöffner funktioniert nicht“ abgefangen werden kann, denn niemand wird in dem Moment denken: „Oh, ich hab doch aber grade aufgeschlossen, die Tür im Gebäude ist ja noch offen“. Dies wird noch verstärkt durch das fehlende direkte Feedback (man steht auf der Straße und hört den Türmotor nicht arbeiten). Daher wird die Türe nur für 60 Sekunden aufgeschlossen, anschließend wird wieder abgeschlossen, außer die Türe wird in der Zwischenzeit geöffnet (Bestätigung von „Benutzer hat Gebäude erfolgreich betreteten“).
Beim Schließen können einfach beide Türen abgeschlossen werden, der shack kann aktuell sowieso nur durch die Türen A1, anschließend A zuverlässig verlassen werden. C ist potentiell abgschlossen.
Mechanik & Montage
Anforderungen
minimal invasiv im Hinblick auf die Mietsache
vollständig rückbaufähig
robust
mechanisch sachgerechter Aufbau
ohne Heissklebstoff, Klebeband, fliegende Leitungen o.ä. pfuschige Methoden
Kabelführung
Aufbau
Legende
Trägersystem
Die komplette OSB-Platte hängt mit einer Keilschiene an einem Querträger
Um die OSB-Platte abnehmen zu können müssen 5 Leitungen abgezogen werden:
Schukostecker der 6-fach Steckdosenleiste abziehen (roter Halbkreis)
RJ45-Stecker aus der Buchse „Tö“ abziehen (roter Kreis)
RJ45-Stecker aus der Buchse „BUS“ abziehen (roter Kreis)
RJ45-Stecker von Leitung „B2“ von „INJ#3“ abziehen (roter Kreis)
RJ45-Stecker von Leitung „C2“ von „INJ#2“ abziehen (roter Kreis)
Jetzt kann die Platte ca. 1.5cm angehoben, in Richtung Wand verschoben und dann abgenommen werden.
Das Terminal („Telefon“), der ESP32 „Control“ und die Wanddose „BUS“ / „Tö“ sind als Baugruppe auf einer Sperrholzplatte montiert und können mit zwei Schrauben (grüne Kreise) en bloc von der OSB-Platte getrennt werden.
Arbeitssitzungen
16.05.2022
Anwesende: xq, map, chris
Sichtung der vorhandenen Materialien
Drop von Relaiskarte, SD-Karte, Installationskabel (2- und 3-adrig, jeweils 20m), 8fach-Relaiskarte, 12V-zu-5V-USB-Netzteil
Reverse-Engineering des Motorschlosses
Umbau des vorhandenen Motorschlosses von (manuellem) Batteriebetrieb auf externe Stromversorgung+Schalter
Montage SD-Karte und WLAN-Adapter am RaspberryPi
Installation eines RaspberryPi
OS auf der SD-Karte
Statische IP auf wlan0 eingerichtet (/etc/network/interfaces.d/wlan0)
ssh-Zugang aktiviert
Aktuell Defaultuser shack/shackit sowie root-User
Setup-Versuch von HostAPD, scheitert aber an „interface wlan0 not up.“
07.06.2022
Anwesende: xq, m1k3y, stefan, chris
Material wurde von Chris organisiert
APUs wurden auf Funktionsfähigkeit geprüft
WLAN: gut
Problem: GPIOs: Unbenutzbar, es gibt keine funktionierenden Treiber
Lösung: Wir benutzen den RPI als IO-Device, die APU als WLAN-AP
Es wurde versucht, das WLAN auf dem RPI funktionsfähig zu machen
Diskussion über die User-Workflows mit dem Portal sowie die Abläufe in der Software
Türöffner-Ansteuerung und Türklingel-Auslese wurde erfolgreich gehackt
Motorschloss wurde an Fronttür(B2) montiert
GPIO-Library wurde in Portal-Software integriert und notwendige GPIOs identifiziert
Tür-Ersatz wurde gelötet, um Software zu testen (Drei Buttons, zwei LEDs auf kleiner Platine)
12.06.2022
Anwesende: xq, stefan
Die GPIOs vom Pi wurden lauffähig gemacht
Es wurde die Ablauf-Sequenz für ÖFFNEN und SCHLIESSEN definiert und implementiert
Der ESP32 wurde erfolgreich mit der Sprechstelle verheiratet
13.06.2022
Anwesende: xq, m1k3y
Die APU wurde vorbereitet
Ein neuer Key-Export-Prozess wurde definiert
Key-Export aus dem Byro wurde implementiert
authorized_keys
erzeugen wurde implementiert
Signieren und Verifizieren der Signatur mit openssl
wurde getestet
Neues Konzept für Türsteuerungen: Statt RPI wird nun ein ESP32 benutzt, SSH terminiert nur auf der APU
18.06.2022
Anwesende: xq, m1k3y, stefan
Die Portal-Software wurde auf die APU deployed.
Es wurde ein Script zum automatischen Import eines Key-Exports entwickelt.
Umbau der beiden Software-Repositories in ein großes Monorepo.
Ein ESP wurde erfolgreich in die Busch Welcome-Interface integriert.
Es wurde eine Platine für die Motorsteuerung gelötet.
Motor-Steuerung wurde mechanisch reperiert, Freilauf funktioniert jetzt wieder zuverlässig.
Integrations-Versuch von Motorsteuerung, Busch Welcome-Interface sowie des Daemons.
Motor-Stromaufnahme wurde noch einmal mit besserem Messgerät verifiziert.
Es wurde folgende Projektziele erreicht:
Die Fronttüre B kann nun per SSH geöffnet werden!
Die Fronttüre B kann nun per Klingel geöffnet werden, wenn der shack als aufgeschlossen gilt.
2022-09-09
Anwesende: xq, chris, jens, stefan
2022-09-10
Anwesende: xq, stefan, chris
Einbau von Magneten & Hallsensoren in die
Einsteckschlösser zur Erkennung der Position der Schließriegel
2022-12-25
2022-12-25
Anwesend: c-mon, chris
- /etc/ssh/sshd_config.d/banner-open.conf
# set explanatory message for legacy login user:
Match User open
Banner /etc/ssh/banner-open
PasswordAuthentication No
- /etc/ssh/banner-open
## Dear legacy-user,
##
## login using the user "open" is no longer supported.
## Please log in with
## "open-front"
## for opening the front door or
## "open-back"
## for opening the back door.
##
## For more information read the documentation at https://wiki.shackspace.de/infrastruktur/portal300
## Farewell,
## open
2022-12-26
Anwesend: chris
Zeitstempel in der shell-history eingefügt. Dazu in /root/.bashrc
und /home/loginuser/.bashrc
eingetragen: HISTTIMEFORMAT=„%F %T “
. Klappt natürlich erst ab sofort, zurückliegende Einträge werden mit dem Modification Date von .bash_history gelistet. Wird i.L.d.Z herausrotieren…
2023-01-29
Anwesend: Stefan, Andreas, chris
Montage eines Trägers oberhalb Türe B2
Montage der Komponenten APU, Switch, ESP32, Steckdosenleiste auf ein Board
Kabelzuführungen aus dem Schrank neben B2 in die Decke oberhalb B2
ToDo:
„Telefon“ auf das Board montieren
Kabelverbindungen herstellen
Board in den Träger oberhalb B2 einhängen
2023-01-29
Anwesend: Stefan, Karl, Raute, chris
Montage der Komponenten „Telefon“, ESP32, RJ45-Buchsen auf ein Modulboard
Modulboard & Netzteile auf dem Haupt-Board montiert
Kabelverbindungen hergestellt
Board in den Träger oberhalb B2 eingehängt
Ergebnis:
2024-03-25
nächste Schritte
Umzug der Hardware in die Werkstatt
Statemachine der Firmware auf neues Modell umschreiben
Zweite Hardware fertig stellen
System-Reset via MQTT implementieren
Debug-Interface implementieren
Vorstands-Scripte fertigstellen
Portal-Box clean aufsetzen
Neue CA erzeugen und neue Keys deployen