====== Lichtsteuerung ====== **UPDATE 23.04.2016: Die Steuerung befindet sich nicht in Benutzung** Die aktuelle Steuerung des Lichts und des Stroms für [[raeume:start#Aerie]] ist über MQTT möglich. Die Endpunkte sind auf [[infrastruktur:netzwerk:mqtt:start#Licht/Elektronik]] beschrieben. ====== Altes Projekt ====== Die Clubraumsteuerung ist noch recht neu und ermöglicht die Steuerung diverser Geräte im Space. Mehr Geräte und intelligentes Verhalten werden folgen. Die Raumsteuerung kann einfach im Browser unter http://10.42.1.73 aufgerufen werden. ====== Hardware ====== Die Raumsteuerung läuft aktuell auf einem Raspberry Pi, der im Bällebad auf dem Tisch steht. In Zukunft wird er an einer weniger angreifbaren Position untergebracht sein. Die Ansteuerung der bisher unterstützten Geräte erfolgt durch Funksteckdosen. Weitere andere Techniken (für LEDs und IR-steuerbare Geräte) werden folgen. Die Raumsteuerung selbst auf dem Pi ist ein auf der [[http://www.tornadoweb.org/en/stable/|tornado]]-Bibliothek basierender Webserver in Python 3. Die Ansteuerung der Funksteckdosen geschieht über ein Sendemodul, das über die GPIO angeschlossen ist und von [[https://xkonni.github.io/raspberry-remote/|raspberry-remote]] bedient wird. ====== Intelligentes Verhalten ====== Beim Öffnen der Tür werden einige Geräte automatisch eingeschaltet. Beim Schließen der Tür werden alle Geräte automatisch ausgeschaltet. in Zukunft ist auch die Überprüfung der Fenster sowie einige andere Dinge geplant. ====== API ====== Die Raumsteuerung hat eine umfangreiche API, welche via HTTP zu erreichen ist. ^ Pfad^ Beschreibung | | **/list**| Gibt ein JSON-Objekt aller vorhandenen Geräte zurück. (mehr dazu weiter unten) | | **/on/**name| Schaltet das Gerät ein. | | **/off/**name| Schaltet das Gerät aus. | | **/toggle/**name| Schaltet das Gerät um. (aus→ein bzw. ein→aus) | | **/get/**name| Gibt den aktuellen Status des Geräts zurück. | | **/info/**name| Gibt alle Informationen zu diesem Gerät, inklusive dem aktuellen Status, zurück. | | **/presets**| Gibt ein JSON-Objekt aller vorhandenen Presets zurück. | | **/preset/**name| Wendet dieses Preset an. | | **/shutdown**| Schaltet alle Geräte aus. | | **/ws**| Echtzeit-Websocket-API (auch Port 80). Sendet eine JSON-Liste [name, status], wenn sich der Status eines Gerätes ändert. | ===== HTTP-Statuscodes ===== Folgende HTTP-Statuscodes werden von der API unterstützt: ^ Statuscode^ Bedeutung | | 400| Der Befehl wurde erkannt aber die Verwendung ist falsch. | | 404| Dieser Befehl oder dieses Gerät/Preset ist nicht bekannt. | | 405| Dieser Befehl wird von diesem Gerät nicht unterstützt. | ===== Gerätedaten ===== Folgende Eigenschaften kann ein Gerät haben (zurückgegeben von **/info/** und **/list**): ^ Name^ Erklärung | | x| X-Position auf der Karte (int) | | y| Y-Position auf der Karte (int) | | type| Gerätetyp. (str, mehr Informationen weiter unten) | | image| Bildtyp des Geräts. (str, optional je nach Gerätetyp) | | method| Weg, über den dieses Gerät technisch angeschlossen ist (optional, mehr Informationen weiter unten) | | value| Aktueller Status des geräts. (Datentyp unterschiedlich je nach Gerätetyp) | ===== Gerätetypen ===== ^ Typ^ Erklärung^ Datentyp^ Bildtypen | | toggle| Ein Gerät, dass ein- und ausgeschaltet werden kann.| bool| light, | | bool| Ein Gerät, dass einen bool-Zustand hat, der aber nicht über die API geändert werden kann.| bool| door, | ===== Anschlusstypen ===== ^ Typ^ Erklärung | | wireless| Funksteckdose |