Space Automation: Unterschied zwischen den Versionen
Zeile 51: | Zeile 51: | ||
Das MPD-Binding verwenden wir um unsere [http://www.mopidy.com/ mopidy-spotify]-Installation steuern zu können. Hier gibt es in unserem Setup die Möglichkeit die Musik zu pausieren, sowie die Lautstärke zu regulieren | Das MPD-Binding verwenden wir um unsere [http://www.mopidy.com/ mopidy-spotify]-Installation steuern zu können. Hier gibt es in unserem Setup die Möglichkeit die Musik zu pausieren, sowie die Lautstärke zu regulieren | ||
+ | |||
+ | === Onkyo ==== | ||
+ | |||
+ | Mit diesem Binding steuern wir unseren Onkyo-Receiver, welcher als Medienzentrale in der Lounge steht. Hier wird z.B. beim Klingeln der Tür automatisch die Lautstärke des Receivers runtergedreht, aber auch beim Einschalten des Gerätes der dazugehörige Subwoofer per Funksteckdose geschalten. | ||
+ | |||
+ | ==== Astro ==== | ||
+ | |||
+ | Über die Lat/Lon des Hackerspaces ermitteln wir den aktuellen Sonnenstand und damit die Sunset/Sunrise-Zeit. Dadurch fahren wir nur unsere Rollos hoch, wenn auch noch hell drausen ist. | ||
==== HTTP ==== | ==== HTTP ==== | ||
Zeile 64: | Zeile 72: | ||
==== HomeMatic ==== | ==== HomeMatic ==== | ||
− | HomeMatic ist ein | + | HomeMatic ist ein System von [http://eQ-3.de eQ-3 AG] das wir über [http://elv.de ELV] bestellt haben. |
+ | |||
+ | Das "HomeMatic" Setup ist schon das zweite System das wir in unserem Space verwenden. Ein erster Aufbau mit Produkten der MAX! Serie selben Herstellers wurde aufgrund des noch instabilen Bindings (wackelig) verworfen. Die "HomeMatic" Serie wird dank der größeren Community besser von openHAB unterstützt. | ||
− | + | Wir verwenden von HomeMatic die Heizungsthermostate sowie die Funk-Rauchmelder. Im Test haben wir zudem ein 4-Fach-Funktaster. | |
==== MQTT ==== | ==== MQTT ==== |
Version vom 14. Januar 2016, 13:03 Uhr
Space Automation Status: unbekannt | |
---|---|
Beschreibung | Complete automation. |
Autor: | schinken |
PayPal |
Vortrag
Schinken hat über unsere Automatisierung an der Gulschprogrammiernacht 2014 einen Vortrag über die Spaceautomation gehalten:
Spaceautomatisierung - Wie man mit Software wie OpenHAB einen Space komplett per Web oder App steuerbar machen kann.
Zielsetzung
Nachdem immer mehr Geräte in unserem Space vorhanden sind und unsere Raum-FAQ immer voller wurde, mussten wir eine Lösung finden um den Hackerspace möglichst einfach "herunterzufahren". Bisher mussten an vielen Stellen Stecker gesteckt oder gezogen werden, Sicherungen an/ausgeschalten, Heizungsthermostate gedreht und Türen sowie die Jalousie kontrolliert werden.
Gerade für neue Mitglieder gestaltet sich diese Prozedur etwas unüberschaubar. In den meisten Fällen wurde aber zum Glück lediglich die Stereoanlage oder die Heizung vergessen auszuschalten.
Das gesetzte Ziel: Möglichst alles mit einem einzigen Taster abschalten!
Setup
Für unsere Installation haben wir die Java Umgebung OpenHAB gewählt. Mit diesem Programm ist es möglich, verschiedene Geräte per "Binding" zu kombinieren. Bindings sind getrennte Komponenten, gepackt in .jar Container, die einfach in den openhab/addons Ordner kopiert werden.
Ein rießiger Vorteil von OpenHAB ist die Möglichkeit, Dateien und Addons "On-The-Fly" nachladen zu können. Das Programm registriert automatisch Dateiänderungen oder wenn Bindings hinzugefügt oder entfernt werden. Außerdem liefert OpenHAB einen Designer, mit dem Sitemaps und Items editiert werden können, sowie eine eigene Scriptsprache inklusive Syntaxhighlighting,
Desweiteren existiert für OpenHAB eine Android und iPhone-App, sowie eine Web-Oberfläche. Die Konfiguration wird dabei jeweils dynamisch aus der Serverkonfiguration generiert. Geräte mit HABDroid bzw. der iPhone-App erkennen automatisch im WLAN die OpenHAB-Installation und zeigen unsere aktuelle Konfiguration an. Dadurch müssen keine selbstprogrammierten Apps aktualisiert werden.
Hardware
Um den Space für jedes Mitglied steuerbar zu machen hat unser Mitglied xoquox zwei 7 Zoll LélikTec Tablets in unseren Räumen installiert. Eines befindet sich in unserer Lounge (Host: brain), sowie eines in unserem Hackcenter (Host: pinky).
Bindings
Aktuell Verwenden wir folgende Bindings:
MPD
Das MPD-Binding verwenden wir um unsere mopidy-spotify-Installation steuern zu können. Hier gibt es in unserem Setup die Möglichkeit die Musik zu pausieren, sowie die Lautstärke zu regulieren
Onkyo =
Mit diesem Binding steuern wir unseren Onkyo-Receiver, welcher als Medienzentrale in der Lounge steht. Hier wird z.B. beim Klingeln der Tür automatisch die Lautstärke des Receivers runtergedreht, aber auch beim Einschalten des Gerätes der dazugehörige Subwoofer per Funksteckdose geschalten.
Astro
Über die Lat/Lon des Hackerspaces ermitteln wir den aktuellen Sonnenstand und damit die Sunset/Sunrise-Zeit. Dadurch fahren wir nur unsere Rollos hoch, wenn auch noch hell drausen ist.
HTTP
Viele unsere Komponenten im Space sind per REST-API steuerbar. Dazu gehört das Ledboard, Webrelais sowie unser neustes Projekt-Mitglied Funkstrom. Durch einfaches senden der HTTP-Methoden POST oder DELETE können unsere Relais oder die Funksteckdosen geschalten werden.
Für den Status bieten unsere APIs noch den responsetype "OpenHAB" welcher ein ON oder OFF representiert, da wir noch nicht erfolgreich eine JSON-Response in OpenHAB auswerten konnten.
SNMP
Per SNMP holen wir verschiedene Werte ab, um sie in der App darzustellen. Unter anderem sind das Temperaturen der verschiedenen Räume, unseren Kontostand oder der Load unseres Servers.
HomeMatic
HomeMatic ist ein System von eQ-3 AG das wir über ELV bestellt haben.
Das "HomeMatic" Setup ist schon das zweite System das wir in unserem Space verwenden. Ein erster Aufbau mit Produkten der MAX! Serie selben Herstellers wurde aufgrund des noch instabilen Bindings (wackelig) verworfen. Die "HomeMatic" Serie wird dank der größeren Community besser von openHAB unterstützt.
Wir verwenden von HomeMatic die Heizungsthermostate sowie die Funk-Rauchmelder. Im Test haben wir zudem ein 4-Fach-Funktaster.
MQTT
Viele externe Events kommen über den MQTT-Events bei OpenHAB an. Diese Events werden durch verschiedene RaspberryPIs, unseren Bot usw. über den MQTT-Broker "mosquitto" verschickt
topic | body | type | description | active |
---|---|---|---|---|
psa/alarm | message | string | irc alarm message | active |
psa/message | message | string | public service announcement message | active |
psa/pizza | empty | irc pizza message | active | |
psa/sound | message | string | sound file located in nfs/music/ircSounds | active |
sensor/door/frame | open/closed | string | if the door is open or closed | active |
sensor/door/lock | open/closed | string | if the door is locked or unlocked | active |
sensor/door/button | pressed/released | string | if the door button is pressed | active |
sensor/door/bell | pressed/released | string | if the door bell rings | active |
sensor/backdoor/lock | open/closed | string | status of the backdoor lock | active |
sensor/door/cnc | open/closed | string | door server to cnc | active |
sensor/door/restroom | open/closed | string | door server to restroom | active |
sensor/door/hackcenter | open/closed | string | door server to hackcenter | active |
sensor/door/lounge | open/closed | string | door server to lounge | active |
sensor/temperature/lounge/podest | temperature | float | temperature | active |
sensor/temperature/lounge/ceiling | temperature | float | temperature | active |
sensor/temperature/hackcenter/shelf | temperature | float | temperature | active |
sensor/temperature/misc/cnc | temperature | float | temperature | active |
sensor/temperature/misc/restroom | temperature | float | temperature | active |
sensor/temperature/misc/rack | temperature | float | temperature | active |
sensor/temperature/misc/outside | temperature | float | temperature | active |
sensor/radiation/cpm | radiation counts | int | counts per minute | active |
sensor/radiation/uSv | micro-sievert | float | radiation | active |
sensor/space/member/deviceCount | member devices | int | member devices count | - |
sensor/space/member/names | member names | string | member names, comma separated, sorted a-z | - |
sensor/space/member/count | member count | int | member count present | active |
sensor/space/status | open/closed | string | current space status | active |
sensor/space/accountBalance | money | float | current account balance | active |
Automatisierung
Da OpenHAB über eine mächte Rule-Engine verfügt, müssen die Automatisierungen nun nicht mehr von externen Programmen orchestriert werden, sondern können jetzt in OpenHAB direkt realisiert werden.
Die aktuell implementierten Regeln findet ihr in unserem GitHub Repository.
Implementiert
- Tür öffnen/schließen schaltet rotes Exitlight an/aus
- Beim Aufsperren der Tür schalten sich verschiedene Lichter/Geräte an:
- LedBoard
- NyanCat
- Exitlight Weiß
- Briefkasten
- Licht am Eingang, Lounge nach Sonnenuntergang
- Türklingel schaltet Rundumlicht, bei leerem Space bekomme ich eine E-Mail zugestellt "Es wurde geklingelt"
- Gastherme schaltet sich alleine aus/ein wenn Leute da sind
- !alarm im IRC schaltet Rundumlicht an
- Schild schaltet sich an wenn der Space aufgesperrt wird, oder Leute da sind, aber nur nach Sonnenuntergang (Strom sparen)
- Heizungsthermostate regeln auf 12 Grad wenn niemand mehr im Space ist
- Shutdown-Buttons in der App um den Space abzusperren
Geplant
- Kontakte an allen Fenstern für ALARM (Wenn niemand da und Fenster öffnet sich)
- Aufräum-Alarm
- Vorheizen des Spaces im Winter für z.B. Dienstags
- Notifications an der App, wenn beim Shutdown noch $irgendwo ein Fenster geöffnet ist
Angebundene Steuerungen
Elektrische Geräte
Über die Funksteckdosen, Powerctrl und Webrelais schalten wir diverse Lichter oder Geräte.
Hackcenter
- Licht oben
- Licht Regal
- Licht Arbeitstisch
- Neon-Lampe
- Notausgangsbeleuchtung Weiss + Rot
- Alarm-Licht
Lounge
Küche
- Licht
- Steckdosen Arbeitsplatte
- E-Herd
- Lager
Temperatursensoren
Unsere Temperatursensoren sind per 1-Wire an bestehende RaspberryPIs angeschlossen worden. Durch das laden des Moduls w1-gpio und w1-therm ist die Temperatur per /sys/-Dateisystem erreichbar. Um das Abfragen des Temperatursensors von einer SNMP-Anfrage zu entkoppeln, läuft ein CronJob alle 10 Minuten um die Temperatur in eine Datei im /tmp-Ordner zu schreiben.
Der SNMP-Endpunkt liesst dann nur noch den Inhalt dieser Datei.
Temperatursensoren:
1Wire ID | Ort | MQTT-Topic |
---|---|---|
10-000802cf03d5 | Lounge Podest nahe RasPi | sensor/temperature/lounge/podest |
10-000802cefd6b | Aussen (Eingangstür) | sensor/temperature/misc/outside |
10-000802cf0dec | Lounge Decke | sensor/temperature/lounge/ceiling |
10-000802ceeb04 | Hackcenter Stereoanlage | sensor/temperature/hackcenter/shelf |
10-00080294ac6f | CNC | sensor/temperature/misc/cnc |
10-00080294c7f7 | WC (Lufttemperatur) | sensor/temperature/misc/restroom |
10-00080294a912 | Serverschrank nahe RasPi | sensor/temperature/misc/rack |
Thermostate
Aktuell steuern wir unsere Heizkörper per Funk-Thermostate des Herstellers eQ-3 AG. Unser Aufbau besteht aus 7 Thermostaten der Serie HomeMatic sowie einen HomeMatic Funk-LAN Gateway, welcher das Gateway zwischen Funk und LAN bildet.
Tablet Halterungen
Damit die Tablets einen festen Platz haben, wurden passgenaue Wandhalterungen entworfen und mit unserem 3D_Drucker ausgedruckt. Diese bieten dem Tablet einen festen Halt und die Möglichkeit auch mal abgedockt zu werden. Für die dauerhafte Stromversorgung wurde auch ein Stromkabelhalter entworfen, welcher auch als Absturzsicherung dient.
Wandhalterung: Datei:Halter V1.stl Stromkabelhalterung: Datei:USB.stl (Für die Kabeldurchführung muss die Rückseite Eingesägt werden)