HQ/Schalter: Unterschied zwischen den Versionen
Vater (Diskussion | Beiträge) |
Vater (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
= Entwicklungsstand = | {{realitätsfern}} | ||
== Entwicklungsstand == | |||
Derzeit ist der manuelle Schalter in der Lage den Status u.a. über die Website zur Verfügung zu stellen. | Derzeit ist der manuelle Schalter in der Lage den Status u.a. über die Website zur Verfügung zu stellen. | ||
Zeile 9: | Zeile 11: | ||
* [[Klingel]] neben der Eingangstür um auch bei Geräuschkulisse erhört zu werden | * [[Klingel]] neben der Eingangstür um auch bei Geräuschkulisse erhört zu werden | ||
= Schalter = | == Schalter == | ||
Schalter ist der große Kasten mit dem 3-Positionen-Schalter in der Mitte direkt an der Eingangstür. | Schalter ist der große Kasten mit dem 3-Positionen-Schalter in der Mitte direkt an der Eingangstür. | ||
Zeile 436: | Zeile 438: | ||
|} | |} | ||
=== Anhalt, um den Status von Schalter lokal auszulesen === | |||
== Anhalt um den Status von Schalter lokal auszulesen == | |||
<pre> | <pre> | ||
Zeile 455: | Zeile 456: | ||
Das Compilat heißt <code>/etc/service/zmq-switch/run</code> . | Das Compilat heißt <code>/etc/service/zmq-switch/run</code> . | ||
== Stromversorgung dss Schalters == | === Stromversorgung dss Schalters === | ||
Der Schlalter wird über ein 12V Netzteil betrieben. Diese Spannung wird innerhaltb des Schalters auf 5V Konvertiert. Alle derzeit angeschlossenen Komponeten, bis auf den DC-DC Wandler verwenden nur 5V. | Der Schlalter wird über ein 12V Netzteil betrieben. Diese Spannung wird innerhaltb des Schalters auf 5V Konvertiert. Alle derzeit angeschlossenen Komponeten, bis auf den DC-DC Wandler verwenden nur 5V. | ||
= Keymatic = | == Keymatic == | ||
Um das HQ auch ohne Schlüssel betreten zu können, wurde die Eingangstür mit einem [http://www.elv.de/homematic-funk-tuerschlossantrieb-keymatic-weiss-inkl-funk-handsender.html Funk-Türschlossantrieb] aufgerüstet. Die Keymatic ist über Hackerbus mit dem Raspberry Pi im Schalter verbunden. | Um das HQ auch ohne Schlüssel betreten zu können, wurde die Eingangstür mit einem [http://www.elv.de/homematic-funk-tuerschlossantrieb-keymatic-weiss-inkl-funk-handsender.html Funk-Türschlossantrieb] aufgerüstet. Die Keymatic ist über Hackerbus mit dem Raspberry Pi im Schalter verbunden. | ||
Zeile 533: | Zeile 534: | ||
</pre> | </pre> | ||
= Software = | == Software == | ||
== OpenWrt für den RaspberryPi == | === OpenWrt für den RaspberryPi === | ||
Wir haben Config & Anleitung um ein OpenWRT für den Pi zu bauen: https://github.com/c3d2/schalter-openwrt | Wir haben Config & Anleitung um ein OpenWRT für den Pi zu bauen: https://github.com/c3d2/schalter-openwrt | ||
== senmqd um GPIO im Netzwerk bereitszustellen == | === senmqd um GPIO im Netzwerk bereitszustellen === | ||
Der [https://github.com/tuxcodejohn/senmqd Server] für GPIO-Interaktion spricht 0mq. | Der [https://github.com/tuxcodejohn/senmqd Server] für GPIO-Interaktion spricht 0mq. | ||
== schalterd um GPIO im Netzwerk bereitszustellen == | === schalterd um GPIO im Netzwerk bereitszustellen === | ||
Der [https://github.com/astro/spacemsg/tree/master/schalterd/src Server] für GPIO-Interaktion ist ein HTTP-Server. | Der [https://github.com/astro/spacemsg/tree/master/schalterd/src Server] für GPIO-Interaktion ist ein HTTP-Server. | ||
== moleflap3 == | === moleflap3 === | ||
Code Repository: [https://github.com/c3d2/moleflap3 Moleflap3] | Code Repository: [https://github.com/c3d2/moleflap3 Moleflap3] | ||
=== Funktionsweise === | ==== Funktionsweise ==== | ||
==== Datenbank auf dem Server ==== | ===== Datenbank auf dem Server ===== | ||
* keys (handle, pubkey) | * keys (handle, pubkey) | ||
==== Benutzereingabe auf dem Client (im Browser) ==== | ===== Benutzereingabe auf dem Client (im Browser) ===== | ||
* key (privkey) | * key (privkey) | ||
** wird nicht an Server geschickt, sondern zum Entschlüsseln der Challenges genutzt | ** wird nicht an Server geschickt, sondern zum Entschlüsseln der Challenges genutzt | ||
==== Ziel ==== | ===== Ziel ===== | ||
Anonyme Autorisierung aus der Menge der dem Server bekannten Public Keys | Anonyme Autorisierung aus der Menge der dem Server bekannten Public Keys | ||
==== Challenge vom Server für den Client ==== | ===== Challenge vom Server für den Client ===== | ||
<source lang="erlang"> | <source lang="erlang"> | ||
Zeile 575: | Zeile 576: | ||
</source> | </source> | ||
==== Client-Algorithmus ==== | ===== Client-Algorithmus ===== | ||
Versuche alle Ciphertexts zu entschlüsseln. Prüfe den Hash. Ok? Dann sende Cleartext an Server zurück. | Versuche alle Ciphertexts zu entschlüsseln. Prüfe den Hash. Ok? Dann sende Cleartext an Server zurück. | ||
==== Autorisierung auf dem Server ==== | ===== Autorisierung auf dem Server ===== | ||
Stimmt der Cleartext mit der Challenge überein? Dann ist der Client im Besitz des öffentlichen Gegenstücks zu einem der in der Server-Datenbank hinterlegten Pubkeys. | Stimmt der Cleartext mit der Challenge überein? Dann ist der Client im Besitz des öffentlichen Gegenstücks zu einem der in der Server-Datenbank hinterlegten Pubkeys. | ||
Zeile 585: | Zeile 586: | ||
Der Server sendet den Türöffnungswunsch an schalterd. | Der Server sendet den Türöffnungswunsch an schalterd. | ||
==== ? ==== | ===== ? ===== | ||
Dieses Schema bietet Anonymisierung des jeweiligen Türöffnenden, jedoch wird das Kopieren von Schlüsseln nicht durch One-Time-Keys verhindert. | Dieses Schema bietet Anonymisierung des jeweiligen Türöffnenden, jedoch wird das Kopieren von Schlüsseln nicht durch One-Time-Keys verhindert. | ||
Zeile 591: | Zeile 592: | ||
Für Keys muss man gerade noch [[Benutzer:Astro|Astro]] ([[Benutzer Diskussion:Astro|Diskussion]]) fragen, und dann kann man das unter http://moleflap.hq.c3d2.de/ benutzen. | Für Keys muss man gerade noch [[Benutzer:Astro|Astro]] ([[Benutzer Diskussion:Astro|Diskussion]]) fragen, und dann kann man das unter http://moleflap.hq.c3d2.de/ benutzen. | ||
=== Zugang beantragen === | ==== Zugang beantragen ==== | ||
# Private Key erstellen: <code>openssl genrsa -out moleflap.key 2048</code> | # Private Key erstellen: <code>openssl genrsa -out moleflap.key 2048</code> | ||
Zeile 597: | Zeile 598: | ||
# Public Key signiert an [[Benutzer:Astro|Astro]] ([[Benutzer Diskussion:Astro|Diskussion]]) mailen | # Public Key signiert an [[Benutzer:Astro|Astro]] ([[Benutzer Diskussion:Astro|Diskussion]]) mailen | ||
= Siehe auch = | == Siehe auch == | ||
* [[HQ/Schlüsselersatz]] | * [[HQ/Schlüsselersatz]] | ||
* [[HQ/Zugangssystem]] | * [[HQ/Zugangssystem]] |
Version vom 18. Juli 2021, 01:22 Uhr
Achtung! realitätsfern! |
---|
Dieser Artikel enthält (in kleinen oder) in großen Teilen Informationen fern ab den aktuellen Verhältnissen. Ferner handelt es sich um einen fehlerbehafteten Artikel. |
Entwicklungsstand
Derzeit ist der manuelle Schalter in der Lage den Status u.a. über die Website zur Verfügung zu stellen.
Vorgesehen ist:
- Keymatic – Alternative: brmdoor
- opendoor via SSH (s.a. redmine)
- Status am Schild neben der beschränkten Wanddurchgangsöffnung
- Klingel neben der Eingangstür um auch bei Geräuschkulisse erhört zu werden
Schalter
Schalter ist der große Kasten mit dem 3-Positionen-Schalter in der Mitte direkt an der Eingangstür.
In ihm befindet sich ein Raspberry Pi (Pi) sowie eine Platine, die den Türsummer antreibt.[1]
Mit an der Platine des Pi ist die Stromversorgung für das kleine LED-Display außen neben der Eingangstür.
Einen Schaltplan findet man auch hier:
Reihe | außen | innen |
---|---|---|
1 | frei | frei |
2 | frei | frei |
3 | grau (keymatic schließen) | frei |
4 | hellblau (Kabel von der Platine) | frei |
5 | gelb | orange (Jumperwire zur Lochrasterplatine; +3,3V) |
6 | lila | frei |
7 | frei | frei |
8 | rot (keymatic öffnen) | frei |
9 | frei | frei |
10 | frei | frei |
11 | schwarz | frei |
12 | frei | frei |
13 | Stromversorgung (N900 - 2. Matemat) | weiß |
Reihe | außen | innen |
---|---|---|
1 | frei | frei |
2 | frei | frei |
3 | frei | frei |
4 | orange (Jumperwire zur Lochrasterplatine; +3,3V) | frei |
5 | grün | blau |
6 | gelb | frei |
7 | frei | grau (?keymatic schließen?) |
8 | rot (?keymatic öffnen?) | frei |
9 | frei | frei |
10 | frei | frei |
11 | frei | frei |
12 | schwarz | frei |
13 | frei | weiß |
Reihe | außen | innen |
---|---|---|
1 | frei | frei |
2 | frei | frei |
3 | hellblau | frei |
4 | frei | frei |
5 | frei | frei |
6 | frei | frei |
7 | frei | frei |
8 | frei | frei |
9 | frei | frei |
10 | frei | frei |
11 | frei | frei |
12 | frei | frei |
13 | frei | frei |
14 | frei | frei |
15 | frei | frei |
16 | frei | frei |
17 | frei | frei |
18 | frei | frei |
19 | frei | frei |
20 | gelb | orange |
21 | lila | rot |
22 | frei | frei |
23 | frei | frei |
24 | frei | frei |
25 | frei | frei |
26 | frei | frei |
27 | frei | frei |
28 | frei | frei |
29 | frei | frei |
30 | frei | frei |
31 | frei | frei |
32 | frei | frei |
33 | schwarz | türkis |
34 | weiß | orange |
Reihe | außen | innen |
---|---|---|
1 | frei | orange |
2 | frei | frei |
3 | frei | frei |
4 | frei | frei |
5 | frei | frei |
6 | frei | frei |
7 | frei | frei |
8 | frei | frei |
9 | frei | frei |
10 | frei | frei |
11 | frei | frei |
12 | frei | frei |
13 | frei | frei |
14 | frei | frei |
15 | frei | frei |
16 | frei | frei |
17 | frei | frei |
18 | frei | frei |
19 | frei | frei |
20 | gelb | orange |
21 | lila | rot |
22 | frei | frei |
23 | frei | frei |
24 | frei | frei |
25 | frei | frei |
26 | frei | frei |
27 | frei | frei |
28 | frei | frei |
29 | grau (Pi Pins) | frei |
30 | rot | frei |
31 | grau (Pi Stromversorgung) | frei |
32 | braun (Pi Stromversorgung) | frei |
33 | schwarz | blau (Außenbeleuchtung) |
34 | weiß | braun (Außenbeleuchtung) |
Anhalt, um den Status von Schalter lokal auszulesen
p23=$(cat /sys/class/gpio/gpio23/value) p24=$(cat /sys/class/gpio/gpio24/value) status=$(expr ${p23} \* 1 + ${p24} \* 2) echo Status: ${status} case ${status} in 0) echo "Offline";; 1) echo "Online";; 2) echo "Full";; *) echo "n.d.";; esac exit ${status}
Nach außen geht es mit dem gpio-sensor von Astro auf Port 5555 .
Das Compilat heißt /etc/service/zmq-switch/run
.
Stromversorgung dss Schalters
Der Schlalter wird über ein 12V Netzteil betrieben. Diese Spannung wird innerhaltb des Schalters auf 5V Konvertiert. Alle derzeit angeschlossenen Komponeten, bis auf den DC-DC Wandler verwenden nur 5V.
Keymatic
Um das HQ auch ohne Schlüssel betreten zu können, wurde die Eingangstür mit einem Funk-Türschlossantrieb aufgerüstet. Die Keymatic ist über Hackerbus mit dem Raspberry Pi im Schalter verbunden.
Leider haben die Signallitzen keine farbige Isolierung. Von oben nach unten:
- öffnen
- high
- schließen
Außerdem:
gelb | DC+ |
schwarz | DC- |
Diese werden im PoE-Stil wie folgt am RJ45 übergeben:
Pin | Funktion |
---|---|
8 | öffnen signal+ (optocupling) |
7 | schließen singal+ (optocupling) |
6 | reserviert/ungenutzt (für Status z.B.) |
5 | DC+ |
4 | DC+ |
3 | Signalmasse |
2 | DC- |
1 | DC- |
Damit kann über die GPIO-Pins die Tür auf- und Abgeschlossen werden. Dabei geht man wie folgt vor:
- per ssh mit dem Pi verbinden
- GPIO-Pins initialisieren (nur nach reboot nötig):
echo 18 > /sys/class/gpio/export echo 27 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio18/direction echo out > /sys/class/gpio/gpio27/direction
- Aufschließen:
echo "1" > /sys/class/gpio/gpio18/value sleep 0.1 echo "0" > /sys/class/gpio/gpio18/value
- Zuschließen:
echo "1" > /sys/class/gpio/gpio27/value sleep 0.1 echo "0" > /sys/class/gpio/gpio27/value
Software
OpenWrt für den RaspberryPi
Wir haben Config & Anleitung um ein OpenWRT für den Pi zu bauen: https://github.com/c3d2/schalter-openwrt
senmqd um GPIO im Netzwerk bereitszustellen
Der Server für GPIO-Interaktion spricht 0mq.
schalterd um GPIO im Netzwerk bereitszustellen
Der Server für GPIO-Interaktion ist ein HTTP-Server.
moleflap3
Code Repository: Moleflap3
Funktionsweise
Datenbank auf dem Server
- keys (handle, pubkey)
Benutzereingabe auf dem Client (im Browser)
- key (privkey)
- wird nicht an Server geschickt, sondern zum Entschlüsseln der Challenges genutzt
Ziel
Anonyme Autorisierung aus der Menge der dem Server bekannten Public Keys
Challenge vom Server für den Client
Challenge = to_hex(random_bytes(32)),
Hash = sha1(Challenge),
Ciphertexts = map(fun(Pubkey) -> encrypt(Challenge, Pubkey) end, KnownPubkeys),
{Hash, shuffle(Ciphertexts)}.
Client-Algorithmus
Versuche alle Ciphertexts zu entschlüsseln. Prüfe den Hash. Ok? Dann sende Cleartext an Server zurück.
Autorisierung auf dem Server
Stimmt der Cleartext mit der Challenge überein? Dann ist der Client im Besitz des öffentlichen Gegenstücks zu einem der in der Server-Datenbank hinterlegten Pubkeys.
Der Server sendet den Türöffnungswunsch an schalterd.
?
Dieses Schema bietet Anonymisierung des jeweiligen Türöffnenden, jedoch wird das Kopieren von Schlüsseln nicht durch One-Time-Keys verhindert.
Für Keys muss man gerade noch Astro (Diskussion) fragen, und dann kann man das unter http://moleflap.hq.c3d2.de/ benutzen.
Zugang beantragen
- Private Key erstellen:
openssl genrsa -out moleflap.key 2048
- Public Key erstellen:
openssl rsa -in moleflap.key -pubout
- Public Key signiert an Astro (Diskussion) mailen
Siehe auch
Einzelnachweise
foo im HQ
HQ/Schalter ist Teil vom HQ. Mit der hier verwendeten Vorlage:foo im HQ sollst du eine Übersicht über andere wichtige Gegenstände im HQ bekommen.