Zeile 1:
Zeile 1:
−
OpenHAB ist ein Software-HUB für die Gebäudeautomation. OpenHAB ist auf [[Java]]-Basis programmiert und daher [[Plattformübergreifende Software]].
+
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 [http://docs.openhab.org/installation/linux.html#package-repository-installation 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 ==
== Konfiguration ==
Zeile 6:
Zeile 19:
Um OpenHAB dennoch von anderen Rechnern zu erreichen, setzt man ein [[Reverse Proxy]] wie [[Apache]] oder [[Nginx]] davor.
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
+
* <code>/etc/default/openhab2.cfg</code>
+
* <code>/etc/openhab2</code> und dessen Unterverzeichnissen für die manuell einzurichtenden Items, Sitemaps etc.
+
* <code>/var/lib/openhab2</code> 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 <code>/var/lib/openhab2</code> brauchen aber die Unterverzeichnisse <code>cache</code> und <code>tmp</code> nicht mitgespeichert zu werden.
+
+
== Einrichten von OpenHAB ==
+
+
Seit OpenHAB 3 werden Dinge, Regeln etc. recht einfach in der graphischen Benutzeroberfläche MainUI eingerichtet. Man kann aber weiter mit Textdateien konfigurieren.
+
+
=== Einrichtung via MainUI ===
+
+
==== Backup der MainUI-Einrichtung ====
+
+
Die Einrichtung der MainUI wird in eine
+
[[JSON]]-Datenbank geschrieben. Sie befindet sich in /var/lib/openhab/jsondb.
+
+
Davon kann ein Backup gemacht werden. Oder es kann mittels [[Git]] versioniert werden.
+
+
Siehe
+
* https://www.openhab.org/docs/administration/jsondb.html
+
+
=== Text-Dateien ===
+
==== Semantisches Modell ====
+
https://community.openhab.org/t/oh3-semantic-model-setup-via-tags-in-configuration-items-files/112520
+
+
== Konsole ==
+
=== Apache Karaf ===
+
+
Die Konsole Apache Karaf erreicht man normalerweise so
+
ssh openhab@localhost -p 8101
+
Passwort ist dabei <code>habopen</code>.
+
+
Siehe auch:
+
+
* https://community.openhab.org/t/howto-manage-openhab-2-configurations/15940
+
+
=== 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 <code>sitemap</code>-Parameter auch der Parameter <code>pageuid</code> angegeben wird.
+
+
== Bindings ==
+
+
=== Network ===
+
+
Das Network-Binding hat zwar einen Discovery-Service. Dieser muss aber manuell gestartet werden. Dazu geht man unter Einstellungen -> Things -> Inbox -> "+"-Zeichen rechts unten -> Network Binding -> Scan
+
+
=== 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 [https://developer.yahoo.com/geo/geoplanet/guide/concepts.html Where On Earth IDentifier]). Dieser kann ermittelt werden über
+
* http://www.woeidlookup.com/
+
* http://woeid.rosselliot.co.nz/
+
+
=== Fritzbox ===
+
+
Wenn man die Fritzbox einbindet, kann man [https://klenzel.de/3118 u.a. bei einem eingehenden Anruf Kodi und andere Geräte stummschalten].
+
+
== Benutzerschnittstellen ==
+
+
=== Sitemaps ===
+
+
Viele Benutzerschnittstellen (z.B. ClassicUI und BasicUI) benützen [http://docs.openhab.org/configuration/sitemaps.html sitemaps]. Diese werden in Dateien mit der <code>.sitemap</code> im Verzeichnis <code>/etc/openhab2/sitemaps/</code> erstellt.
+
+
Dazu gibt es verschiedene Widgets, die normalerweise einen <code>item=</code>-Parameter haben, mit dem sie mit dem jeweiligen Item verbunden werden.
+
+
==== Chart-Widget ====
+
+
Beim [http://docs.openhab.org/configuration/sitemaps.html#element-type-chart Chart-Widget] ist beim <code>period=</code>-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<ref>Vgl. https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql</ref> 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 <code>/etc/openhab2/services/mysql.cfg</code> 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 [http://docs.openhab.org/configuration/persistence.html <code>/etc/openhab2/persistence/mysql.persist</code> 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:
+
* https://community.openhab.org/t/openhab-for-kodi/4156
+
+
== Scripts z.B. für Rules ==
+
+
Scripts können in verschiedenen Sprachen geschrieben werden. Die übliche Sprache ist ein [[Java]]-Derivat namens Xtend. Siehe dazu
+
* https://eclipse.dev/Xtext/xtend/documentation/203_xtend_expressions.html
== Siehe auch ==
== Siehe auch ==
+
* [http://docs.openhab.org Online-Dokumentation von OpenHAB]
* [[Gebäudeautomation]]
* [[Gebäudeautomation]]
* [[Luigis Smart Home]]
* [[Luigis Smart Home]]
Zeile 14:
Zeile 149:
-------
-------
<references/>
<references/>
−
[[Category:Server-Software]]
+
[[Category:ServerSoftware]]
[[Category:Gebäudeautomation]]
[[Category:Gebäudeautomation]]
[[Category:SmartHome]]
[[Category:SmartHome]]