Server has to send "init" again

Hallo,

ich versuche (bislang erfolglos) homegear in einem Docker Container mit Home Assistant zu verbinden.
In der .log-Datei findet sich folgendes:

03/16/20 16:29:27.335 RPC Server (Port 2001): Info: Connection from ::ffff:172.17.0.1:33228 accepted. Client number: 10
03/16/20 16:29:27.335 RPC Server (Port 2001): Info: RPC server client id for client number 10 is: 1
03/16/20 16:29:27.335 RPC Server (Port 2001): Listening for incoming packets from client number 10.
03/16/20 16:29:27.335 RPC Server (Port 2001): Debug: Packet received: 504F5354202F5250433220485454502F312E310D0A486F73743A203132372E302E302E313A323030310D0A417574686F72697A6174696F6E3A20426173696320614739745A57646C5958493659327778625452304D324E734D48566B0D0A4163636570742D456E636F64696E673A20677A69700D0A436F6E74656E742D547970653A20746578742F786D6C0D0A557365722D4167656E743A20507974686F6E2D786D6C7270632F332E370D0A436F6E74656E742D4C656E6774683A203234320D0A0D0A3C3F786D6C2076657273696F6E3D27312E30273F3E0A3C6D6574686F6443616C6C3E0A3C6D6574686F644E616D653E696E69743C2F6D6574686F644E616D653E0A3C706172616D733E0A3C706172616D3E0A3C76616C75653E3C737472696E673E687474703A2F2F3132372E302E302E313A34333034393C2F737472696E673E3C2F76616C75653E0A3C2F706172616D3E0A3C706172616D3E0A3C76616C75653E3C737472696E673E686F6D65617373697374616E742D686F6D65676561723C2F737472696E673E3C2F76616C75653E0A3C2F706172616D3E0A3C2F706172616D733E0A3C2F6D6574686F6443616C6C3E0A
03/16/20 16:29:27.336 RPC Server (Port 2001): Info: Client number 10 is calling RPC method: init (1) Parameters:
(String) http://127.0.0.1:43049
(String) homeassistant-homegear
03/16/20 16:29:27.336 Info: Client with IP ::ffff:172.17.0.1 is calling "init".
03/16/20 16:29:27.336 Info: Adding server "http://127.0.0.1".
03/16/20 16:29:27.336 RPC Server (Port 2001): Response: 
(void)
03/16/20 16:29:27.336 RPC Server (Port 2001): Response packet: HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml
Content-Length: 96

<?xml version="1.0"?><methodResponse><params><param><value/></param></params></methodResponse>

03/16/20 16:29:27.336 Info: Calling init methods on server "http://127.0.0.1".
03/16/20 16:29:27.358 RPC Server (Port 2001): Debug: Connection to client number 10 closed.
03/16/20 16:29:27.358 RPC Server (Port 2001): Debug: Connection to client number 10 closed (1).
03/16/20 16:29:27.836 RPC client: Debug: Calling RPC method "system.listMethods" on server 127.0.0.1.
03/16/20 16:29:27.836 RPC client: Parameters:
03/16/20 16:29:27.836 Debug: Calling getFileDescriptor...
03/16/20 16:29:27.836 Debug: Connecting to host 127.0.0.1 on port 43049...
03/16/20 16:29:28.237 Could not connect to server 127.0.0.1 on port 43049. Poll failed with error code: 1. Removing server. Server has to send "init" again.

Offenkundig schickt Home Assistant nicht die Antwort auf die Homegear wartet… Wie kriege ich raus woran das liegt? UFW hat jedenfalls Anweisung von 127.0.0.1 alles durchzulassen…

Mehr Details (debugLevel = 6) wären hier: http://dpaste.com/2RWCQFA

Hallo @Azimoth,

sorry für die sehr späte Antwort.

Home Assistant muss fĂĽr Ereignisse einen Ereignisserver zur VerfĂĽgung stellen. Dieser wird Homegear ĂĽber das Init mitgeteilt. In diesem Fall ist der Server 127.0.0.1 und der Port 43049. Zu diesem Dienst kann Homegear jedoch keine Verbindung aufbauen. Es kommt gar keine TCP-Verbindung zustande, d. h. unter dieser Host/Port-Kombination ist der Server nicht erreichbar. Vermutlich ist 127.0.0.1 aber auch falsch, oder?

Viele GrĂĽĂźe

Sathya

Hallo @sathya,

nach meiner “Analyse” war das Problem, dass 127.0.0.1:2001 zwar an den Docker Container weitergeleitet wurde, aber die dynamisch ausgehandelten Ports wie 43049 eben nicht.

Ich habe jetzt just dieses Wochenende das ganze gelöst, indem ich mit Qemu eine Debian-VM eingerichtet hab auf der nur Homegear läuft und die dank Bridge eben eine eigene IP hat.
Jetzt klappt alles soweit. Zugegeben, vermutlich nicht der effizienteste Weg, aber es funktioniert. :smiley:

EDIT: Das Ganze läuft bei mir unter Gentoo, daher konnte ich Homegear nicht direkt “einfach so” installieren.

1 Like

Ich das Problem gelöst, indem ich Homegear Direktzugriff zum gesamten Hostnetzwerk gegeben hab mittels --network host:

/usr/bin/docker run --rm --name homegear --network host -v /etc/homegear:/etc/homegear:Z -v /var/lib/homegear:/var/lib/homegear:Z -v /var/log/homegear:/var/log/homegear:Z -e TZ=Europe/Berlin -e HOST_USER_ID=homegear -e HOST_USER_GID=homegear homegear/homegear:stable
1 Like