HQ/Schalter: Unterschied zwischen den Versionen

Aus C3D2
Wechseln zu: Navigation, Suche
K (Schalter)
K (satz ohne zusammenhang)
 
(14 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Entwicklungsstand ==
+
= 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.
  
 
''Vorgesehen ist:''
 
''Vorgesehen ist:''
* [https://redmine.c3d2.de/issues/5 Keymatic]
+
* [https://redmine.c3d2.de/issues/5 Keymatic] – Alternative: [https://brmlab.cz/project/brmdoor/start?s=brmdoor brmdoor]
* [https://redmine.c3d2.de/issues/106 opendoor via SSH]
+
* [[intern:opendoor| opendoor via SSH]] ([https://redmine.c3d2.de/issues/106 s.a. redmine])
 
* [https://redmine.c3d2.de/issues/107 Status am Schild] neben der beschränkten Wanddurchgangsöffnung
 
* [https://redmine.c3d2.de/issues/107 Status am Schild] neben der beschränkten Wanddurchgangsöffnung
 
* [[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.
  
In ihm befindet sich ein Raspberry&nbsp;Pi (Pi) sowie eine Platine, die den Türsummer antreibt.<ref>[https://media.c3d2.de/u/astro/m/schalterinnereien/ Bild der Innereien vom] [[{{PAGENAME}}|Schalter]] by [[Astro]]</ref>
+
In ihm befindet sich ein Raspberry&nbsp;Pi (Pi) sowie eine Platine, die den Türsummer antreibt.<ref>[https://media.c3d2.de/u/astro/m/schalterinnereien/ Bild der Innereien vom] [[{{PAGENAME}}|Schalter]] by [[User:Astro|Astro]]</ref>
  
 
Mit an der Platine des Pi ist die Stromversorgung für das kleine LED-Display außen neben der Eingangstür.
 
Mit an der Platine des Pi ist die Stromversorgung für das kleine LED-Display außen neben der Eingangstür.
 
Wenn der Pi zum Debugging ausgebaut werden muss, kriegt man ihn sonst nicht wieder installiert.
 
  
 
Einen Schaltplan findet man auch hier: [[Datei:Schalter_schaltbild.svg]]
 
Einen Schaltplan findet man auch hier: [[Datei:Schalter_schaltbild.svg]]
Zeile 83: Zeile 81:
 
{|
 
{|
 
|-
 
|-
|+ Belegung der Pins bei der Platine<ref>[https://media.c3d2.de/u/astro/m/board-im-schalter/ Bild von der Platine im] [[{{PAGENAME}}|Schalter]] by [[Astro]]</ref><ref>[https://media.c3d2.de/u/eri/m/schaltung-lochrasterplatine/ Schaltbild von der Platine im] [[{{PAGENAME}}|Schalter]] by [[User:Eri!]]</ref>
+
|+ Belegung der Pins bei der Platine<ref>[https://media.c3d2.de/u/astro/m/board-im-schalter/ Bild von der Platine im] [[{{PAGENAME}}|Schalter]] by [[User:Astro|Astro]]</ref>
 
|-
 
|-
 
! Reihe
 
! Reihe
Zeile 228: Zeile 226:
  
  
=== Anhalt um den Status von Schalter lokal auszulesen ===
+
== Anhalt um den Status von Schalter lokal auszulesen ==
  
 
<pre>
 
<pre>
Zeile 246: Zeile 244:
 
Das Compilat heißt <code>/etc/service/zmq-switch/run</code> .
 
Das Compilat heißt <code>/etc/service/zmq-switch/run</code> .
  
== 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 270: Zeile 268:
 
!Funktion
 
!Funktion
 
|-
 
|-
|1
+
|8
 
|öffnen signal+ (optocupling)
 
|öffnen signal+ (optocupling)
 
|-
 
|-
|2
+
|7
 
|schließen singal+ (optocupling)
 
|schließen singal+ (optocupling)
 
|-
 
|-
|3
+
|6
 
|reserviert/ungenutzt (für Status z.B.)
 
|reserviert/ungenutzt (für Status z.B.)
 
|-
 
|-
|4
+
|5
 
|DC+
 
|DC+
 
|-
 
|-
|5
+
|4
 
|DC+
 
|DC+
 
|-
 
|-
|6
+
|3
 
|Signalmasse
 
|Signalmasse
 
|-
 
|-
|7
+
|2
 
|DC-
 
|DC-
 
|-
 
|-
|8
+
|1
 
|DC-
 
|DC-
 
|}
 
|}
Zeile 302: Zeile 300:
 
* GPIO-Pins initialisieren (nur nach reboot nötig):
 
* GPIO-Pins initialisieren (nur nach reboot nötig):
 
<pre>
 
<pre>
echo 18 > /sys/class/gpio/export   // Pin „Aufschließen“
+
echo 18 > /sys/class/gpio/export
echo 25 > /sys/class/gpio/export   // Pin „Zuschließen“
+
echo 27 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio18/direction   // Pins als Ausgang konfigurieren
+
echo out > /sys/class/gpio/gpio18/direction
echo out > /sys/class/gpio/gpio25/direction
+
echo out > /sys/class/gpio/gpio27/direction
 
</pre>
 
</pre>
 
* Aufschließen:
 
* Aufschließen:
 
<pre>
 
<pre>
 
echo "1" > /sys/class/gpio/gpio18/value
 
echo "1" > /sys/class/gpio/gpio18/value
// ~20ms warten, entspricht ping -c1 8.8.8.8
+
sleep 0.1
 
echo "0" > /sys/class/gpio/gpio18/value
 
echo "0" > /sys/class/gpio/gpio18/value
 
</pre>
 
</pre>
 
* Zuschließen:
 
* Zuschließen:
 
<pre>
 
<pre>
echo "1" > /sys/class/gpio/gpio25/value
+
echo "1" > /sys/class/gpio/gpio27/value
// ~20ms warten, entspricht ping -c1 8.8.8.8
+
sleep 0.1
echo "0" > /sys/class/gpio/gpio25/value
+
echo "0" > /sys/class/gpio/gpio27/value
 
</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.
  
=== moleflap3 Web Interface ===
+
== 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.
 +
 
 +
== moleflap3 ==
 +
 
 +
Code Repository: [https://github.com/c3d2/moleflap3 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 ====
 +
 
 +
<source lang="erlang">
 +
Challenge = to_hex(random_bytes(32)),
 +
Hash = sha1(Challenge),
 +
Ciphertexts = map(fun(Pubkey) -> encrypt(Challenge, Pubkey) end, KnownPubkeys),
 +
{Hash, shuffle(Ciphertexts)}.
 +
</source>
 +
 
 +
==== 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.
  
[https://github.com/c3d2/moleflap3 Moleflap3] speichert für jeden Zugangsberechtigten nach Namen einen RSA Public Key. Beim Öffnungsversuch gibt der Benutzer den zugehörigen Private Key in seinem Browser ein, der ihn '''nicht''' abschickt, sondern dem Server nur den Versuch mitteilt. Der Server verschlüsselt dann eine Challenge nacheinander für die Pubkeys eines jeden Nutzers. Am Ende beweist der Client dem Server nur dass er die Challenge entschlüsseln kann. Dann schickt der Server den Türöffnungswunsch an den senmqd.
+
==== ? ====
  
 
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 338: Zeile 376:
 
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 344: Zeile 382:
 
# 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]]
  
== Einzelnachweise ==
+
= Einzelnachweise =
 
<references />
 
<references />
  

Aktuelle Version vom 13. September 2017, 13:47 Uhr

Entwicklungsstand

Derzeit ist der manuelle Schalter in der Lage den Status u.a. über die Website zur Verfügung zu stellen.

Vorgesehen ist:

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: Schalter schaltbild.svg

Belegung der Pins beim Pi (siehe Bild vom Pi im Schalter by Astro)
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ß
Belegung der Pins bei der Platine[2]
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


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 .

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-

Keymaticadapter.png

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

  1. Private Key erstellen: openssl genrsa -out moleflap.key 2048
  2. Public Key erstellen: openssl rsa -in moleflap.key -pubout
  3. Public Key signiert an Astro (Diskussion) mailen

Siehe auch

Einzelnachweise

  1. Bild der Innereien vom Schalter by Astro
  2. Bild von der Platine im Schalter by Astro

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.


Übersicht zu allen wichtigen Gegenständen im HQ (im Zentralwerk)
Raum im HQ Gegenstände
Hardware Sonstiges
Eingang zur Assembly

Staubsauger

Schlüsselkasten · HQ/Schalter · HQ/Klingel · keymatic

Postregal

Assembly

Server/ciderServer/cibertServer/pulsebert · Server/glotzbert · Server/lisbeth

TV · Beamer
LED-Stripe
HDMI-Capturedevice

Thermodrucker · Drucker#Epson Stylus SX420W · Drucker#Samsung SCX-4200 · C3DDrkkr

(Computer/pestbert) Lenovo ThinkPad#T61 pestbert · (Computer/pubert) Lenovo ThinkPad#T61 pubert · (Computer/upbert) Lenovo ThinkPad#T61 upbert · (Computer/penbert) Lenovo ThinkPad#T61 penbert

Feinstaubsensor#indoor

Bibliothek (im Bücherregal) · Beratungstisch · Schreibtische · Sofaecke · Leinwand
Küche Matemat Matekasse · Küchenzeile · Kühlschrank (Mate)
Werkstatt

Computer/testbert · Computer/delbert

Nähmaschine Pfaffbert · Nähmaschine Singbert

Werkzeug · Array
Schrank für Projekte novena · Stempel
Netzteile · Labornetzteil
Verbrauchsmaterial
Backstage Server/dacbert · Computer/debbert · Computer/alpbert
vor den Fenstern Feinstaubsensor#outdoor
auf dem Gang

Serverschrank#links

(Server/server3) Lenovo ThinkServer RD220#Gerät 0 · Dell PowerVault MD1000#Gerät 0

Serverschrank#rechts

(Server/server1) HP ProLiant DL380 G7
Server/server2
(Server/server4) HP ProLiant DL160 G6 · (Server/server5) Lenovo System x3250 M5
(Server/server6 · Server/server7) Supermicro 808-12
(Server/server8) Dell PowerEdge R210
Flyerständer · Kicker - Zeugs
Keller

PC´s,Laptops,Netzteile,…

Server/storage
(Server/server3) Lenovo ThinkServer RD220#Gerät 1 · Dell PowerVault MD1000#Gerät 1

Officekram Bauzeugs
raumübergreifend HQ/NetzIntern:Zentralwerk/Netzwerk · HQ/Telefon · Heizung