Änderungen

Zur Navigation springen Zur Suche springen
6.543 Bytes hinzugefügt ,  06:30, 7. Sep. 2023
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]]

Navigationsmenü