2 |verantwortlich=[[Benutzer:Daniel Bohrer|Daniel Bohrer]]
4 |beschreibung=Hardware-Schalter zum Setzen des Open/Close-Status
7 |interessenten=[[Benutzer:100nano|100nano]]
8 |source=Branch stratum-openclose-spw500v in [https://rohieb.name/git/openwrt.git]
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.
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.
18 Als Alternative ist es auch möglich, die im Router integrierten LEDs zur Anzeige des Öffnungsstatus zu benutzen.
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 kaufen (Baumarkt), LEDs und Atmel-Board darin integrieren?
29 ** Atmel-Seite ({{Benutzer|bluebrother}} hat ein STK-500 dagelassen)
30 * Wenn Router-LEDs für Statusanzeige: andere LEDs im Router quiet machen
31 * unwichtig: das Magenta vom Router loswerden → Stratumlogo?
33 Aktuell ungelöste Probleme:
34 * Ist ein Aufputz-Schalter zum Schalten von 3,3V ausgelegt?
35 * Wie wird der Status im IRC gesetzt?
36 ** Möglich: über eine Pipe oder Socket mit dem Python-Framework von [[ZombiePoet]] kommunizieren
37 * Drosselung der Events, um Spam im IRC zu verhindern. Künstliche Verzögerung einbauen?
38 * Dauerhaft Strom im Flur beschaffen
42 ** 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.
43 ** Scannen des lokalen Netzes auf pingbare (gewhitelistete) Rechner, siehe unten
44 * Der Router wird an die Klingel angeschlossen und leitet Klingel-Events ins IRC weiter
45 ** Spätestens hier wäre ein eigener IRC-Client auf dem Router sinnvoll, um nicht immer den Umweg über ZombiePoet gehen zu müssen.
46 * 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.
48 == Hardwareanbindung ==
49 Nähere Überlegungen, wie
50 * die Hardware (Schalter, Leuchten, Klingel) über einen Mikrocontoller an den OpenWrt Router geknödelt werden
51 * Softwarestrukturen aussehen
53 Teilweise lose Gedankensammlung von mir ([[Benutzer:100nano|100nano]]).<br>
56 <!-- [[Datei:OpenClose SchemaHardware.png|thumb|Grobe schematische Darstellung der Hardwarekomponenten]] -->
57 Grobe schematische Darstellung der Hardwarekomponenten:
58 [[Datei:OpenClose SchemaHardware.png||none|550px|||Grobe schematische Darstellung der Hardwarekomponenten]]
59 '''Spannungsversorgungen:'''
60 * Router über Steckernetzteil: Steckdose benötigt
61 * 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.
64 * GND schalten, uC internen pullup verwenden.
66 * Jeweils 1 output für Open/Closed. Z.B. grün/rot. --> Eindeutige geometrische Anordnung (Erkennbarkeit rot/grün-Farbenblinde)
67 * Orange als "Update läuft" Anzeige. Wenn aus ist Status übernommen. Details siehe unten.
68 '''Einbindung der Klingel:'''<br>
69 (Vermute, dass das Läuten auch über den Lautsprecher ausgegeben wird, der auch als Lautsprecher+Mikrofon beim Gegensprechen verwendet wird.)
70 * Lautsprecher/Klingel über Optokoppler (OK) und evtl. Gleichrichter (Diode) + Tiefpass an inputpin. (Für Näheres erst Messungen machen)
71 * je nach Aufbau den Schalter für "Gegensprechen an" an inputpin des uC. __> Unterscheidung zwischen Klingeln und Sprache.
72 '''Pegelanpassung:'''<br>
73 Bei Betrieb mit 3,3V nicht nötig, nur, falls aus irgendeinem Grunde doch 5V verwendet werden.
74 * Router zu AVR: Kein Problem, 3,3V werden auch bei erwarteten 5V als 1 erkannt.
75 * AVR zu Router: zB Spannungsteiler mit 2 Widerständen.
77 === serielle Kommunikation ===
78 * AVR möglichst dumm halten (router ist flexibler, dort kann mal schnell ein script angepasst werden, kein neuflashen des uC nötig)
79 * Router kann einzelne Werte des uC abfragen
81 * 1 byte als abfragenachricht, uC antwortet mit wert oder setzt ausgang etc.
83 * ganzes aendern von registern einbauen (spaetere nutzung weiterer io-pins ohne umflashen moeglich
87 * Irgendein Status ist global gesetzt (schalter und irc/website/...)
89 * Schalter: Statuswechselanforderung durch Benutzer
90 * uC merkt sich das und macht orange Updatelampe an
92 * router bemerkt statuswechsel und aendert den status (ssh etc. (kenne interne vorgaenge mit bot/homepage nicht)
93 * wenn status geaendert, fordert router ausschalten der orangen led an.
95 * wartezeit (aenderung des poll-intervalls) um zu schnelle wechsel (spam) zu vermeiden. (Minutenbereich)
97 Übersteuerbarkeit des durch den Schalter gesetzten Status notwendig:<br>
98 Szenario: Der letzte den space verlassende hat es doch mal vergessen, den status zu aendern und es faellt zuhause auf.<br>
99 gewisser personenkreis muss moeglichkeit haben, den status manuell zu setzen.
100 Router muss dies bis zum naechsten (hardwareschalter)statuswechsel ignorieren.<br>
102 ...to be continued --[[Benutzer:100nano|100nano]]
104 == Alte Diskussion ==
105 :''hierher verschoben von [[Open/Close-Monitor]]''
107 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...
109 *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)
111 * 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)
113 * Vielleicht was per 1-Wire? http://www.1-wire.de/1-Wire/Zubehoer-fuer-1-Wire/OEffnungsmelder-Aufmontage.html
115 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)
117 : 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)
119 [[Kategorie:Open/Close-Monitor]]