OH3 im Docker mit Debian als Basis

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

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?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

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):

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"
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten