Der Open Home Automation Bus (openHAB, Projektseite: www.openhab.org) hat als Zielsetzung, verschiedene Automatisierungs-Systeme miteinander zu verknüpfen und unter einer einheitlichen Oberfläche bedienbar zu machen. Hinsichtlich des Grundgedankens ist openHAB also z.B. dem FHEM Projekt durchaus ähnlich, basiert aber auf einem vollkommen unterschiedlichen Unterbau. Dieser erste Teil der Beitragsserie widmet sich der openHAB Einführung und den Grundlagen.
Teil 1: openHAB Einführung
Die Metaplattform openHAB besteht aus zwei Teilen, beide sind Open-Source:
Die wichtigsten openHAB Grundlagen
openHAB behandelt jedes anzusteuernde Gerät (Aktoren und Sensoren) als abstraktes Item, welches als solches unterschiedlichste Dinge repräsentieren kann: einen Temperatursensor-Messwert, eine Jalousie-Position, einen Schalter oder sogar einen Radiosender. Sogenannte Bindings koppeln die einzelnen Items später an reale Hardware.
Der Vorteil dieser Architektur ist, dass auf der Basis der Items bereits Automatisierungsfunktionen und Visualisierungen implementiert werden können, ohne dass auf die konkrete Hardware Rücksicht genommen werden müsste. Außerdem lassen sich bestehende Items relativ leicht durch Austausch der Bindings an neue Hardware koppeln.
Die openHAB Bindings
Hardware und Protokolle werden in der openHAB-Welt über sogenannte Bindings eingebunden. Die Liste der unterstützten Bindings wächst erfreulicherweise stetig, ich möchte Ihnen an dieser Stelle einige der interessantesten aufzählen:
- KNX (über eine KNX-IP-Schnittstelle oder über dem eibd-Service)
- 1-Wire, EnOcean, DMX512
- Bluetooth und Z-Wave, HomeMatic
- Asterisk, Fritz!Box
- TCP/UDP, HTTP, SNMP
- Wake-on-LAN
- MPD und Pulseaudio
- Philips Hue
- Piface
- Squeezebox und Sonos, XBMC
- CUL (CUL device im SlowRF Modus, für FS20, FHT)
- IRTrans
- RS-232 (geeignet für z.B. RFID-Leser, und AV-Receiver mit RS-232 Anschluss)
- Kommandozeile (Auslösen von Shell-Kommandos)
Die openHAB Items
Items bestehen im Wesentlichen aus einem eindeutigen Namen, einem Funktions-Typ (Gruppe, Schalter, Dimmer, usw.), einem Text für die visuelle Anzeige, einem Icon und den Binding-spezifischen Optionen.
Items mit dem Typ Group können benutzt werden, um mehrere andere Items in eine Gruppe zusammenzufassen. Die Gruppierung kann dabei sowohl nach räumlichen als auch nach funktionalen Zusammenhängen erfolgen. Beispiele wären:
- alle Räume im Untergeschoss
- alle Jalousien, alle Leuchten oder alle Fensterkontakte
Gruppen werden besonders nützlich wenn Sie vorhaben, mehrere Items gleichzeitig abzufragen:
- Sind alle Fenster geschlossen?
- Hat irgendein Präsenzmelder eine Anwesenheit erkannt?
Die Definition von Items ist über ein Text-File vorzunehmen, wofür der openHAB-Designer aber einen komfortablen Editor zur Verfügung stellt.
Die Rule-Engine
openHAB besitzt eine leistungsstarke Rule-Engine, einer Art Expertensystem mit dem sich selbst die komplexesten Automatisierungsanforderungen formulieren lassen. Regeln können zudem gewichtet und gruppiert werden und dynamisch aktiviert bzw. deaktiviert werden. Die Rule-Engine kann außerdem mit Zeit- und Kalender-Funktionen umgehen. Ebenso wie bei der Definition der Items, unterstützt Sie der openHAB-Designer auch bei der Regel-Erstellung mit eingebauten Editoren, welche Syntax- und Content-Awareness besitzen.
openHAB installieren
Die openHAB Runtime kann auf allen Rechnern betrieben werden, die in der Lage sind, eine JVM (Java Virtual Machine) auszuführen. Linux, Mac und Windows leisten das gleichermaßen. Als Mindestversion wird Java 1.7 benötigt.
openHAB auf der virtuellen Maschine
Im Heimautomations-Kompendium, genauer gesagt in Abschnitt 19.2, finden Sie die Vorgehensweise zum Aufsetzen einer virtuellen Maschine mit Linux Ubuntu. Solch eine virtuelle Maschine ist ideal für Tests, nehmen wir sie an dieser Stelle daher für die ersten Schritte in openHAB. Später bietet sich ein Umzug der openHAB Umgebung auf einen kleinen Automatisierungsserver an (Raspberry Pi, BeagleBone Black, UDOO oder z.B. Cubietruck). Das hier gewählte Setup für den openHAB-Testaufbau sehen Sie in der folgenden Abbildung:
Da VirtualBox wirklich optimal für Testinstallationen geeignet ist, habe ich dieser Stelle noch einen kleinen Buchtipp: Das Buch VirtualBox: Installation, Anwendung, Praxis (Galileo Computing) erläutert sehr gut verständlich alles Wissenswerte zur Virtualisierungs-Software VirtualBox.
Die benötigten Pakete herunterladen
Falls das Java Runtime Environment noch nicht installiert sein sollte, holen Sie das bitte nach:
sudo apt-get install default-jre
Besuchen Sie anschließend die Webseite http://www.openhab.org/downloads.html und holen sich folgende Software-Pakete:
- Runtime Core
- AddOns
- Demo Setup
- openHAB Designer
Legen Sie die vier Pakete in einem Verzeichnis ab und entpacken die Zip-Files.
Bindings hinzufügen
Sämtliche Bindings befinden sich im entpackten Verzeichnis distribution-1.5.1-addons. Bitte beachten Sie, dass die Versionsnummer (1.5.1) in diesem Pfad und den folgenden bei Ihnen wahrscheinlich abweichen werden. Für unsere Zwecke sind Anfangs nur zwei Bindings notwendig, welche Sie bitte in das Add-Ons-Verzeichnis der Runtime Komponenten (distribution-1.5.1-runtime/addons) kopieren:
- org.openhab.binding.http-1.5.1.jar
- org.openhab.binding.knx-1.5.1.jar
Konfiguration, Sitemaps und Items
Um möglichst schnell zu einem funktionierenden Demo-Setup zu kommen, welches Sie später an die eigenen Bedürfnisse anpassen können, empfiehlt es sich die bestehenden Vorlagen zu verwenden. Sie benötigen für den openHAB Betrieb mindestens drei Konfigurationsdateien (openhab.cfg, eine Items-Datei und eine Sitemaps-Datei).
- duplizieren Sie im Verzeichnis distribution-1.5.1-runtime/configurations/ die Datei openhab_default.cfg und benennen Sie die Kopie in openhab.cfg um
- kopieren Sie distribution-1.5.1-demo-configuration/configurations/sitemaps/demo.sitemaps nach distribution-1.5.1-runtime/configurations/sitemaps
- kopieren Sie distribution-1.5.1-demo-configuration/configurations/items/demo.items nach distribution-1.5.1-runtime/configurations/items
Anpassen des Konfigurations-Files
Unser Beispiel-Setup arbeitet mit dem KNX-Binding, welches im File openhab.cfg noch konfiguriert werden muss. Dazu öffnen Sie bitte openhab.cfg, suchen den KNX-Abschnitt im File und nehmen folgende drei Änderungen vor:
- komplettieren Sie die Zeile #knx:type in knx:type=TUNNEL. Statt TUNNEL wäre auch ROUTER möglich, je nach Typ der angesprochenen KNX-Schnittstelle
- komplettieren Sie die Zeile #knx:ip in knx:ip=192.168.178.5 (als IP-Adresse setzen Sie die Ihrer KNX-Schnittstelle ein)
- komplettieren Sie die Zeile #knx: localIp in knx: localIp =192.168.178.75 (als IP-Adresse setzen Sie die Ihres Rechners ein auf dem openHAB läuft)
Die drei geänderten Zeilen dürfen anschließend nicht mehr auskommentiert sein, entfernen Sie bitte jeweils das führende ‚#‘.
Der erste Start von openHAB
Am Ende dieser openHAB Einführung haben jetzt alle Vorbereitungen getroffen für einen ersten Start (siehe unten stehende Abbildung). Wechseln Sie in einer Shell in das Verzeichnis distribution-1.5.1-runtime und starten sie den Service mit
./start.sh
Die Logging-Ausgaben des openHAB Servers finden Sie übrigens in der Datei
/opt/openhab/logs/openhab.log. Für den Fall dass Sie Ihren Automatisierungs-Server headless betreiben, ist diese Datei eine sehr wichtige Informationsquelle.
So geht es weiter
Teil 2 der openHAB Einführung beschäftigt sich mit dem openHAB Designer: openHAB Designer und Visualisierung
Wenn Sie gerne noch andere Automatisierungs-Software kennenlernen möchte, wie z.B. FHEM oder SmartHome.py, ist das große Heimautomations-Kompendium genau das Richtige für Sie. Sie finden es zum Beispiel beim Rheinwerk-Verlag, natürlich versandkostenfrei:
Wenn Sie openHAB gerne direkt auf einem Mini-Server betrieben möchten, empfehle ich Ihnen das offizielle Raspberry PI 3 Kit bei Amazon. Es enthält zusätzlich ein prima Netzteil und eine 16 GB Class 10 microSD (vorinstalliert mit Raspbian Betriebssystem).