Ankündigung

Einklappen
Keine Ankündigung bisher.

KNXD mit USB-Interface im Docker-Stack-Container

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNXD mit USB-Interface im Docker-Stack-Container

    Hallo,

    folgendes Endziel hätte ich vor:
    KNXD soll als Docker-Container zusammen mit anderen Docker-Containern (z.B. NodeRed) in einem Docker-Stack laufen. KNXD soll hierbei mit über eine Gira-USB-Schnittstelle auf den Bus zugreifen und die Telegramme über den Multicast das Stack-interne Netzwerk verteilen/empfangen.

    Das Betriebssystem ist ein aktuelles Linux Mint (mit XFCE-Desktop).
    Das USB-Interface identifiziert sich lt. lsusb als:
    Code:
    Bus 003 Device 002: ID 135e:0022 Insta GmbH Gira KNX Data Interface
    Was ich bis jetzt gemacht/geschafft habe:
    KNXD ist auf dem Linux direkt installiert, mit einer knxd.ini gestartet (die poste ich weiter unten). NodeRed in einem Container gestartet, Netzwerkmodus "host": empfängt mit über den Multicast die Telegramme.

    Nun würde ich gerne KNXD im Docker starten, bevorzugt gleich in einem Compose-Stack. Es gibt aber gefühlt trölf verschiedene Docker-Container und irgendwie ist mir unklar, wie ich das USB-Device da reinbekomme. Probiert habe ich jetzt vorhin diese Variante, weil die irgendwie die einzige ist, bei der ich einen Verweis auf USB-Geräte in der Dokumentation gefunden habe https://github.com/michelde/knxd-docker

    Das Problem ist hierbei allerdings
    Code:
    --device=/dev/knx:/dev/knx
    Der Pfad existiert auf dem Host nicht, und der Container braucht diesen unbedingt sonst stürzt er ab.

    Hat da jemand evtl. Erfahrungen und kann mir ggf. weiterhelfen?

    Viele Grüße

    Anhang: knxd.ini
    Code:
    [B.usb]
      driver = usb
    [debug-server]
      name = mcast:knxd
    [main]
      addr = 0.0.253
      cache = A.cache
      client-addrs = 0.0.240:10
      connections = server,B.usb
      systemd = systemd
    [server]
      debug = debug-server
      discover = true
      router = router
      server = ets_router​

    #2
    Es darf die Frage erlaubt sein, wieso du das überhaupt willst.

    Abgesehen von USB ist auch Multicast im Container nicht ganz unproblematisch, und Multicast von einem Container zum anderen ist noch fitzeliger.

    Du hast den knxd doch schon im System laufen. Lass ihn da einfach.

    NB: /dev/knx ist für seriell angeschlossene KNX-Schnittstellen da. Sowas hast du nicht. Das Gira-Ding wird mit HID angebunden, dafür brauchst du das korrekte Device in /dev/usb. Vorsicht, die Busnummerierung und somit der Dateiname kann sich bei einem Reboot beliebig ändern …
    DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

    Kommentar


      #3
      Guten Morgen,

      der Sinn (& die Hoffnung) ist, dass die Telegramme innerhalb des Stacks bleiben. Ich will nicht, dass knxd die Telegegramme als Multicast auf den Ethernetschnittstellen ausgibt. Auch will ich es eigentlich nicht Möglich machen, dass knxd auf allen Ethernetschnittstellen die Möglichkeit eines Tunnels anbietet.

      Was ich noch vergessen habe: unter Node-Red nutze ich derzeit das KNX-PlugIn "node-red-contrib-knx-ultimate". Bis dato allerdings nur im reinen Versuchsstatus, ein Umstieg auf ein anderes PlugIn wäre also Problemlos möglich.

      Viele Grüße

      Kommentar


        #4
        Hallo,
        also das KNX-PlugIn "node-red-contrib-knx-ultimate" ist sicher die richtige Wahl. Ansonsten rate ich dir ein KNX IP Interface zu verwenden und ggf. es in ein VLAN zu geben, um es von "anderen" LAN zu trennen. USB, KNXd und Docker ist keine "gute" Kombination.
        mfg Norbert

        Kommentar


          #5
          Es schreibt keiner dem knxd vor, dass er unbedingt auf irgendwas lauschen muss. Und: Den UDP-Port kann man problemlos via iptables blockieren.

          Der Nutzen von Docker u.Ä. ist es, nervige Softwarestacks so zu verpacken, dass sie eine vom System unabhängige Einheit bilden. Für KNXD und ähnlichen Kleinkram, der problemlos nativ läuft, ist das schlicht Overkill und der Aufwand steht in keinem Verhältnis zum Grenznutzen. Sämtliche Security-, Netzwerfilter- und was-auch-immer-Features von Containern sind nette Zusatzfeatures, die (korrekt angewendet) die Arbeit erleichtern, aber als alleiniger Einsatzgrund sind sie untauglich – und wenn sie die Arbeit stattdessen aktiv behindern, sollte man sich überlegen, ob es wirklich eine gute Idee ist, ein Messer als Schraubendreher zu verwenden.
          DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

          Kommentar


            #6
            Morgen nochmal,

            danke für den Input. Ich werde für weitere Tests knxd nativ einsetzten und mir dann überlegen, ob ich den Schritt über iptables oder IP-Router/Interface gehe.

            VG

            Kommentar

            Lädt...
            X