OpenHAB: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
 
(16 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 ==
 
== Konsole ==
Zeile 41: Zeile 61:
  
 
* https://community.openhab.org/t/howto-manage-openhab-2-configurations/15940
 
* 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 ===
Zeile 52: Zeile 90:
 
* http://woeid.rosselliot.co.nz/
 
* 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 ==
 
== Persistence ==
Zeile 58: Zeile 111:
  
 
=== MySQL Persistence ===
 
=== 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.
+
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  
 
Indem man sich auf der Linux-Konsole in MySQL mit  
Zeile 67: Zeile 120:
 
   GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';
 
   GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';
  
In <code>/etc/openhabe/services/jdbc.cfg</code> ist einzutragen:
+
In <code>/etc/openhab2/services/mysql.cfg</code> ist einzutragen:
 
   url=jdbc:mysql://localhost:3306/openhab
 
   url=jdbc:mysql://localhost:3306/openhab
 
   user=openhab
 
   user=openhab
 
   password=password
 
   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 ==
  
Danach können die Speicher-"Strategien" und die zu speichernden Items in der Datei [<code>/etc/openhab2/persistence/mysql.persist</code> festgelegt werden].
+
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

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 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

Siehe auch