Ich muss für openHAB meinen Z-Wave Stick in den Container durchreichen. Da dies kein einfacher Datenstick ist sind ein paar Schritte notwendig.
Proxmox Server
Als ersten müssen wir auf den Knoten pve, unseren Proxmox Server, in die Shell wechseln. Dort müssen wir erst einmal ein paar Informationen Sammeln. Dazu geben wir als erstes folgende Befehle ein:
lsusb ls -l /dev/bus/usb/001/006 ls -l /dev/ttyACM0
lsusb gibt uns die Angeschlossenen Geräte am USB Bus zurück. Wir benötigen von unserem Stick die BUS und Device ID (grün). Danach können wir mit ls -l /dev/bus/usb/<BUS>/<DEVICEID> die Gruppen ID (gelb) ausgeben. Mein Stick oder besser gesagt die meisten Z-Wave Sticks erzeugen noch ein Serielles Gerät. Meist /dev/ttyACM0. Davon benötigen wir auch noch die Gruppen ID (gelb).
Nun können wir die auch in der Shell vom Knoten pve die Konfigurationsdatei für unseren Container mit nano öffnen. Mein Container hat die ID 101. Also benötige ich folgende Befehle:
cd /etc/pve/lxc nano 101.conf
Als nächstes müssen wir folgende Zeilen hinzufügen um die beiden Geräte in den Container durchzureichen. Dafür benötigen wir unsere BUS / Device ID und die Gruppen IDs für beiden Geräte.
lxc.cgroup.devices.allow: c 189:* rwm lxc.mount.entry: /dev/bus/usb/001/006 dev/bus/usb/001/006 none bind,optional,create=file lxc.cgroup.devices.allow: c 166:* rwm lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create=file
Wer nano nicht kennt. Gespeichert wird mit STRG – O und beendet wird mit STRG – X.
Jetzt muss noch eine Berechtigung geändert werden. Global braucht Schreib und Lese Zugriff auf das Gerät /dev/ttyACM0. Dazu schauen wir uns erst die Berechtigung an mit ls -l /dev/ttyACM0 und ändern diese dann mit chmod o+rw /dev/ttyACM0. Am ende Kontrollieren wir die Berechtigung noch einmal. Wenn alles Stimmt starten wir den Container einmal neu.
ls -l /dev/ttyACM0 chmod o+rw /dev/ttyACM0 ls -l /dev/ttyACM0
HINWEIS
Dies reicht nicht wen der Server neu startet. Da USB Geräte zur Laufzeit eingebunden werden ist die gesetzte Berechtigung nach dem Neustart verschwunden. Ich habe einiges probiert. Am einfachsten ist es crontab zu verwenden um nach dem Boot / Reboot den Befehl abzusetzen.
Dazu geben wir auf dem Server / Konoten pve in der Shell folgenden Befehl ein. Beim ersten Start werden dann nach unseren Lieblings Editor gefragt. Ich verwende hier nano.
crontab -e
Danach fügen wir eine neue Zeile am ende ein.
@reboot chmod o+rw /dev/ttyACM0
Dies Speichern wir mit STRG-O <ENTER> und STRG-X. Nun können wir das System neu starten und prüfen mit ls -l /dev/ttyACM0 ob die Berechtigung wie oben gesetzt ist.
Container – openHAB
Um in dem Container USB prüfen zu können müssen wir die USB-Utilities nachinstallieren. Danach können wir diese dann ausführen. Dazu geben wir in der Shell des Container folgendes ein:
apt-get install -y usbutils
Zum prüfen dann:
lsusb cd /dev ls
lsusb sollte uns nun den selben Eintrag des USB Bus ausgeben wir auf dem Server. Außerdem sollte im Verzeichnis /dev nun ttyACM0 erscheinen.
openHAB
In openHAB müssen wir nun natürlich noch das Z-Wave Binding installieren. Dies ist unter Einstellungen > Things > + > Install More bindings. Dann nach Z-Wave Binding suchen.
Unter Einstellungen > Things > + > Z-Wave Binding eine Bridge hinzufügen muss ein Z-Wave Serial Controller Manuel hinzugefügt werden. Dies ist die Bridge für openHAB
In den Einstellungen der Bridge müssen wir nur ein Label und der Serial Port ausfüllen. Der Serielle Port in der Bridge lautet nun /dev/ttyACM0
Ist dies erledigt haben wir ein neues Thing. Der Status ist erst rot (Error) sollte aber nach ein paar Sekunden grün (Online) wechseln.
Damit ist das geschafft und die Einrichtung von den Z-Wave nodes kann beginnen.