Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit knx binding und docker

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

    Probleme mit knx binding und docker

    Hallo Leute,

    ich versuche das knx binding in Verbindung mit docker zu nutzen. in der openhab.cfg steht folgendes:
    knx:ip=192.168.200.20
    knx:type=TUNNEL
    knx:localIp=192.168.200.240

    ohne docker läuft das ganze auch problemlos sobald ich das Ganze mit hilfe von Docker starte kommen folgende Fehlermeldungen:


    14:08:20.248 ERROR o.o.b.k.i.c.KNXConnection[:218] - Error connecting to KNX bus: on connect to /192.168.200.20:3671: Cannot assign requested address
    14:08:20.249 WARN o.o.b.k.i.c.KNXConnection[:393] - Inital connection to KNX bus failed!
    14:08:20.253 INFO o.o.c.s.AbstractActiveService[:169] - FritzAHA Refresh Service has been started
    14:08:20.260 ERROR tuwien.auto.calimero[:47] - [ManagedService Update Queue] KNXnet/IP Tunneling 192.168.200.20:3671: communication failure on connect
    java.net.BindException: Cannot assign requested address
    at java.net.PlainDatagramSocketImpl.bind0(Native Method)

    man kann ja wie oben angegeben noch eine localIp angeben. Liegt es daran, dass ich den passenden Port evlt noch nicht in docker freigegeben habe? und wenn ja wie ist die portnummer? Der Port 3671 kann es ja nicht sein, das ist ja der vom Gateway und von innen nach außen lässt docker die Kommunikation ja durch.

    hier noch der log auszug ohne docker
    [b.k.i.connection.KNXConnection] - Established connection to KNX bus on 192.168.200.20:3671 in mode TUNNEL.
    -> IP passt also

    Für hilfe bin ich sehr dankbar

    mfg SHB256
    Zuletzt geändert von shb256; 06.03.2016, 17:24.

    #2
    Ich nutze Docker bisher nicht, meine aber mich zu erinnern, dass es da eine bridge gibt, über die der Netzwerkverkehr läuft. Eventuell musst Du da erst noch was konfigurieren. Auf jeden Fall wird der Docker Container wohl eine andere IP haben als der Host, auf dem er läuft.

    Kommentar


      #3
      Docker nutzt innerhalb des Containers eine andere ip, von außerhalb lässt sich der Container über die normale Server ip ansprechen. Openhab selbst lässt sich ja problemlos über web und app erreichen

      Kommentar


        #4
        hm. Aber für openHAB, welches im Container läuft, müsste ja trotzdem die "innere" IP die lokale IP sein, oder?

        Kommentar


          #5
          Nein, für oh ist auch die eigene IP ja egal. Sie ist für die Gegenstelle wichtig, damit sie den Server wieder findet

          Kommentar


            #6
            Ich habe gerade ein ähnliches Problem.

            Es ist tatsächlich so, dass der Container eine eigene IP hat. Docker erstellt ein eigenes Netz und routet die Anfragen dann. Du erreichst die openHab Instanz innerhalb des Containers über die IP des Docker Host, weil du die Ports beim Starten des Containers angegeben hast die Docker für dich weiterleiten soll ..

            Ich habe folgende openHAB/KNX config:

            Code:
            knx:ip=10.0.1.125
            knx:type=TUNNEL
            knx:localIp=172.17.0.12
            172.17.0.12 ist die IP des Containers!

            Code:
            docker exec -it openhab ip addr

            Die localIP habe ich zzt. nur zu Testzwecken fest drinne. Eigentlich sollte man die nicht setzen, wenn man openHab im Container laufen lässt (wenn man den Container neu erstellt, bekommt man wahrscheinlich eine neue IP).

            Leider bekomme ich einen timeout:

            2016-03-30 06:09:34.589 [ERROR] [tuwien.auto.calimero ] - [ManagedService Update Queue] KNXnet/IP Tunneling 10.0.1.125:3671: establishing connection failed tuwien.auto.calimero.exception.KNXTimeoutException : timeout connecting to control endpoint /10.0.1.125:3671 at tuwien.auto.calimero.knxnetip.ClientConnection.con nect(ClientConnection.java:172) ~[na:na] at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.<init >(KNXnetIPTunnel.java:117) ~[na:na] at tuwien.auto.calimero.link.KNXNetworkLinkIP.<init>( KNXNetworkLinkIP.java:180) ~[na:na] at org.openhab.binding.knx.internal.connection.KNXCon nection.connectByIp(KNXConnection.java:263) ~[na:na] at org.openhab.binding.knx.internal.connection.KNXCon nection.connect(KNXConnection.java:159) ~[na:na] at org.openhab.binding.knx.internal.connection.KNXCon nection.updated(KNXConnection.java:409) ~[na:na] at org.eclipse.equinox.internal.cm.ManagedServiceTrac ker$1.run(ManagedServiceTracker.java:183) ~[na:na] at org.eclipse.equinox.internal.cm.SerializedTaskQueu e$1.run(SerializedTaskQueue.java:36) ~[na:na]
            Mit der ETS kann ich mich sowohl über ROUTER und TUNNEL zum IP Router verbinden. Deshalb vermute ich eigentlich, es liegt an der Netzwerk-Config des Docker Container. Im Router Modus von openHAB bekomme ich auch eine Verbindung, aber die KNX Telegramme die openHAB angeblich sendet kommen auf dem Bus nicht an ..
            Zuletzt geändert von ds82; 30.03.2016, 07:28.

            Kommentar


              #7
              Wenn ich es richtig verstanden habe, nattet Docker die Container und sie sind standardmäßig gar nicht über Netzwerk erreichbar, nur vom Container initiierte Verbindungen funktionieren. KNX sollte nach Möglichkeit immer im selben Subnetz laufen und Multicast Pakete (knx ROUTING) werden nicht geroutet, wenn man nicht spezielle Vorkehrungen trifft, das dürfte auch auf Docker zutreffen. Kann man Docker nicht auch so konfigurieren, dass es die Container an eine Bridge hängt?

              Kommentar


                #8
                --net=host Oder tunnel statt routing

                Kommentar


                  #9
                  Zitat von henfri Beitrag anzeigen
                  --net=host Oder tunnel statt routing

                  --net=host war die Lösung für mein Problem, danke!

                  Kommentar


                    #10
                    Hallo zusammen,

                    ich habe auch ein Problem mit dem Docker und KNX Anbindung (IP-Schnittstelle Weinzierl 730)
                    wenn ich in die KARAF Konsole schaue, gibt es immer wieder TIMEOUTs beim Lesen/Senden von/zu KNX.
                    Manche Telegramme kommen durch, manche erst nach ein paar Minuten, manche überhaupt nicht.
                    D.h. ab und kann ich das Licht schalten (openhab->KNX) und die Temperaturen zeigen openhab richtig an (KNX->openhab)... aber meistens mit unglaublicher Verzögerung. (Wobei die Verzögerung habe ich auch beim Samsung TV Binding, evtl. liegt es gar nicht KNX Binding ?!)

                    --net=host ist gesetzt. knx Binding ist auf TUNNEL eingestellt. Die Einstellungen haben vor dem Docker funktioniert...

                    Muss es die knx:localIp= von Docker oder von dem Host sein? soll ich auch noch Port 3671 weiterleiten?

                    Danke!

                    Kommentar


                      #11
                      Mit Docker selbst kenne ich mich nicht aus. Welche Version von openHAB setzt Du ein?

                      Kommentar


                        #12
                        2.1.0

                        die hatte ich vor dem "Umzug ins Docker" und da gings und jetzt nutze 2.1.0 im Docker mit den gleichen Einstellungen

                        Kommentar


                          #13
                          Zitat von Eugenius Beitrag anzeigen

                          --net=host ist gesetzt. knx Binding ist auf TUNNEL eingestellt. Die Einstellungen haben vor dem Docker funktioniert...

                          Muss es die knx:localIp= von Docker oder von dem Host sein? soll ich auch noch Port 3671 weiterleiten?

                          Danke!
                          Welche Version des Binding? KNX1 oder KNX2?

                          openHAB-2.3.0-snapshot mit KNX2 schnurrt hier im Docker wie eine Katze, knx.things wie folgt

                          PHP-Code:
                          Bridge knx:ip:bridge [
                              
                          ipAddress="KNXIPGateway",
                              
                          portNumber=3671,
                              
                          localIp="dockerhost",
                              
                          type="TUNNEL",
                              
                          readingPause=50,
                              
                          responseTimeout=10,
                             
                          readRetriesLimit=3,
                             
                          autoReconnectPeriod=10,
                             
                          localSourceAddr="0.0.0"
                          ] {
                              
                          Thing device ... // und so weiter 
                          mit
                          Code:
                          --net=host
                          brauchst Du keine Ports freizulegen. Entscheidend war bei meiner config das localIp="dockerhost", also der Rechner / Server / wasauchimmer auf dem der Docker-Container läuft. Sonst kamen die callbacks nicht oder nur unregelmäßig an, danach klingt Dein issue.

                          Vielleicht mal damit (localIP) starten. Darf auch ein fully qualified hostname sein, wenn der im DNS hängt.

                          Kommentar


                            #14
                            Danke für eure Antworten.
                            Die Einstellungen waren richtig. Nur ging es trotzdem nicht. Docker Container Neustart hat nichts gebracht... dafür aber Serverneustart... (ich dachte ich habe schon früher probiert)

                            Auf jeden Fall läuft es wie geschmiert mit der 2.1 Version und 1er KXN Binding.
                            Jetzt muss ich die Zeit finden die 2.3 Version mit 2er KNX Binding zu probieren.

                            Kommentar


                              #15
                              zu früh gefreut... die Probleme habe ich wieder :/
                              KNXnet/IP Tunneling 192.168.178.98:3671: response timeout waiting for confirmation

                              Kommentar

                              Lädt...
                              X