OpenHAB
OpenHAB ist eine Software-Integrationsplattform für die Gebäudeautomation. OpenHAB ist auf Java-Basis programmiert und daher Plattformübergreifende Software.
Installation
OpenHAB braucht eine laufende Java-Engine, z.B. OpenJDK, Zulu oder Oracle Java.
OpenHAB lässt sich aus einem eigenen Repository installieren:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo aptitude install apt-transport-https echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list sudo aptitude update sudo aptitude install openhab2 openhab2-addons
Konfiguration
OpenHAB stellt seine Dienste grundsätzlich ungesichert zur Verfügung. OpenHAB sollte daher so konfiguriert werden, dass er nur auf Anfragen von localhost
antwortet. Siehe dazu die Online-Dokumentation von OpenHAB 2 und den dortigen Forenbeitrag.
Um OpenHAB dennoch von anderen Rechnern zu erreichen, setzt man ein Reverse Proxy wie Apache oder Nginx davor.
Die Konfigurationsdateien für OpenHAB2 befinden sich auf einer Debian-Installation in
/etc/default/openhab2.cfg
/etc/openhab2
und dessen Unterverzeichnissen für die manuell einzurichtenden Items, Sitemaps etc./var/lib/openhab2
für die mittels PaperUI oder REST-API eingerichtete Konfiguration.
Backup der Konfiguration
Für ein Backup müssen die oben angegebenen Dateien bzw. Verzeichnisse gespeichert werden. In /var/lib/openhab2
brauchen aber die Unterverzeichnisse cache
und tmp
nicht mitgespeichert zu werden.
Konsole
Apache Karaf
Die Konsole Apache Karaf erreicht man normalerweise so
ssh openhab@localhost -p 8101
Passwort ist dabei habopen
.
Siehe auch:
REST-API
Mit curl kann man ebenfalls von der Konsole auf OpenHAB zugreifen. Für die Referenz der REST-API sollte man sich das entsprechende AddOn REST-Dokumentation über die PaperUI installieren.
Die Dokumentation ist zwar einerseits schön interaktiv, andererseits muss man manchmal raten, wie der Aufruf konkret aussehen soll.
Sitemap-Subscription
Nachdem man sich mit
curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" "http://localhost:8080/rest/sitemaps/events/subscribe"
einen Subscription-Link geholt hat, kann man via folgenden Aufrufs auf eine für die Sitemap "default" relevante Änderung warten:
curl -v 'http://localhost:8080/rest/sitemaps/events/cb1e5411-5bf3-4a46-b279-b2430f6e6e3d?sitemap=default&pageid=default'
Wichtig sind dabei die Anführungszeichen und dass neben dem sitemap
-Parameter auch der Parameter pageuid
angegeben wird.
Bindings
Yahoo Weather
Mittels Yahoo Weather kann man Temperatur, Luftfeuchtigkeit und Luftdruck an einem bestimmten Ort als Item nutzen.
Für die Identifikation des Ortes bedarf es eines WOEID (der Where On Earth IDentifier). Dieser kann ermittelt werden über
Fritzbox
Wenn man die Fritzbox einbindet, kann man u.a. bei einem eingehenden Anruf Kodi und andere Geräte stummschalten.
Benutzerschnittstellen
Sitemaps
Viele Benutzerschnittstellen (z.B. ClassicUI und BasicUI) benützen sitemaps. Diese werden in Dateien mit der .sitemap
im Verzeichnis /etc/openhab2/sitemaps/
erstellt.
Dazu gibt es verschiedene Widgets, die normalerweise einen item=
-Parameter haben, mit dem sie mit dem jeweiligen Item verbunden werden.
Chart-Widget
Beim Chart-Widget ist beim period=
-Parameter die Groß-/Kleinschreibung entscheidend. So ist z.B. für eine Woche der Großbuchstabe "W" anzugeben, für eine Stunde der Kleinbuchstabe "h".
Persistence
Um OpenHAB zu ermöglichen, Werte vor dem letzten Herunterfahren wieder zu verwenden oder einen Graph mit historischen Werten zu zeigen, braucht man ein Persistence Bundle.
MySQL Persistence
Mit Hilfe von MySQL lässt sich eine solche Persistenz-Schicht erstellen. Dazu installiert man in der PaperUI unter AddOns->Persistence das MySQL Bundle (nicht das JDBC-MySQL-Bundle).
Indem man sich auf der Linux-Konsole in MySQL mit
mysql -u root -p
einwählt, kann man folgendermaßen eine Datenbank openhab mit einem User[1] openhab erstellen:
CREATE DATABASE openhab CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'openhab'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';
In /etc/openhab2/services/mysql.cfg
ist einzutragen:
url=jdbc:mysql://localhost:3306/openhab user=openhab password=password reconnectCnt=1
Danach können die Speicher-"Strategien" und die zu speichernden Items in der Datei /etc/openhab2/persistence/mysql.persist
festgelegt werden.
Bei Problemen mit der Persistenz-Schicht hilft evtl. ein Neustart von OpenHAB:
sudo service openhab2 restart
Integration mit Kodi
Neben dem Kodi-Binding, das man unter den OpenHAB-Addons findet, kann man auch umgekehrt OpenHAB als Kodi-Addon einbinden: