pivCCU3 <> OpenHAB 2.4 in Docker Container

Virtualisierte CCU für Raspberry Pi und Clones

Moderator: Co-Administratoren

Antworten
stefan13
Beiträge: 30
Registriert: 15.09.2019, 14:29
Hat sich bedankt: 7 Mal

pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von stefan13 » 27.09.2019, 18:39

Hallo,
ich bin neu in der HomeMatic Welt und versuche meinen neuen Raspberry pi4 mit pivCCU3 in mein OpenHAB System zu integrieren.

OpenHAB läuft bei mir in einem Docker Container auf meinem NAS im Host Mode und ich denke, dass dort auch das Problem entsteht.

Die TCP Ports 9125 und 9126, sowie der UDP Port 43439 habe ich im Docker Profile nach aussen geöffnet.
Die Homematic FW habe ich zum Testen komplett deaktiviert.

Ich habe jetzt schon verschiedene Ansätze versucht - über die OH PaperUI und AutoDiscovery bis hin zur manuellen Definition der Bridge im Things File.

Die homematic:HmIP-RCV-50 wird manchmal gefunden, geht dann ONLINE, um kurz danach wieder OFFLINE zu gehen.
Das gleich passiert mit dem Gateway-Extra-CCU.
Ich hab auf dem Raspberry einen TCPDump gemacht und etwas merkwürdiges festgestellt.

Die komplette Kommunikation läuft zwischen der NAS IP (192.168.5.21) und der pivCCU3 IP (192.168.5.55) in beide Richtungen.
Es gibt jedoch immer wieder Anfragen von der 192.168.5.55 (pivCCU3) auf Port 9125 (XML-RPC), allerdings nicht an die .21 wie ich erwarten würde, sondern an die interne Docker0 Schnittstelle (10.0.5.1). Woher kennt die pivCCU3 diese IP? Die kann er natürlich nie erreichen.

Vielleicht bin ich auch komplett auf dem Holzweg, und das Problem ist ein ganz anderes (sitzt evtl. vor der Tastatur :roll: ).

Danke für Eure Hilfe.

Grüße
Stefan

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von deimos » 27.09.2019, 19:13

Hi,

bei den XmlRPC Schnittstellen meldet man sich jeweils mit einer Antwortadresse an, an welche die CCU Events schickt. Openhab nimmt hier standardmäßig die lokale IP, welche bei dir halt die interne Docker IP ist.
callbackHost und bindAddress sind hier die beiden Settings vom Binding, welche für dich interessant sein dürften.

Viele Grüße
Alex

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von eiGelbGeek » 28.09.2019, 06:20

stefan13 hat geschrieben:
27.09.2019, 18:39
Die TCP Ports 9125 und 9126, sowie der UDP Port 43439 habe ich im Docker Profile nach aussen geöffnet.
Ist das tatsächlich nötig?!? Ich nutze ja auch Openhab im Docker (Host Mode) Ich habe keinerlei Ports ausser natürlich OPENHAB_HTTP_PORT=XXXX & OPENHAB_HTTPS_PORT=XXXX rausgeführt.... Das Binding kommuniziert doch zum Port der CCU und nicht umgekehrt?!? Also ich habe keinerlei Probleme in der Kommunikation.

Ich hänge dir mal mein yaml File an :-)

Code: Alles auswählen

version: '2.2'

services:
  openhab:
    container_name: OPENHAB_DEV
    image: "openhab/openhab:milestone"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/TZ:/etc/timezone:ro"
      - "./addons:/openhab/addons"
      - "./conf:/openhab/conf"
      - "./userdata:/openhab/userdata"
    environment:
      USER_ID: "XXXX"
      GROUP_ID: "XXXX"
      OPENHAB_HTTP_PORT: "XXXX"
      OPENHAB_HTTPS_PORT: "XXXX"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

stefan13
Beiträge: 30
Registriert: 15.09.2019, 14:29
Hat sich bedankt: 7 Mal

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von stefan13 » 28.09.2019, 11:52

Danke für die Antworten.
Ich hab den Container auch im Host Mode aufgesetzt. Eigentlich sollte es damit kein Problem geben, aber es geht irgendwie nicht :(

Mit nachfolgendem Script starte ich den Container.

Code: Alles auswählen

#!/bin/sh

DIR_CONF=$(readlink -f ./conf)
DIR_USERDATA=$(readlink -f ./userdata)
DIR_ADDONS=$(readlink -f ./addons)
OH_VERSION='2.4.0'
OH_NAME='openhab_240'

if [ -z $DIR_CONF ]; then
        echo "Config directory does not exist!"
        exit 1
fi
if [ -z $DIR_USERDATA ]; then
        echo "Userdata directory does not exist!"
        exit 1
fi
if [ -z $DIR_ADDONS ]; then
        echo "Addons directory does not exist!"
        exit 1
fi

echo "Conf directory: $DIR_CONF"
echo "Userdata directory: $DIR_USERDATA"
echo "Addons directory: $DIR_ADDONS"
echo "Version: $OH_VERSION"
echo "Name: $OH_NAME"   
   
docker rm $OH_NAME
 
    docker run -it \
        --name $OH_NAME \
        --net=host \
        -v $DIR_ADDONS:/openhab/addons \
        -v $DIR_CONF:/openhab/conf \
        -v $DIR_USERDATA:/openhab/userdata \
        -e "EXTRA_JAVA_OPTS=-Duser.timezone=Europe/Berlin" \
        -d \
        --device=/dev/ttyACM0:/dev/ttyACM0 \
        --restart=always \
        -e USER_ID=xx \
        -e GROUP_ID=xxx \
        -e OPENHAB_HTTP_PORT=8190 \
        -e OPENHAB_HTTPS_PORT=8191 \
        -p 9125:9125  \
        -p 9126:9126  \
        -p 43439:43439  \
        -p 8190:8190  \
        -p 8191:8191  \
        openhab/openhab:$OH_VERSION
    
    docker exec $OH_NAME chmod a+rw /dev/ttyACM0

Im OpenHAB trace hab ich folgenden Fehler gefunden:

Code: Alles auswählen

11:40:54.839 [DEBUG] [communicator.AbstractHomematicGateway] - Used Homematic transfer modes: RF:XML_RPC, HMIP:XML_RPC, GROUP:XML_RPC
11:40:54.858 [DEBUG] [rnal.communicator.server.XmlRpcServer] - Initializing XML-RPC server at port 9125
11:40:54.883 [DEBUG] [ematic.handler.HomematicBridgeHandler] - Homematic bridge was set to OFFLINE-COMMUNICATION_ERROR due to the following exception: Jetty start failed
java.io.IOException: Jetty start failed
        at org.eclipse.smarthome.binding.homematic.internal.communicator.server.XmlRpcServer.start(XmlRpcServer.java:93) ~[?:?]
        at org.eclipse.smarthome.binding.homematic.internal.communicator.AbstractHomematicGateway.startServers(AbstractHomematicGateway.java:254) ~[?:?]
        at org.eclipse.smarthome.binding.homematic.internal.communicator.AbstractHomematicGateway.initialize(AbstractHomematicGateway.java:192) ~[?:?]
        at org.eclipse.smarthome.binding.homematic.handler.HomematicBridgeHandler.initializeInternal(HomematicBridgeHandler.java:108) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.net.BindException: Cannot assign requested address
        at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
        at sun.nio.ch.Net.bind(Net.java:433) ~[?:?]
        at sun.nio.ch.Net.bind(Net.java:425) ~[?:?]
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:?]
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[?:?]
        at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:331) ~[?:?]
        at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:299) ~[?:?]
        at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[?:?]
        at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235) ~[?:?]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[?:?]
        at org.eclipse.jetty.server.Server.doStart(Server.java:398) ~[?:?]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[?:?]
        at org.eclipse.smarthome.binding.homematic.internal.communicator.server.XmlRpcServer.start(XmlRpcServer.java:88) ~[?:?]
        ... 10 more
Auf der OH Community Seite habe ich folgende Erklärung gefunden:

https://community.openhab.org/t/homemat ... iled/73375

Die Erklärung für diesen Fehler passt zu meiner Annahme. Allerdings scheint dieses Problem eigentlich nicht im Docker Host-Mode auftreten zu sollen.
Leider kann ich den erforderlichen Parameter noch nicht testen, da die Option "bindAddress" nicht in der OH Version 2.4 verfügbar ist :(

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von eiGelbGeek » 28.09.2019, 13:51

Wie sehen denn deine Firewalleinstellungen in der piVCCU3 aus?
Bildschirmfoto 2019-09-28 um 13.48.49.png
Versuche es einfach mal so , nachdem du die Firewall Einstellungen gecheckt hast :mrgreen:

Code: Alles auswählen

#!/bin/sh

DIR_CONF=$(readlink -f ./conf)
DIR_USERDATA=$(readlink -f ./userdata)
DIR_ADDONS=$(readlink -f ./addons)
OH_VERSION='2.4.0'
OH_NAME='openhab_240'

if [ -z $DIR_CONF ]; then
        echo "Config directory does not exist!"
        exit 1
fi
if [ -z $DIR_USERDATA ]; then
        echo "Userdata directory does not exist!"
        exit 1
fi
if [ -z $DIR_ADDONS ]; then
        echo "Addons directory does not exist!"
        exit 1
fi

echo "Conf directory: $DIR_CONF"
echo "Userdata directory: $DIR_USERDATA"
echo "Addons directory: $DIR_ADDONS"
echo "Version: $OH_VERSION"
echo "Name: $OH_NAME"   
   
docker rm $OH_NAME
 
    docker run -it \
        --name $OH_NAME \
        --net=host \
        -v $DIR_ADDONS:/openhab/addons \
        -v $DIR_CONF:/openhab/conf \
        -v $DIR_USERDATA:/openhab/userdata \
        -e "EXTRA_JAVA_OPTS=-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0" \
        -d \
        --device=/dev/ttyACM0:/dev/ttyACM0 \
        --restart=always \
        -e USER_ID=xx \
        -e GROUP_ID=xxx \
        -e OPENHAB_HTTP_PORT=8190 \
        -e OPENHAB_HTTPS_PORT=8191 \
        openhab/openhab:$OH_VERSION
    
    docker exec $OH_NAME chmod a+rw /dev/ttyACM0
piVCCU habe ich per Autodiscovery eingebunden .... es läuft alles :-)
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

stefan13
Beiträge: 30
Registriert: 15.09.2019, 14:29
Hat sich bedankt: 7 Mal

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von stefan13 » 28.09.2019, 22:50

Die FW Einstellung sind komplett offen - da sollte nichts geblockt werden.
Bildschirmfoto 2019-09-28 um 14.19.03.png
Auch hab ich die Authentifizierung in den Einstellungen ausgeschaltet.
Bildschirmfoto 2019-09-28 um 14.19.28.png

stefan13
Beiträge: 30
Registriert: 15.09.2019, 14:29
Hat sich bedankt: 7 Mal

Re: pivCCU3 <> OpenHAB 2.4 in Docker Container

Beitrag von stefan13 » 28.09.2019, 23:34

Hab den Fehler gefunden :)
Ich hatte einen Typo in der callbackHost IP :(

Antworten

Zurück zu „piVCCU“