Bislang habe ich an OpenHab nur die dunkle Seite der Macht kennengelernt – Paper UI, Habmin, Charts, die Rules… Viel ging da nicht, eigentlich gar nichts…
Dank Corona hatte ich nun Zeit mich 10 Tage mit dem zu beschäftigen was OpenHab EIGENTLICH ist, und sehe nun das Licht am Ende des Tunnels, und es scheint ziemlich hell. 🙂
Meine Recherche und Erfahrungen fasse ich hier zusammen, zu einem Mix aus Crash-Kurs und komprimierten Detail-Infos.
Werbung
Die meisten Links auf dieser Seite sind Affiliate-Links, durch die ich eine kleine Provision erhalte, wenn du etwas darüber kaufst. Die Preise bleiben für dich unverändert. Affiliate-Link-Kürzel: AM = Amazon, EB = Ebay, FT = FastTech, GB = Gearbest, AL = Aliexpress
Inhalt
- Vorwort
- Tipps für den Start mit OpenHab
- OpenHab installieren & Starten
- OpenHab – Geräte hinzufügen
- OpenHab einrichten (mit Konfigurationsdateien)
- Feierabend / Kommentare
Vorwort
Mit OpenHab kann man ALLES machen, dafür ist es auch seeehr komplex, und die Informationsflut ist erschlagend. Dieser Beitrag soll dich in die „richtige Spur“ setzen, um ein Grundverständnis zu bekommen, und ein funktionierendes OpenHab zu erhalten, ohne Frust und tagelange Recherche, bei der man schnell vom Hölzchen aufs Stöckchen kommen kann…
Da ich Z-Wave nutze beziehen sich manche Tipps auf Z-Wave. Das meiste kannst du jedoch unabhängig von der Hardware verwenden.
Zum Zeitpunkt dieses Beitrags ist OpenHab bei Version 2.5.5 angelangt.
Tipps für den Start mit OpenHab
- Wenn möglich, experimentiere mit OpenHab nicht auf einem Raspi (Raspberry Pi), sondern nutze einen Desktop– oder Laptop Computer – einfach weil du in der Ausprobierphase weniger Komplexität brauchen kannst, und du zudem für vielfach schnellere Startzeiten von OH dankbar sein wirst.
Wenn es bei mir mal soweit sein wird, dann würde ich für OpenHab auf jeden Fall den Raspi 4 (AM) nehmen, weil mehr Speicher & performanter. Mein Mac Mini (AM) frisst beim Däumchendrehen allerdings nur rund 10 Watt, so dass ich gar nicht sicher bin ob ich das mit dem Raspi überhaupt machen werde…
Notiz am Rande: OpenHab muss in der Regel nicht neu gestartet werden, zumindest nicht um Konfigurationsdateien neu einzulesen, wenn man sie geändert hat – das funktioniert automatisch. Es können aber beim Experimentieren Situationen entstehen wo man öfter mal neu starten muss.
- Starte mit mindestens 5 Z-Wave Geräten, wovon mindestens 3 Repeater-fähig sein sollten, also beispielsweise 3-4 Steckdosen, und 1-2 Bewegungsmelder.
- Batteriebetriebene Geräte können nicht repeaten. Je mehr repeat-fähige Geräte, desto runder läuft das Netz. Ich habe mittlerweile 21 Geräte, wovon 9 Repeater sind, und es ist ein Träumchen. 😉
- Z-Wave kann auf Positionsänderungen der Geräte unter Umständen zickig reagieren. Falls das der Fall ist repariert sich das Nachts von selbst (um 4 Uhr morgens). Du kannst aber auch in Paper UI, in den Settings des Thing, unter „Show More“ den „Heal the device“ Schalter betätigen. Nach ca. 2 Minuten sollte das Gerät dann wieder optimal erreichbar sein, sofern es in akzeptabler Reichweite ist.
- Dein Startset aus wenigen Geräten solltest du in dem Raum belassen in dem du am Computer sitzt und konfigurierst, dann wird es keine Probleme geben. Es schadet nicht das Netzwerk an einem Punkt der Wohnung zu beginnen, und es „sich von dort aus ausbreiten zu lassen“ – evtl. möchtest du das in deiner Geräte-Planung gleich berücksichtigen.
OpenHab installieren & Starten
Als Mac-User ist man eigentlich gewohnt auf irgendwas doppelzuklicken, und Sachen mit der Maus hin- und her zu schubsen. 😀 Das geht bei OpenHab leider nicht, und die Einrichtung bedarf einiger Schritte, die ich hier aufs wesentliche zusammenschrumpfe:
OpenHab 2 ist ein Java-Programm und funktioniert optimal mit Zulu-Java 8. Solltest du bereits ein Oracle Java 8 installiert haben, dann sollte das auch funktionieren.
Zulu-Java 8 installieren
- Hier zu „Java 8“ runterscrollen.
- Plattform auswählen.
Da ich macOS nutze, beschreibe ich hier die weiteren Schritte entsprechend für Mac:
- Lade Java 8 für macOS unter dem „.dmg“ Link herunter:
- Installieren.
- Du wirst von der macOS Firewall gefragt werden ob du für Java eingehende Verbindungen erlauben möchtest. Klicke ja, sonst kannst du zB nicht vom Smartphone aus OpenHab steuern (aus deinem Wifi-Netzwerk).
- Java Installation / Version prüfen
- Terminal-App öffnen.
- Eingabe:
java -version
(und Enter drücken)
Dann sollte etwas in dieser Art erscheinen:
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (Zulu 8.46.0.19-CA-macosx) (build 1.8.0_252-b14)
OpenJDK 64-Bit Server VM (Zulu 8.46.0.19-CA-macosx) (build 25.252-b14, mixed mode)
OpenHab 2 installieren
- Runterladen. Wähle dort „macOS“ und „Stable“ aus.
- ZIP-Datei auspacken.
- Ordner in „openhab-2“ umbenennen.
- Verschiebe den Ordner in den Programme-Ordner.
OpenHab starten
- Terminal-App starten.
- Aus dem „openhab-2“ Ordner ziehst du die Datei „start.sh“ auf ein offenes Fenster der Terminal-App. Darin erscheint nun der ganze Pfad – drücke Enter.
- Im Webbrowser gibst du ein:
http://localhost:8080
- Installiere die vorgeschlagene Standardkonfiguration.
- Wenn alles fertig ist, gehe in die Paper UI. Sie ist die Konfigurationsoberfläche um Smarthome-Geräte hinzuzufügen, und Einstellungen an ihnen zu machen.
- Installiere das Z-Wave Binding, unter „Add-ons“ –> „Bindings“. Dieses verwendet OpenHab um mit Z-Wave Geräten zu kommunizieren.
Hinweis: Nach dem Start von OpenHab dauert es einen kleinen Moment bis die Weboberfläche erreichbar ist, das ist normal.
OpenHab beenden
- Wenn du OpenHab beenden möchtest, schließe nicht einfach das Terminal-Fenster, oder beende die Terminal-App.
- Gib im Terminal-Fenster ein:
logout
- Bis OpenHab heruntergefahren ist dauert es einen Moment. Warte bis die nächste Zeile erscheint, dann kannst du das Terminal-Fenster schließen / oder die App beenden.
Tipp: Du musst nicht jedes mal die Befehle zum Starten / Stoppen eingeben. Mit Pfeiltasten hoch/runter kannst du im Terminal vergangene Befehle einfach wieder aufrufen.
OpenHab – Geräte hinzufügen
- Um Geräte in OpenHab zu inkludieren verwendest du die Paper UI.
- Gehe auf die Inbox, wähle das Plus-Symbol, dann das Z-Wave Binding.
- Der Z-Wave Controller ist nun für eine Minute im Inklusionsmodus, dass heißt er wartet darauf das er Funksignale eines Gerätes empfängt, welches im Z-Wave Netzwerk noch unbekannt ist.
- Das Z-Wave Gerät muss ebenfalls in den Inklusionsmodus gebracht werden, was zB durch 5x Klicken auf eine Taste geschehen könnte (in die Anleitung schauen).
- Der Gerätename den du in der Paper UI vergibst ist im Grunde wurscht – der Name taucht später nirgendwo sonst auf. Er sollte aber wenigstens die Info enthalten zu welchem Raum das Gerät gehört, also BD (Bad), WZ (Wohnzimmer), FL (Flur), …
Bei Problemen, ausführlich: Settings an Z-Wave Geräte übertragen
OpenHab einrichten (Konfigurationsdateien)
Zum Bearbeiten der Dateien installiere VSC (Visual Studio Code). Läuft auf Mac, Linux, Windows.
Beitrag dazu: OpenHab: Dateien mit Visual Studio Code editieren
Things & Channels
Kurz vorweg, zum Verständnis: OpenHab besitzt ein Konzept von Things–>Channels–>Items. Ein Gerät, zB ein Steckdosenschalter ist ein Thing. Ein Gerät hat in der Regel mehrere Funktionen und Daten, die es bereitstellt. Dies sind dann die sogenannten Channels des Gerätes. Ein Steckdosenschalter könnte beispielsweise folgende Channels haben:
- Steckdose Ein-/Ausschalten
- Watt aktuell
- Volt aktuell
- Verbrauch in kWh insgesamt.
- Verbrauchszähler auf Null setzen.
Hurra, hurra, um die Erstellung einer xxx.Things Datei brauchst du dich (bei Z-Wave) gar nicht zu kümmern! 🙂 Das Z-Wave Binding von OpenHab stellt dir, auch ohne diese Datei, die Channels der Things (Geräte) automatisch zur Verfügung, so dass du dich gleich mit den Items beschäftigen kannst:
Items
Doku: Items
Du erstellst Items, die mit den einzelnen Channels der Geräte (Things) verlinkt werden. Channels sind unveränderlich, da sie die Eigenschaften von Hardware repräsentieren.
Items hingegen können frei definiert werden, und sie werden dazu verwendet um ihre Daten in einer Ansicht anzuzeigen, oder um sie in Rules (Automationsregeln) zu verwenden, damit der Rasensprenger genau DANN einschaltet, WENN Papa nachts betrunken über den Rasen torkelt. Oder so ähnlich. 😉
Man könnte nun mehrere Items für den gleichen Channel erstellen, um die gleichen (Channel)-Daten verschiedenartig zu behandeln – das benötigt man im Normalfall aber nicht, also vergiss es gleich wieder. 😉
So schaut zB die Definition ein Steckdosenschalter-Item aus:
Switch WZ_Steckdose_TV_Schalter "WZ TV & Media"{channel="zwave:device:kn24kf89:node20:switch_binary"}
Switch
ist der Item-Typ. Eine Steckdose wird beispielsweise über diesen Item-Typ geschaltet, aber auch die ausgelöste Bewegungserkennung eines Bewegungsmelders, wird über ein Item vom Typ „Switch“ transportiert.WZ_Steckdose_TV_Schalter
ist die Item-Bezeichnung die ich dem Item gegeben habe."WZ TV & Media"
ist das Label unter dem man das Item später in der Ansicht zu sehen bekommt.channel=
ist der Channel-Link:
Das „kn24kf89
“ ist die ID des Z-Wave Controllers (bei dir natürlich anders).
„node20
„: Die Node-Nummer ist die eindeutige ID des Gerätes (Thing) im Z-Wave Netzwerk. Sie wird beim Inkludieren des Gerätes automatisch vom Controller vergeben.
Ein Channel-Link enthält also den kompletten Adresspfad, bis hin zu der jeweiligen Funktion des Gerätes, die über diesen Channel zur Verfügung gestellt wird.
Tipp
Die Channel-Links für das jeweilige Gerät findest du in der Paper UI, bei den Things –> Channels.
Dort wird auch klar welche Funktion ein Channel-Link hat, und welcher Item-Typ dafür passend ist.
Benutze das kleine Dokument-Kopier-Icon, das dir den Channel-Link in die Zwischenablage kopiert – so brauchst du das kryptische Zeug nicht abtippen 🙂 :
Manche Geräte haben sehr viele Channels – man ist nicht gezwungen für alle Channels Items zu erstellen. Man nimmt einfach nur die die man nützlich findet.
Benenne deine Items nach einem festen Schema, sonst kommst du später durcheinander, bzw wird alles unleserlich, oder sortiert sich beim Programmieren nicht gut (Code-Auto-Complete). Bewährt ist dieses Schema:
Raum | Hardware-Typ | Was es macht & wo im Raum | OH-Item-Typ |
WZ | Steckdose | LichtHinterSofa | Switch |
Beispiele:
WZ_Steckdose_LichtHinterSofa_Switch
WZ_SteckDimmer_LichtStehleuchte_Dimmer
SZ_EinbauDimmer_VentilatorDecke_Switch
Klingt nicht sinnvoll? Es wird klarer, wenn man alle Items für ein Gerät betrachtet:
Wenn man nun Code-Auto-Complete nutzt erscheinen mit dem Tippen von „KU“ alle Items aus der Küche. Hat man sehr viele Geräte in einem Raum, so sortieren sie sich zunächst nach Typ (man weiß eigentlich immer mit welcher Art von Gerät man sprechen möchte), dann nach genauer Lage, dann nach der speziellen Eigenschaft (Channel) die man nutzen möchte.
Doppelte Items
Wenn du deine Items in der .items Datei erstellt hast, dann wirst du in der Paper UI bei den Channels doppelt verlinkte Items sehen. Das liegt daran das standardmäßig der „Simple Mode“ aktiviert ist, bei dem OpenHab einem neuem Gerät (beim Inkludieren) automatisch Items vergibt. Diese „managed Items“ brauchst du nun nicht mehr:
- Deaktiviere den „Simple Mode„, in Paper UI –> Configuration –> Item Linking.
- Um die „managed Items“ zu entfernen gibst du in dem Terminal-Fenster in dem OpenHab läuft folgendes ein:
smarthome:items clear
(Enter)
und dann:
smarthome:links clear
(Enter) - Mach einen Refresh im Browser. Falls dann die Items noch doppelt sichtbar sind, starte OpenHab neu.
Groups
Doku: Groups
Du solltest unbedingt die Item-Groups nutzen. Du kannst damit Items zusammenfassen die alle die gleiche Eigenschaft haben, von verschiedenen Geräten. Dadurch wird es sehr einfach sie in der Ansicht (Sitemap) darzustellen, zum Beispiel:
- „Alle Lichter im Haus“
- „Alle Lichter im Wohnzimmer“
- „Alles was Strom ein-/ausschalten kann“.
Auch in der Rule-Programmierung erleichtern Groups die Dinge ungemein. Will man zB alle Lichter im Wohnzimmer ausschalten, so muss man nicht jedes Item einzeln ansprechen, sondern kann den „OFF“-Befehl einfach an die Gruppe „WZ_LichtGroup“ senden. Zudem verringert sich die Code-Pflege ungemein. Kommt ein Gerät hinzu muss man am Code nichts ändern, sondern nur dem neuen Gerät (seinen Items) die passenden Gruppen geben.
In der .items Datei können Groups beispielsweise so aussehen:
Benenne Groups grundsätzlich nach dem Schema „xxxxxGroup„, so weißt du im Code immer gleich das du es mit einer Group zu tun hast.
Sitemap
Doku: Sitemaps
Nun wollen wir auch etwas zu sehen bekommen… Dafür erstellst du eine ganz simple Sitemap, das geht blitzschnell. Die sorgt dafür das du deine Items übersichtlich in der Basic UI anschauen und auch bedienen kannst. Die Basic UI kannst du dann im Browser anschauen, oder in der OpenHab App auf dem Smartphone:
Die simpelste Form einer Sitemap sieht im Code so aus:
sitemap MeineErsteAnsicht label="Imperator's Home" {
Frame label="Ein Darstellungsblock" {
Switch item=WZ_Steckdose_TV_Switch
}
}
Es können mehrere Frames (Abgrenzungen / Blöcke) enthalten sein, und ein Frame kann beliebig viele Dinge enthalten :
sitemap MeineErsteAnsicht label="Hurra, ich seh' was!" {
Frame label="Ein Darstellungsblock" {
Switch item=WZ_Steckdose_TV_Switch
}
Frame label="Ein zweiter Darstellungsblock" {
Switch item=BD_Steckdose_Waschmaschine_Switch label="Wäscheknülle"
Switch item=BD_Dimmer_LichtSpiegel_Dimmer label="Schönheitslicht"
}
}
Frame label="Werte nach Gruppe" {
Group item=TemperaturGroup label="Temperaturen"
Group item=LichtGroup label="Lichter"
Group item=BatterieGroup label="Batterien"
Group item=GeraeteGroup label="Geräte"
Group item=SchalterGroup label="Schaltbares"
Group item=kWhGroup label="kWh"
Group item=WattGroup label="Watt"
Group item=LumenGroup label="Helligkeiten"
Group item=MotionGroup label="Bewegungen"
Group item=kWhResetGroup label="kWh Resets"
}
Persistenz
Doku: Persistence
Nun wäre es vielleicht noch schön wenn OpenHab Daten von den Geräten aufzeichnet. Dadurch kann OpenHab historische Daten zeigen, und beim Starten den Status wiederherstellen den es beim Beenden hatte – also Sensorwerte zum Beispiel, oder den Status eines Schalters.
Dafür richtest du eine „Persistence“ ein. Weil da irgendwann sehr viele Daten zusammenkommen, würde die Datenbank sehr groß werden. Daher ist anzuraten eine Datenbank zu nehmen welche die Daten automatisch ausdünnt, je älter sie sind. Dies macht die rrd4j-Persistence.
Installiere sie von der Paper UI aus, und erstelle im Ordner /conf/persistence/ eine Datei mit dem Namen „rrd4j.persist„. Inhalt:
Strategies {
everyMinute : "0 * * * * ?"
default = everyChange
}
Items {
* : strategy = everyChange, everyMinute
}
Erstelle im Ordner /conf/persistence/ eine Datei mit dem Namen „mapdb.persist„. Inhalt:
Strategies {
default = everyUpdate
}
Items {
* : strategy = everyChange, restoreOnStartup
}
Charts
Doku: Charts
Wenn du magst, schau dir die Chart (Diagramme) Funktionen an.
Sie werden in der Sitemap definiert, und schauen bspw. so aus:
Frame label="Wohnzimmer Temperatur" {
Chart item=WZ_PIR1_Temperatur period=W refresh=600
}
Bewegungserkennung:
Frame label="Eingangstür & Terrasse Bewegung" {
Chart item=FL_PIR2_Motion period=D refresh=10
Chart item=Westen_PIR_Motion period=D refresh=10
}
Mehrere Werte in einem Chart, per Group-Item:
Frame label="Alle Temperaturen" {
Chart item=TemperaturGroup period=D refresh=300
}
Mögliche Werte für den period-Parameter:
h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y
Rules
Wenn du magst, erstelle nun Rules (Automationsregeln). Die Rule-Sprache ist JavaScript-ähnlich (sie basiert auf Xtend), und der Befehlssatz von OH ist sehr schnell erlernt – es ist deutlich weniger kompliziert als ich dachte, und funktioniert prima – im Gegensatz zu den Rules die man in Paper UI per Klicki-Klack erstellen kann…
Doku: Rules
Beispiele: Samples Rules
Doku: Xtend
Zum Thema Rules mache ich evtl. noch einen eigenen Beitrag, und dieser hier ist nun auch wahrlich lang genug…
Feierabend
So, ich hoffe ich konnte die Dinge aufs wesentliche zusammenfassen, und du siehst nun klarer was OpenHab betrifft. 🙂
Mehr OpenHab & Z-Wave Beiträge lesen
[the_ad_placement id=“beitrag-inhalt-ende“]