(→API: Aktueller Stand) |
(→API: blinkencontrol kann (sobald die neue Version deployt ist) wieder Animationen speichern) |
||
Line 74: | Line 74: | ||
| '''device'''=''lampe'', '''raw_string'''=''animation'' | | '''device'''=''lampe'', '''raw_string'''=''animation'' | ||
| Setzt ''animation'' auf ''lampe''. Format ist <tt>delay1,red1,green1,blue1 delay2,red2,green2,blue2</tt> <nowiki>[...]</nowiki>, siehe [[Blinkencontrol]] | | Setzt ''animation'' auf ''lampe''. Format ist <tt>delay1,red1,green1,blue1 delay2,red2,green2,blue2</tt> <nowiki>[...]</nowiki>, siehe [[Blinkencontrol]] | ||
|- | |||
| POST <tt>/ajax/blinkencontrol</tt> | |||
| '''device'''=''lampe'', '''raw_string'''=''animation'', '''name'''=''name'' | |||
| Setzt ''animation'' auf ''lampe'' und speichert sie unter ''name'' ab, so dass sie im Webinterface ausgewählt werden kann. | |||
|- | |||
| POST <tt>/ajax/blinkencontrol</tt> | |||
| '''device'''=''lampe'', '''name'''=''name'', '''delete'''=1 | |||
| Löscht die Animation ''name'' von ''lampe'' | |||
|- | |- | ||
| GET <tt>/ajax/charwrite</tt> | | GET <tt>/ajax/charwrite</tt> |
Revision as of 21:30, 16 September 2014
Lichtsteuerung stable | |
---|---|
Verbraucher per Webinterface steuern | |
Beteiligt | derf, marudor |
Quelltext | github |
Lampen, Blinkenlights und weitere Geräte, fernsteuerbar per Automatik, Website und Android-App.
Web
Die Lichtsteuerung findet sich unter dorfmap im Chaosdorfnetz. Das Interface basiert auf AngularJS und wird von marudor entwickelt. Für sehr alte Geräte (und ggf. Smartphonebrowser) gibt es ein weniger hübsches Legacy-Interface unter dorfmap/m.
Hardware
Kernstück des Ganzen sind SI2C-Instanzen an feedback und donationprint. Daran hängen die Steuer-AVRs der jeweiligen Geräte und tun (wenn sie mit der richtigen Adresse angesprochen werden) Dinge.
Einige Verbraucher werden noch direkt über GPIO-Pins (Optokoppler + Transistor) geschaltet, das ist aber Legacy und wird abgebaut.
Die Schaltspannung der Schieberegister ist 12V und geht wahlweise direkt zum Kleinverbraucher oder zu einem 230V-Relais.
Software
- dorfmap
- dorfmap-deb (Helfer)
Automatik
Die Außenbeleuchtung wird automatisch nach der aktuellen Tageszeit geschaltet. Benutzt wird dazu die Perl-Library Astro::Sunrise, die anhand unserer Koordinaten und dem aktuellen Datum recht akkurate Zeiten für Sonnenauf- und -untergang berechnet. Per cronjob wird alle 6 Minuten überprüft, ob Nacht ist oder nicht, und entsprechend die Beleuchtung geschaltet.
Der Printer/HP2100 und die Windowgarden-Pumpe werden nach 20 Minuten automatisch abgeschaltet.
Manuell
Grundlage ist ein Grundriss des Clubraums. Aus einer Koordinatendatei wird ausgelesen, wo welche Lampe ist, und abhängig von ihrem Status ein entsprechendes Symbol angezeigt. Bei automatisch gesteuerten Lampen wird die Automatik gesteuert, alle anderen können durch einen Klick aufs Symbol getoggelt werden.
Weil die Karte eh schon da ist, wird außerdem der Status von einigen Servern / Embedded Hosts, unseren WLAN-APs und den Druckern angezeigt. Der ist sinnvollerweise auch read-only, die Hosts werden einfach angepingt. Eingeschaltete Hosts sind grün, ausgeschaltete grau oder rot.
Es gibt eine Reihe von Shortcuts, die mehrere Aktionen zusammenfassen. "Shutdown" schaltet z.B. alle Lampen aus und den Raumstatus auf nicht-öffentlich, "Putzen" sorgt für viel Licht, etc.
API
Es existiert eine (noch nicht finale) JSON-API. In einigen Fällen wird auch Textausgabe unterstützt. Für Textformat .txt an Anfragen anhängen (oder curl -H 'Accept: text/plain' benutzen), für JSON entsprechend .json bzw. application/json.
/get liefert derzeit auch PNGs. Sie entsprechen den in der Übersicht verwendeten.
Request | Parameter | Aktion |
---|---|---|
POST /action | action=on|off|toggle, device=lampe | Schaltet lampe an / aus, gibt den neuen Status als JSON zurück |
POST /action | action=shortcut, shortcut=aktion | Führt aktion aus (z.B. shutdown oder amps on) |
POST /action | action=preset, preset=preset | Schaltet die Lampen wie in preset angegeben |
GET /ajax/blinkencontrol | device=lampe | Gibt alle gespeicherten Blinkencontrol-Animationen (und falls bekannt die aktuell laufende) als JSON zurück |
POST /ajax/blinkencontrol | device=lampe, raw_string=animation | Setzt animation auf lampe. Format ist delay1,red1,green1,blue1 delay2,red2,green2,blue2 [...], siehe Blinkencontrol |
POST /ajax/blinkencontrol | device=lampe, raw_string=animation, name=name | Setzt animation auf lampe und speichert sie unter name ab, so dass sie im Webinterface ausgewählt werden kann. |
POST /ajax/blinkencontrol | device=lampe, name=name, delete=1 | Löscht die Animation name von lampe |
GET /ajax/charwrite | Gibt die möglichen Modi zurück | |
POST /ajax/charwrite | device=anzeige, text=modus|text | Setzt modus oder freitext für anzeige |
GET /ajax/menu | Gibt die vorhandenen Shortcuts und Presets (siehe /action) zurück | |
GET /get/device | Gibt den aktuellen Status von device zurück | |
GET /list/all | Gibt alle Geräte mit Koordinaten, Status, Beschreibung etc. zurück | |
GET /space_api | Hackerspacestatus für die spaceAPI |
Angeschlossene Geräte
Die genaue Zuordnung zwischen Kabel / GPIO-Pin und Gerät ist auf donationprint und feedback dokumentiert. Jede Automatik ist individuell deaktivierbar.
Gerät | Steuerung |
---|---|
Außenbeleuchtung (Röhre über Tür) | Automatik: Nicht Shutdown && Nacht (+10 Minuten Dämmerung) |
LEDS im Schaufenster | Automatik: Nacht (+30 Minuten Dämmerung) |
LED-Leiste über Chaosdorflogo, Schleuse | Automatik: Nicht Shutdown && Nacht (+90 Minuten Dämmerung) |
RGB-LED-Leiste, Lounge | Manuell: Blinkencontrol |
Weißer LED-Strahler, Lounge | Manuell |
Grüner LED-Strahler, Lounge | Manuell |
Luft-/Wasserpumpe Windowgarden, Lounge | Manuell an, automatisch nach 5 Minuten aus |
Kaltweiße LED-Platte, Treppe | Manuell |
4x7Segment-Anzeige, Lounge | Wahlweise Uhrzeit / Hostcount / eigener Text |
Printer/HP2100 | Manuell an, automatisch nach 20 Minuten aus |
Blassblaue LED-Röhre, Hackcenter | Manuell |
Lampe im eMac-Gehäuse, Hackcenter | Manuell |
LED-Leuchten-Reihe, Hackcenter | Manuell |
Blauer LED-Streifen, Hackcenter | Manuell |
Warmweiße LED-Spots, Hackcenter | Manuell |
Helle weiße Doppelröhre, Hackcenter | Manuell |
Verstärker, Serverraum | Manuell: Verstärkerschaltung |
Ladegerät | Automatik: An bei Unshutdown, aus bei Shutdown |
Die Automatik der Außenbeleuchtung lässt sich durch Klick auf die Lampe an / aus schalten, nach maximal sechs Minuten wird die Änderung an der Lampe übernommen. Im Gegensatz zu anderen Aktionen ändert das auch nichts am Dorf-Shutdownstatus. Im Webinterface steht "A" für Automatik, "X" für keine Automatik.
Was weiterhin angezeigt wird:
- Drucker (readonly, per ping, alle 5 Minuten aktualisiert)
- WLAN-APs (readonly, per ping, alle 5 Minuten aktualisiert)
- Server (readonly, per ping, alle 5 Minuten aktualisiert)
- Türstatus (readonly, alle 5 Minuten aktualisiert)
Shutdown-Konzept
Per Default (z.B. nach einem Stromausfall) befindet sich das Dorf im Shutdown.
Shutdown einschalten
- Klick auf Actions > Shutdown in dorfmap oder dreisekündiges Drücken des schwarzen Tasters am Spendenterminal (bis die grüne LED ausgeht)
- Beleuchtung im Hackcenter geht sofort aus
- Beleuchtung in der Schleuse (Logo und über der Tür) geht nach 1 bis 6 Minuten aus
- Beleuchtung im Schaufenster leuchtet weiterhin, falls Nacht ist
Shutdown ausschalten
- Klick auf Actions > Unshutdown oder irgendeine steuerbare Lampe in dorfmap oder dreisekündiges Drücken des schwarzen Tasters am Spendenterminal (bis die grüne LED angeht)
- Falls eine Lampe angeklickt wurde, wird diese eingeschaltet
- Beleuchtung in der Schleuse (Logo und über der Tür) geht nach 1 bis 6 Minuten an, falls Nacht ist; alternativ sobald die Sonne untergegangen ist