Für das Z-Wave Protokoll gibt es hunderte von Sensoren und Aktoren verschiedener Hersteller. Um sie benutzen zu können, muß in OpenHAB 2 das Z-Wave-Binding installiert werden:

PaperUI --> Add-ons --> BINDINGS tab --> Z-Wave Binding --> Install

Den Z-Wave Stick an einem USB-Port des Raspberry Pi einstecken, dann per SSH-Konsole in Linux die Gerätedatei suchen:

dmesg | grep tty


Typischerweise heißen die Gerätedateien

  • Intel-NUC: /dev/ttyUSB0
  • Raspberry Pi 3: /dev/ttyACM0

Den Pfad und Namen der Gerätedatei benötigen wir im nächsten Schritt.

 

Z-Wave Stick installieren

Der Stick steckt am USB-Port des Rechners und muß nun in OpenHAB2 installiert werden:

PaperUI --> Inbox --> "+" --> Z-Wave Binding --> Serial Controller

Die in Linux ermittelte Gerätedatei des Sticks muß nun dem Z-Wave-Binding bekannt gegeben werden:

HABMin --> Configuration --> Things --> Z-Wave Serial Controller --> Port Configuration --> Port eintragen, Location eintragen

Die Location ist wichtig bei der Zuordnung der Geräte zu einem Zimmer. Die Gerätedatei wird benötigt, um die Z-Wave_Kommandos an den Stick übertragen zu können.

Jetzt können die Z-Wave Things hinzugefügt werden.

 

Item-Erzeugung auf manuell einstellen

Ich konnte mit automatisch angelegten Items nicht viel anfangen. Eine Ausgabeformatierung oder einen Homekit-Tag hinzuzufügen ist nicht möglich. Deshalb schalte ich die automatische Item-Erzeugung aus:

PaperUI --> Configuration --> System --> Unterpunkt "Item Linking" ausschalten und "Save" drücken

Dieser Schritt muß gemacht werden, bevor man Things hinzufügt!

 

 

Z-Wave Things installieren

PaperUI --> Inbox --> "+"-Zeichen anklicken --> Z-Wave Binding anklicken --> 30 Sekunden Suchzeit für neue Things

Am Thing den Button fürs Hinzufügen klicken und nach ein paar Sekunden sollte das Thing an den Z-Wave Controller gebunden sein. Bei batteriebetriebenen Things muss man das eventuell hartnäckig wiederholen (3-7 mal nach meiner Erfahrung) bis es klappt. Sollte sich ein Thing überhaupt nicht einbinden lassen, muß ein Reset des Thing auf den Werkszustand erfolgen. Wie das bei den einzelnen Things verschiedener Hersteller geht, ist in den jeweiligen Manuals beschrieben. Diese Probleme haben mir bei meinen ersten Z-Wave-Things viele Probleme mit stundenlanger Suche beschert.

Nach einiger Zeit taucht das mit dem Controller verbundene Thing in der Inbox auf und müssen nur noch in OpenHAB in die Datenbank hinzugefügt werden, indem man auf den blauen Kreis des Things klickt:

BILD

Nach diesem Vorgang hat man ein verwendbares Thing in OpenHAB mit all seinen zugehörigen Kanälen. Im nächsten Schritt müssen Items (=Variablen) an jeden benötigten Kanal gebunden werden um den Kanal zu steuern oder Messwerte abfragen zu können. Diese sollten manuell durch editieren des Item-Files erzeugt werden.

 

Items manuell erzeugen

Das Anlegen einer Item-Datei ist nicht weiter schwierig. Im Items-Unterverzeichnis erzeugt man eine Datei zwave.items (das "s" am Ende nicht vergessen!) und trägt pro Item eine eigene Zeile ein. In OpenHAB 2 gibt es eine gegen openHAB 1.8 abweichende Syntax:

itemtype itemname ["labeltext"] [<iconname>] [(group1, group2, ...)] [["tag1", "tag2", ...]] [{bindingconfig}]

Hier ein reales Beispiel:

Switch Office_Lamp   "Lamp [%s]" <light> ["Lighting"] { channel="zwave:device:bbad873e:node6:switch_binary" }

Das Item ist ein Schalter  ("Switch") mit dem Itemnamen "Office_Lamp" und dem Label "Lamp [%s]" der auch gleich die Formatierung "[%s]" für die Anzeige des Schaltzustands trägt. Das Homekit-Tag "[ Lighting ]" dient für die Sprachsteuerung über Alexa oder Siri. Der Channel wird abweichend zu OpenHAB 1.8 in der neuen Notation

{ channel="zwave:device:bbad873e:node6:switch_binary" }

angegeben. Die große Frage ist, woher man die erhaltenen Informationen bekommt? Das kann man relativ einfach ermitteln. Zuerst benötigt man die Z-Wave-Network-ID (hier bbad873e). Diese ist bei jedem Z-Wave-Stick anders. man findet sie über:

PaperUI --> Configuration --> Things --> Z-Wave Serial Controller

Jetzt braucht man noch die Channel-Info, hier vom Aeonlabs MultiSensor Gen5 als Beispiel:

PaperUI --> Configuration --> Things --> Thing auswählen --> in der Channel-Info nachsehen:

Rechts neben der gelb markierten Kanalinfo ist ein kleines Symbol zu sehen. Klickt man dieses an, dann wird der Z-Wave-Channel in das Clipboard des PC kopiert und man kann es im Item-File einfügen. Das schützt vor Schreibfehlern. Hier eine komplette Definition für ein Fibaro-Doppelrelais:

/* Fibaro Double Relay Node 6: Mains Operation/Router */
Switch Office_Lamp "Lamp [%s]"             ["Lighting"]   { channel="zwave:device:bbad873e:node6:switch_binary" }
Switch Switch_Lamp "Switch Lamp [%s]"                     { channel="zwave:device:bbad873e:node6:switch_binary1" }
Switch Switch_Siren "Switch Siren [%s]"                   { channel="zwave:device:bbad873e:node6:switch_binary2" }

 

Sitemap erstellen

Für die Darstellung der Items in einer GUI dient die Sitemap. Und genau hier gibt es eine Abweichung zur alten Version 1.8 von OpenHAB. Nach Erstellen der Sitemap wurden in der GUI nicht wie erwartet die Label der Items angezeigt sondern abweichende Texte. Nach mehrstündiger Suche in den Eingeweiden des Systems stieß darauf, dass die Channel-Labels angezeigt werden. Diese lassen sich aber nicht verändern, weil die Channel dynamisch erzeugt wurden. Das Problem lässt sich ganz einfach lösen (wie immer), wenn man jedem Item in der Sitemap einen Label gibt:

sitemap demo label="IT Expo 2017"
{
Frame label="Security" {   Text item=StateDoor label="Door"   Text item=StateWindow label="Window"   Text item=MotionBinary label="Motion"   Text item=FloodAlarmBinary label="Flood"   Switch item=Office_Siren label="Siren" } Frame label="Office" { Text item=Temperature label="Indoor temperature" Text item=Luminance label="Luminance" Switch item=Office_Lamp label="Lamp" } Frame label="Battery" { Text item=Bat_Multisensor label="Battery multi sensor" Text item=Bat_Floodsensor label="Battery flood sensor" Text item=Bat_DoorContact label="Battery door contact" } }

Jetzt wird in der BasicUI alles richtig angezeigt:

 

OpenHAB Dienst neu starten

Es schadet nicht, den OpenHAB Dienst während der ganzen Konfiguration neu zu starten. Ich hatte bei der Arbeit mit HABmin und PaperUI öfters das Problem, dass mir multiple Items am Channel angezeigt wurden. Dann ist die interne OpenHAB-Datenbank gestört. Es recht ein Neustart des OpenHAB DIenstes. Dazu meldet man sich über SSH am Rechner an und gibt folgende Kommandos ein

sudo systemctl restart openhab2.service

sudo systemctl stop openhab2.service

sudo systemctl start openhab2.service

wenn etwas nicht funktionieren sollte, kann man noch folgende Kommandos eingeben.

sudo systemctl daemon-reload

sudo systemctl enable openhab2.service

Wer sich das nicht merken kann, der kann auch den Rechner neu booten:

sudo reboot now

Hierbei wird auch der OpenHAB Dienst sauber geschlossen und beim Neuboot gestartet.

 

Konfigurationsdateien der Z-Wave-Geräte

Für jedes erfolgreich eingebundene Z-Wave-Gerät wird im Verzeichnis:

/var/lib/openhab2/zwave

eine eigene XML-Datei angelegt:

ls -al *

-rw-rw-r-- 1 openhab openhab 1349 Apr 18 06:47 node1.xml
-rw-rw-r-- 1 openhab openhab 22047 Apr 18 07:05 node2.xml
-rw-rw-r-- 1 openhab openhab 14287 Apr 18 06:47 node3.xml
-rw-rw-r-- 1 openhab openhab 13765 Apr 18 06:47 node4.xml
-rw-rw-r-- 1 openhab openhab 16612 Apr 18 06:47 node5.xml
-rw-rw-r-- 1 openhab openhab 18560 Apr 18 06:45 node6.xml

Die Dateien kann man sich mit einem Editor ansehen (nicht verändern!!!), es handelt sich um XML. Beim Dateinamen wird die Node-Nummerierung verwendet, welche man auch in HABmin/PaperUI findet:

  • Node 1 --> Controller (immer)
  • Node 2...232 --> Z-Wave-Things des Netzwerks in der Reihenfolge ihres Einbindens 

Mehr als 231 Things sind in einem Z-Wave-Netzwerk nicht möglich. Ich habe noch nicht herausgefunden, ob ein zweiter Z-Wave-Controller möglich ist. Glaube ich aber nicht, weil es im Z-Wave-Binding nur einen Eintrag für eine einzige Gerätedatei gibt. Aber zur Not gibt es noch EnOcean Things zur Erweiterung.