Wenn Du an der Konfiguration des Containers etwas änderst, musst Du den Container wegwerfen und neu deployen.
Wenn Du Hardware in den Container rein reichst, musst Du jedes Device einzeln rein reichen.
Wenn openHAB ein Gerät verwenden soll, muss der entsprechende Port über die JAVA_EXTRA_OPTS bekannt gemacht werden.
Wenn ein Gerät nicht angeschlossen ist, während der Container deployed wird, bricht Docker mit Fehlermeldung ab.
Deploy != Start (Du kannst einen Container auch vorübergehend stoppen und dann einfach wieder starten - dabei sollte der Container dann (mit Fehlern) auch ohne die entsprechende Hardware hochfahren)
Hint: Den Container wegzuwerfen (bzw. in diesem Fall den Stack) hat keinerlei Auswirkungen auf Konfiguration und Datenbestand, deshalb gibt es ja die Volumes, damit bei einem erneuten Deploy die Einstellungen nicht verloren gehen. Docker funktioniert in dieser Hinsicht ganz anders als eine konventionelle Installation von Software.
OH3 im Docker mit Debian als Basis
- udo1toni
- Beiträge: 15248
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 im Docker mit Debian als Basis
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 383
- Registriert: 19. Feb 2020 20:51
- Wohnort: Saarbrücken
Re: OH3 im Docker mit Debian als Basis
Aber was bedeutet das denn nun wenn ich einen zusätzlichen USB Stick installieren möchte, das ist ja immer noch USB.
Lösche ich dann den Stack und deploye neu mit dem zusätzlichen Stick eingesteckt, oder wie?
Lösche ich dann den Stack und deploye neu mit dem zusätzlichen Stick eingesteckt, oder wie?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))
- udo1toni
- Beiträge: 15248
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 im Docker mit Debian als Basis
Du musst den neuen USB--Stick als zusätzliches Device hinterlegen, analog zum ersten Stick. Jeder Stick bekommt beim Einstecken einen eigenen Namen.
Im besten Fall richtet man eine udev Rule ein, welche dem Stick abhängig von der Vendor ID und der Seriennummer immer den selben Namen verpasst (nicht ttyUSB0, sondern z.B. ttyZWAVE1). Damit ist es dann egal, wo Du den Stick anschließt, selbst wenn Du nachträglich einen USB Hub dazwischen hängst, sollte das Gerät automatisch wieder den selben Namen zugewiesen bekommen, das ist ohne udev Rule nicht sicher (siehe auch die offizielle Doku: https://www.openhab.org/docs/administration/serial.html
Das Gerät wird anhand des Namens in den Container herein gereicht, weshalb der Name gelistet werden muss, und zwar wie bei allen anderen Dingen auch, einmal der Name im Host System, einmal der Name, wie er im Container verwendet werden soll.
Zudem muss jede Schnittstelle, die openHAB verwenden soll, für Java freigegeben werden, das geschieht über die JAVA_EXTRA_OPTS.
Siehe hier (Auszug aus der docker-compose.yaml, reduziert auf die interessanten Teile):
In der vorletzten Zeile kannst Du auch sehen, dass der Name im Container nicht zwingend der selbe Name sein muss, wie auf dem Host System.
Insbesondere wenn man vom Standard abweichende Namen für die serielle Schnittstelle verwendet, müssen die Schnittstellen alle gelistete werden. Standardschnittstellen (/dev/ttyS0 usw.) sollten automatisch erkannt werden, es ist aber nicht verkehrt, die Schnittstellen explizit aufzulisten, für den Container muss man es eh machen.
Im besten Fall richtet man eine udev Rule ein, welche dem Stick abhängig von der Vendor ID und der Seriennummer immer den selben Namen verpasst (nicht ttyUSB0, sondern z.B. ttyZWAVE1). Damit ist es dann egal, wo Du den Stick anschließt, selbst wenn Du nachträglich einen USB Hub dazwischen hängst, sollte das Gerät automatisch wieder den selben Namen zugewiesen bekommen, das ist ohne udev Rule nicht sicher (siehe auch die offizielle Doku: https://www.openhab.org/docs/administration/serial.html
Das Gerät wird anhand des Namens in den Container herein gereicht, weshalb der Name gelistet werden muss, und zwar wie bei allen anderen Dingen auch, einmal der Name im Host System, einmal der Name, wie er im Container verwendet werden soll.
Zudem muss jede Schnittstelle, die openHAB verwenden soll, für Java freigegeben werden, das geschieht über die JAVA_EXTRA_OPTS.
Siehe hier (Auszug aus der docker-compose.yaml, reduziert auf die interessanten Teile):
Code: Alles auswählen
environment:
EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0:/dev/ttyBLA7:/dev/ttyZWAVE0"
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
- "/dev/ttyUSB1:/dev/ttyBLA7"
- "/dev/ttyZWAVE0:/dev/ttyZWAVE0"
Insbesondere wenn man vom Standard abweichende Namen für die serielle Schnittstelle verwendet, müssen die Schnittstellen alle gelistete werden. Standardschnittstellen (/dev/ttyS0 usw.) sollten automatisch erkannt werden, es ist aber nicht verkehrt, die Schnittstellen explizit aufzulisten, für den Container muss man es eh machen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet