OH3 Berechtigung serielle Schnittstelle

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Jimbo
Beiträge: 13
Registriert: 23. Feb 2022 18:21
Answers: 0

OH3 Berechtigung serielle Schnittstelle

Beitrag von Jimbo »

Hallo in die Runde,
ich habe folgendes Problem.
Ich betreibe ein Raspsberry mit OH3. Damit lese ich mit dem Smart Meter Binding meinen Stromzähler über die optische Schnittstelle aus. Die Schnittstelle am Raspberry ist ein USB Eingang(/dev/ttyUSB0), welches wunderbar funktioniert. Nun habe ich (warum auch immer) auf meinem Home-Server eine virtuelle Maschine aufgesetzt mit dem Betriebssystem "Debian 11". Darauf läuft OH3 im Docker . Leider bekome ich dort das Smart Meter Binding über die USB Schnittstelle nicht zum laufen. Der einzige Unterschied (meiner Meinung nach) ist, dass auf dem Raspberry das BS Debian mit root-Rechten läuft. Dort kann ich die Schnittstelle direkt ansprechen (echo "Hello World" > /dev/ttyUSB0 && echo "ok" || echo "NOK"). Auf der virtuellen Maschine geht das nur wenn ich mich zuvor mit Root-Rechten anmelde(su root). Der Standardbenutzer hat diese Rechte nicht. Kann es sein das Openhab die Rechte für den Zugriff auf die serielle Schnittstelle in diesem Fall nicht hat:?:

Viele Grüße
Jan

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

Re: OH3 Berechtigung serielle Schnittstelle

Beitrag von udo1toni »

Es kommt nur darauf an, wem die Schnittstelle gehört :) Aber im Zusammenhang mit openHAB in einem Docker Container musst Du drei Stufen korrekt konfigurieren, damit es funktioniert.

Stufe 1: Host. Hier musst du eine udev Rule anlegen, welche über die Hardware Id den USB-Stick erkennt und genau diesen einem festen Gerätenamen zuweist. Ansonsten kann es passieren, dass der Stick unter unterschiedlichen Namen erreichbar ist, je nachdem, was drum herum so passiert.
In der udev Rule kannst Du auch dafür sorgen, dass der Stick für bestimmte User zur Nutzung freigegeben ist.

Stufe 2: Die Schnittstelle muss in den Container hineingereicht werden,
Stufe 3: innerhalb des Docker Containers muss die Schnittstelle an openHAB weitergereicht werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jimbo
Beiträge: 13
Registriert: 23. Feb 2022 18:21
Answers: 0

Re: OH3 Berechtigung serielle Schnittstelle

Beitrag von Jimbo »

Hallo Udo, vielen Dank erstmal für deine Antwort. Ich habe nun eine udev rule angelegtmund mit der SerialNr des Sticks einen festen Namen zugewiesen. Dann habe ich in der docker-compose.yaml folgendes hinzugefügt:
volumes:
- /dev/serial/by-id/:/dev/serial/by-id
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
- /dev/ttyUSB1:/dev/ttyUSB1

Nun fehlt mir aber die Stufe 3. Dort komme ich leider nicht weiter.
Hat dort jemand vielleicht ein Beispiel für mich ?

Viele Grüße Jan

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

Re: OH3 Berechtigung serielle Schnittstelle

Beitrag von udo1toni »

Erst mal: Das Volume brauchst Du nicht, da sind ohnehin nur symbolische Links auf die Devices drin.
Stattdessen gibt es in der docker-compose.yml für openHAB auch noch die Option, Umgebungsvariablen für den Container zu setzen. der Parameter lautet environment. Dort setzt Du die Umgebungsvariable EXTRA_JAVA_OPTS.
In https://hub.docker.com/r/openhab/openhab ist das eigentlich ganz gut beschrieben (bis auf ein konkretes Beispiel für das serielle Device... untter einem unscheinbaren Link landest Du hier: https://www.openhab.org/docs/administration/serial.html und leider steht selbst da nur innerhqalb des Textes, dass EXTRA_JAVA_OPTS mit dem Parameter -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0:/dev/ttyUSB1: ergänzt werden muss. Falls schon ein Parameter angegeben ist, setzt Du zwischen die Parameter ein Leerzeichen. Falls bereits serielle Schnittstellen durchgereicht werden, ergänzt Du Deine hinter den vorhandenden:

Code: Alles auswählen

version: '2.2'

services:
  openhab:
    image: "openhab/openhab:3.4.2"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "openhab_addons:/openhab/addons"
      - "openhab_conf:/openhab/conf"
      - "openhab_userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0:/dev/ttyUSB1:"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
      - /dev/ttyUSB0:/dev/ttyUSB1
volumes:
  openhab_addons:
    driver: local
  openhab_conf:
    driver: local
  openhab_userdata:
    driver: local
Ich hab das jetzt nicht ausprobiert :) aber so sollte es passen. Wahlweise kann man die Volumes natürlich auch anders einbinden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten