OpenHAB: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung |
||
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 30: | Zeile 30: | ||
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. | 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 == | == 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 === | === Yahoo Weather === | ||
Mittels Yahoo Weather kann man Temperatur, Luftfeuchtigkeit und Luftdruck an einem bestimmten Ort als Item nutzen. | 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]] |
Aktuelle Version vom 7. September 2023, 06:30 Uhr
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.
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
Text-Dateien
Semantisches Modell
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
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 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:
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