/* CTF-Stuff */ Platz 3 beim insomnihack teaser
[stratum0-wiki.git] / Open%2FClose-Monitor%2FHardware-Schalter.mw
1 {{Projekt
2 |verantwortlich=[[Benutzer:Daniel Bohrer|Daniel Bohrer]]
3 |status=aktiv
4 |beschreibung=Hardware-Schalter zum Setzen des Open/Close-Status
5 |bild=
6 |bildbeschreibung=
7 |interessenten=[[Benutzer:100nano|100nano]]
8 |source=Branch stratum-openclose-spw500v in [https://rohieb.name/git/openwrt.git]
9 |lizenz=
10 |download=
11 |version=
12 }}
13 == Plan ==
14 Da das manuelle Pflegen des Öffnungsstatus im IRC fehleranfällig ist (Leute vergessen, den Space auf- oder zuzumachen), soll neben der Eingangstür im Space ein Hardware-Schalter (Lichtschalter, Aufputz-Variante) installiert werden, der den Status auf der Homepage und im IRC setzt. Zusätzlich wären eine rote und grüne Leuchtdiode schön, die Rückmeldung über den aktuell gesetzten Status gibt.
15
16 Als Hardware kommt ein ausgedienter Speedport W500V zum Einsatz, auf dem OpenWRT [http://wiki.openwrt.org/toh/t-com/spw500v läuft]. Dieser ist potent genug, um per SSH eine Verbindung zum Webserver aufzubauen und den Status zu aktualisieren. Über den seriellen Port kommuniziert er mit einem Atmel-basierten Erweiterungsboard, das die LEDs ansteuert und den Schalterstatus an den Router weiterreicht. Das Erweiterungsboard soll wenn möglich über die 3,3V Versorgungsspannung am seriellen Port versorgt werden.
17
18 Als Alternative ist es auch möglich, die im Router integrierten LEDs zur Anzeige des Öffnungsstatus zu benutzen.
19
20 == To Do ==
21 * <s>OpenWRT auf Speedport zum Laufen bringen</s>
22 ** <s>Serielle Konsole fit machen: keine Kernel-Logs, keine Login-Konsole</s>
23 ** <s>WLAN zum laufen bringen (Client-Mode, DHCP)</s>
24 * Protokoll über UART spezifizieren: Schalter-umgelegt-Event, Handshake? möglicherweise: LED-Farbe setzen
25 * Atmel-Board (zB [http://www.atmel.com/devices/attiny2313.aspx?tab=overview ATtiny 2313], {{Benutzer|bluebrother}} hat welche) entwerfen, Hardware beschaffen und bestücken
26 * Schalter/Taster kaufen (Baumarkt), LEDs und Atmel-Board darin integrieren?
27 : Gibt doch auch Schalter, die von sich auch im eingeschalteten Zustand leuchten... gleich so einen nehmen? Statt LED gleich das Flurlicht dranhängen ? (Doppel-Um-Schalter ?)
28 * Apps schreiben
29 ** Router-Seite
30 ** Atmel-Seite ({{Benutzer|bluebrother}} hat ein STK-500 dagelassen)
31 * Wenn Router-LEDs für Statusanzeige: andere LEDs im Router quiet machen
32 **trivial: <pre>root@OpenWrt:/# echo 0 > /sys/class/leds/power\:green/brightness </pre>
33 * unwichtig: das Magenta vom Router loswerden → Stratumlogo?
34 :: Abkratzen mit Zuckerstückchen sollte gehen.
35
36 === Aktuell ungelöste Probleme ===
37 * Ist ein Aufputz-Schalter zum Schalten von 3,3V ausgelegt?
38 ** was ist das denn für eine Frage? natürlich schalten die auch 3,3V :P {{Unsigniert|DooMMasteR|8. April 2012, 15:29 Uhr}}
39 *** Die Frage sollte vermutlich in die Richtung gehen, dass bei 3,3V und dem winzigen Strom die Kontakte irgendwann korrodieren, da für 230V Wechselspannung gedachte Schalter meist keine Veredelung der Kontaktflächen besitzen und somit nach einer Weile einfach korrodieren. Bei 230V übernimmt der oft entstehende Funke beim Schalten eine gewisse Reinigung der Kontakte und 230V kommen leichter durch die Korrosion hindurch. --[[Benutzer:Kretschi|Kretschi]] 16:44, 8. Apr. 2012 (CEST)
40 *** OMG, dann nehmt doch einen Goldbeschichteten ! *g*
41 ** Abhilfe: Klingeltaster. Taster ist ja eh gewünscht. --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 20:09, 8. Apr. 2012 (CEST)
42 * Wie wird der Status im IRC gesetzt?
43 ** Möglich: über eine Pipe oder Socket mit dem Python-Framework von [[ZombiePoet]] kommunizieren
44 * Drosselung der Events, um Spam im IRC zu verhindern. Künstliche Verzögerung einbauen?
45 * Dauerhaft Strom im Flur beschaffen
46
47 == Erweiterungen ==
48 * Automatismen:
49 ** im Türschloss wird ein Kontakt eingebaut, der erkennt, ob die Tür abgeschlossen ist. Falls dies der Fall ist, wird der Status unabhängig vom Stand des Schalters auf "zu" gesetzt.
50 ** Scannen des lokalen Netzes auf pingbare (gewhitelistete) Rechner, siehe unten
51 * Der Router wird an die Klingel angeschlossen und leitet Klingel-Events ins IRC weiter
52 ** Spätestens hier wäre ein eigener IRC-Client auf dem Router sinnvoll, um nicht immer den Umweg über ZombiePoet gehen zu müssen.
53 * Falls noch genügend Platz im Flash (4 MB) und RAM (16 MB) ist, könnte der Router auch für andere Aufgaben verwendet werden.
54
55 == Hardwareanbindung ==
56 Nähere Überlegungen, wie
57 * die Hardware (Schalter, Leuchten, Klingel) über einen Mikrocontoller an den OpenWrt Router geknödelt werden
58 * Softwarestrukturen aussehen
59 könnte(n).<br>
60 Teilweise lose Gedankensammlung von mir ([[Benutzer:100nano|100nano]]).<br>
61
62 === Hardware===
63 <!-- [[Datei:OpenClose SchemaHardware.png|thumb|Grobe schematische Darstellung der Hardwarekomponenten]] -->
64 Grobe schematische Darstellung der Hardwarekomponenten:
65 [[Datei:OpenClose SchemaHardware.png||none|550px|||Grobe schematische Darstellung der Hardwarekomponenten]]
66 '''Spannungsversorgungen:'''
67 * Router über Steckernetzteil: Steckdose benötigt
68 * AVR vom Router: der Pinheader mit der seriellen Schnittstelle bringt gleich 3,3V mit. --> Forderung: AVR muss mit 3,3V laufen. --> Sollte kein Problem sein, AVR Takt auch unkritisch, bei Taktwahl spaetere Baudrate (Abweichungen Solltimings (Stichwort "Baudratenquarz")) beachten.
69 '''Umschalter:'''
70 * 2 input pins am uC.
71 * GND schalten, uC internen pullup verwenden.
72 '''LEDs:'''
73 * Jeweils 1 output für Open/Closed. Z.B. grün/rot. --> Eindeutige geometrische Anordnung (Erkennbarkeit rot/grün-Farbenblinde)
74 :Hah! Was stylisch wäre: Als Statusanzeige eine transparente Scheibe mit schwarzem Stratumlogo drauf, die von hinten grün bzw. rot bzw. gelb angestrahlt wird, und beim Statuswechsel zusätzlich um 90° gedreht wird (bzw 45° bei Out-of-sync, ähnlich wie beim [[StratumsphereTrayIcon]]) --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 04:40, 8. Apr. 2012 (CEST)
75 ::Vor Mechanik hab ich immer Schiss^^. Aber gehen wuerde es: plexischeibe, logo eingraviert oder aufgeklebt, unten ein servo, der auch vom uC befeuert wird. [[Benutzer:100nano|100nano]] 12:35, 8. Apr. 2012 (CEST)
76
77 ::Gerade noch einen mechaniklosen Einfall gehabt: 3 Plexiglasplatten, in die das S0-Logo eingraviert werden. 1x hochkant, 1x 45° gekippt, 1x 90° quer. Die 3 platten übereinander und an jede platte kommt von den seite die passende beleuchtungsfarbe. Es ''sollte'' sich dann das licht an der gravierten flaeche brechen und eben das jeweil gewuenschte logo in der richtigen farbe leuchten. [[Benutzer:100nano|100nano]] 16:07, 8. Apr. 2012 (CEST)
78
79 :::Sieht nach Dagegenlaufundabbrechgefährdung aus… ;-) Ich habe grade überlegt, ob man die drei gekippten Stratumlogos in den Deckel des Routers einfräsen und die LEDs darunter unterbringen könnte. Der Router soll ja eh an der Wand hängen. --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 19:30, 8. Apr. 2012 (CEST)
80
81 * Orange als "Update läuft" Anzeige. Wenn aus ist Status übernommen. Details siehe unten.
82 '''Einbindung der Klingel:'''<br>
83 (Vermute, dass das Läuten auch über den Lautsprecher ausgegeben wird, der auch als Lautsprecher+Mikrofon beim Gegensprechen verwendet wird.)
84 * Lautsprecher/Klingel über Optokoppler (OK) und evtl. Gleichrichter (Diode) + Tiefpass an inputpin. (Für Näheres erst Messungen machen)
85 * je nach Aufbau den Schalter für "Gegensprechen an" an inputpin des uC. __> Unterscheidung zwischen Klingeln und Sprache.
86 '''Pegelanpassung:'''<br>
87 Bei Betrieb mit 3,3V nicht nötig, nur, falls aus irgendeinem Grunde doch 5V verwendet werden.
88 * Router zu AVR: Kein Problem, 3,3V werden auch bei erwarteten 5V als 1 erkannt.
89 * AVR zu Router: zB Spannungsteiler mit 2 Widerständen.
90
91 === serielle Kommunikation ===
92 * AVR möglichst dumm halten (router ist flexibler, dort kann mal schnell ein script angepasst werden, kein neuflashen des uC nötig)
93 * Router kann einzelne Werte des uC abfragen
94 beispiele:
95 * 1 byte als abfragenachricht, uC antwortet mit wert oder setzt ausgang etc.
96 alternativ
97 * ganzes aendern von registern einbauen (spaetere nutzung weiterer io-pins ohne umflashen moeglich
98
99 === Logik/Ablauf ===
100 Ausgangssituation:
101 * Irgendein Status ist global gesetzt (schalter und irc/website/...)
102 <br>
103 * Schalter: Statuswechselanforderung durch Benutzer
104 * uC merkt sich das und macht orange Updatelampe an
105 * router pollt uC
106 * router bemerkt statuswechsel und aendert den status (ssh etc. (kenne interne vorgaenge mit bot/homepage nicht)
107 * wenn status geaendert, fordert router ausschalten der orangen led an.
108 * update erfolgreich.
109 * wartezeit (aenderung des poll-intervalls) um zu schnelle wechsel (spam) zu vermeiden. (Minutenbereich)
110 <br>
111 Übersteuerbarkeit des durch den Schalter gesetzten Status notwendig:<br>
112 Szenario: Der letzte den space verlassende hat es doch mal vergessen, den status zu aendern und es faellt zuhause auf.<br>
113 gewisser personenkreis muss moeglichkeit haben, den status manuell zu setzen.
114 Router muss dies bis zum naechsten (hardwareschalter)statuswechsel ignorieren.<br>
115
116 ...to be continued --[[Benutzer:100nano|100nano]]
117
118 : Es würde sich da anbieten, den Schalter als Taster auszuführen, der bei einem Druck den Status umschaltet. So kann der Status auch extern geändert werden, ohne den Schalter umlegen zu müssen. Ist nur noch die Frage, wie man den Status für Farbblinde darstellt… --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 04:36, 8. Apr. 2012 (CEST)
119 ::Das mit dem '''Taster''' ist ne gute Idee. wie du sagst ist '''a)''' das Hardware-/mechanische Problem geloest, dass er auf einer Stellung stehen bleibt geloest, wie es bei einem Schalter (statt Taster) der Fall ist. '''---''' Gegen versehentliches Drücken (dagegenkommen, mit Lichtschalter verwechseln etc) könnte man '''b)''' eine '''gedrückt-halte-Dauer''' einrichten (sowas wie 3s oder 4s halten, erst dann gehts los, die Update LED geht an (damit weiss man dann auch, wie lange man druecken muss). (Alternative zum Halten waere ein kleiner Taster (an der seite oder so) zum Abbrechen, aber diese Variante hab ich schon wieder verworfen ;) ) '''---''' '''c)''' Wegen der '''Darstellung''': im einfachsten fall leds in das tastergehaeuse und beschriftung dran, oder ein gehauese (groessenordnung 20,30cm) dazu, bei dem man vielleicht etwas schoener die schrift anbringen kann. [[Benutzer:100nano|100nano]] 12:35, 8. Apr. 2012 (CEST)
120 ::: Das Farbenblind-Problem sollte sich lösen lassen durch Grün-Orange statt Grün-Rot. Oder Dreifarb-LED nehmen und dann noch Blau für Updating. [[Benutzer:Lulu|Lulu]]
121
122 == Alte Diskussion ==
123 :''hierher verschoben von [[Open/Close-Monitor]]''
124
125 Im einfachsten Fall: ein Atmel (Arduino?) mit Ethernet-Buchse an der Tür, der per Reed-Kontakt oder Taster prüft, ob die Tür verschlossen ist. Falls die Tür auf- oder abgeschlossen wird, wird ein (noch festzulegendes) Signal (HTTP-Request?) an den Webserver geschickt, der entsprechend den Status auf der Homepage aktualisiert. Entsprechend muss Authentifizierung geschehen, damit nicht jeder den Tür-Status auf der Homepage kaputt machen kann...
126
127 *Evtl. [[Raspberry Pi]]? Authentifizierung über ssh am Webserver (per pubkey) mit Skript zum Ändern des Türstatus (o.Ä.), dazu genug GPIOs um Reed-Kontakt und später Motor ansteuern zu können. Außerdem als zentrales Loggingsystem auf SD-Karte verwendbar. Einziges Problem ist das das Board noch nicht verfügbar ist :) --[[Benutzer:Emantor|Emantor]] 06:39, 12. Jan. 2012 (UTC)
128
129 * Evtl. [http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html AVR-Netio], kostet ungelötet als Bausatz mit NIC 20 Euro. Dazu wäre es praktisch das [http://www.ethersex.de/index.php/Main_Page ethersex] darauf läuft. --[[Benutzer:Terminar|Terminar]] 10:11, 19. Jan. 2012 (UTC)
130
131 * Vielleicht was per 1-Wire? http://www.1-wire.de/1-Wire/Zubehoer-fuer-1-Wire/OEffnungsmelder-Aufmontage.html
132
133 Alternativer Ansatz: Ich habe einen alten Speedport W500V mit OpenWRT wiederbeleben können, da könnte man alle 5 Minuten per Broadcast pingen und schaun, ob Rechner im Space sind. Wenn das der Fall ist, aktualisiert der Speedport den Status über SSH. Die einzige Schwierigkeit im Moment scheint der begrenzte Flash von 4 MB auf dem Router zu sein. --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 12:26, 31. Mär. 2012 (CEST)
134
135 : Prinzipiell möglich, aber aus Gründen erstmal verworfen (was ist, wenn Personen ohne Rechner im Space sind?). Möglicherweise später als Automatismus noch implementierbar. --[[Benutzer:Daniel Bohrer|Daniel Bohrer]] 04:42, 7. Apr. 2012 (CEST)
136
137 [[Kategorie:Open/Close-Monitor]]
This page took 0.044092 seconds and 5 git commands to generate.