RPC-Server für die Homematic CCU3 lässt sich auf Raspberry Pi nicht starten

Begonnen von Dieter Rapp, 26 Oktober 2021, 17:48:57

Vorheriges Thema - Nächstes Thema

Dieter Rapp

Hallo,

vor einiger Zeit habe ich angefangen eine Heizungssteuerung mit einer Homematic CCU3 und z.Zt. 17 HmIP-eTRV-B Thermostaten aufzubauen. Die CCU3 übernimmt mit ihren Wochenplänen die Standard-Heizzeiten während außergewöhnliche Zeiten über einen Google-Kalender gesteuert werden.

Da ich Anfangs noch keinen Raspberry Pi hatte, habe ich ihn auf einer virtuellen Maschine simuliert (Oracle Virtualbox unter Windows 10 als Host und Raspbian GNU/Linux 10 (buster) als Gast). In dieser Konstellation konnte ich den RPC-Server des Devices CCU3 vom Type HMCCU starten. Ich hatte das Attribute rpcserver auf on. Der Status von CCU3 war Running/OK. Die Readings der angeschlossenen Thermostate bzw. der zugeordneten Channel wurden regelmäßig upgedatet.

Nun habe ich den Raspberry Pi4 als Hardware da und FHEM läuft dort als Docker-Image. Der Umzug der Konfigdatei fhem.cfg war zwar etwas holprig wegen der Umlaute, aber schließlich hat es geklappt. Was allerdings gar nicht geht, ist der RPC-Server der CCU3.
Ich habe rpcserver deswegen zunächst mal auf off gesetzt. Setze ich es dann manuell auf on, dann ist FHEM erst mal eine Weile beschäftigt. Nach mehreren Minuten ist es dann wieder ansprechbar. Der Status von CCU3 ist dann aber Inactive/OK.

Im Logfile (CCU3 hat verbose auf 2 gesetzt) finde ich dann das:
Zitat
2021.10.26 17:13:44 2: HMCCU: [CCU3 : 23988] Get RPC device for interface BidCos-RF
2021.10.26 17:13:44 2: HMCCU: [CCU3 : 23988] Get RPC device for interface HmIP-RF
2021.10.26 17:13:44 2: HMCCU: [CCU3 : 23988] Get RPC device for interface VirtualDevices
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server process started for interface BidCos-RF with PID=26275
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] Initializing RPC server CB2001000002178097 for interface BidCos-RF
2021.10.26 17:13:44 1: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server starting
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] RPC server process started for interface HmIP-RF with PID=26276
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] Initializing RPC server CB2010000002178097 for interface HmIP-RF
2021.10.26 17:13:44 1: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] RPC server starting
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] RPC server process started for interface VirtualDevices with PID=26277
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] Initializing RPC server CB9292000002178097 for interface VirtualDevices
2021.10.26 17:13:44 1: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] RPC server starting
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] Callback server CB2001000002178097 created. Listening on port 7411
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] CB2001000002178097 accepting connections. PID=26275
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server CB2001000002178097 enters server loop
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Registering callback http://172.17.0.2:7411/fh2001 of type A with ID CB2001000002178097 at http://192.168.178.97:2001
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] Callback server CB2010000002178097 created. Listening on port 7420
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] CB2010000002178097 accepting connections. PID=26276
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] Callback server CB9292000002178097 created. Listening on port 14702
2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] CB9292000002178097 accepting connections. PID=26277
2021.10.26 17:16:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC request error RPC::XML::Client::simple_request: RPC::XML::Client::send_request: HTTP server error: read timeout
2021.10.26 17:16:44 1: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Failed to register callback for ID CB2001000002178097
2021.10.26 17:16:46 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Checking if RPC server process is running
2021.10.26 17:16:46 1: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server process not running. Cleaning up
2021.10.26 17:16:46 1: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Housekeeping called. Cleaning up RPC environment
2021.10.26 17:16:46 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Sending signal INT to RPC server process CB2001000002178097 with PID=26275
2021.10.26 17:16:46 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] CB2001000002178097 received signal INT
2021.10.26 17:16:46 1: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] RPC server CB2001000002178097 stopped handling connections. PID=26275
2021.10.26 17:16:46 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 26275] Number of I/O errors = 0
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server process CB2001000002178097 deleted
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Stop I/O handling
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC server stopped. Cancel delayed shutdown.
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] Checking if RPC server process is running
2021.10.26 17:16:48 1: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] RPC server process not running. Cleaning up
2021.10.26 17:16:48 1: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] Housekeeping called. Cleaning up RPC environment
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] Sending signal INT to RPC server process CB2010000002178097 with PID=26276
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] CB2010000002178097 received signal INT
2021.10.26 17:16:48 1: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] RPC server CB2010000002178097 stopped handling connections. PID=26276
2021.10.26 17:16:48 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 26276] Number of I/O errors = 0
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] RPC server process CB2010000002178097 deleted
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] Stop I/O handling
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097HmIP_RF : 23988] RPC server stopped. Cancel delayed shutdown.
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] Checking if RPC server process is running
2021.10.26 17:16:50 1: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] RPC server process not running. Cleaning up
2021.10.26 17:16:50 1: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] Housekeeping called. Cleaning up RPC environment
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] Sending signal INT to RPC server process CB9292000002178097 with PID=26277
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] CB9292000002178097 received signal INT
2021.10.26 17:16:50 1: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] RPC server CB9292000002178097 stopped handling connections. PID=26277
2021.10.26 17:16:50 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 26277] Number of I/O errors = 0
2021.10.26 17:16:52 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] RPC server process CB9292000002178097 deleted
2021.10.26 17:16:52 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] Stop I/O handling
2021.10.26 17:16:52 2: HMCCURPCPROC: [d_rpc178097VirtualDevices : 23988] RPC server stopped. Cancel delayed shutdown.

Was kann denn der Grund dafür sein, dass der RPC-Server nicht "anspringt"? Bei der Homematic CCU3 habe ich schon die Ports offen und Homematic XML-RPC API und Remote Homematic-Script API Vollzugriff gegeben. Weitere Ports oder IP-Adressen für eingeschränkten Zugriff habe ich nicht eingetragen.

Kann es sein, dass die Firewall des Raspberry Pi da irgendwas blockiert?

Port 8083 habe ich beim Start des Docker-Images angegeben, der funktioniert. Aber da sind ja noch die Ports 2001, 2010 und 9292, die für die Kommunikation zwischen FHEM und der CCU3 benutzt werden. Und laut Log will der RPC-Server noch die Ports 7411, 7420 und 14702 nutzen. Muss ich da vielleicht was unternehmen?

Für Tipps bin ich dankbar. Wenn nötig, stelle ich auch mal verbose höher, damit mehr Informationen kommen.

Dieter Rapp

Hallo an alle, die ein ähnliches Problem haben,

ich habe die Sache mit dem RPC-Server für die Homematic CCU3 in den Griff bekommen. Jetzt läuft er. Es hat mich allerdings etwas Zeit und Mühe gekostet.

  • Im Logfile ist mir diese Zeile besonders aufgefallen:
    Zitat2021.10.26 17:16:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] RPC request error RPC::XML::Client::simple_request: RPC::XML::Client::send_request: HTTP server error: read timeout
    Zumindest der Server für die BidCos_RF-Devices hatte ein Problem. Da ich aber nur HmIP-Thermostate angeschlossen habe, war es naheliegend diesen Server herauszunehmen. Also habe ich das Attribut rpcinterfaces der CCU3 auf HmIP-RF,VirtualDevices gesetzt, BidCos-RF also rausgenommen.
    Nach einem Start des RPC-Servers mit set CCU3 rpcserver on kam nach ein paar Minuten tatsächlich der Status Running/OK.

  • Obwohl der Server nun gelaufen ist, wurden die Soll-Temperaturen der Thermostate nach einer Änderung nicht aufgefrischt. Dazu musste ich get dev_.* update eingeben (meine Devices fangen alle mit dev_ an). An der Stelle fiel mir folgende Zeile auf:
    Zitat2021.10.26 17:13:44 2: HMCCURPCPROC: [d_rpc178097BidCos_RF : 23988] Registering callback http://172.17.0.2:7411/fh2001 of type A with ID CB2001000002178097 at http://192.168.178.97:2001
    Die IP-Adresse der CCU3 (Client) war mit 192.168.178.97 zwar okay, aber die IP-Adresse des RPC-Servers sah mit 172.17.0.2 falsch aus. Bei einer kurzer Suche im Internet habe ich festgestellt, dass man die korrekte IP-Adresse des RPC-Servers angeben muss. Ich habe daraufhin das Attribut rpcserveraddr auf 192.168.178.67 gesetzt, der IP meines Raspberry Pis.
    Nun änderte sich auch die Meldung Registering callback http://172.17.0.2:7411/fh2001 nach dem Neustart des RPC-Servers zu Registering callback http://192.16.178.67:7411/fh2001.


  • Aber die Soll-Temperaturen der Thermostate wurden nach einer Änderung immer noch nicht aufgefrischt. Das lag aber jetzt daran, dass die Ports 7411, 7420 und 14702 nicht offen waren. Dazu muss der Docker-Container von FHEM entsprechend gestartet werden. Das habe ich mit folgendem Kommando gemacht:
    Zitatdocker run -e FHEM_UID=1001 -e FHEM_GID=1001 --restart=always -d --name fhem -p 8083:8083 -p 7411:7411 -p 7420:7420 -p 14702:14702 -v /home/fhem:/opt/fhem fhem/fhem
Mit diesen Schritten habe ich den RPC-Server zum Laufen gebracht und von außen ansprechbar gemacht. Ab da wurden auch die Soll-Temperaturen der Thermostate nach eine Änderung selbständig aufgefrischt.