WebSocket Events

Hi,

ich habe ein plugin fuer pimatic erstellt, welches ueber Websockets sich zu homegear verbindet.
Dafuer habe ich RXJS mit Observable.webSocket verwendet, das funktioniert auch super.

Schalten von PowerSwitches funktioniert.

Leider bekomme ich es irgendwie nicht hin mit subscribePeers auch events zu erhalten.
Ich habe einen ‘server’ socket und einen ‘client’ socket.

Auf dem Server socket sende ich
{“method”:“subscribePeers”,“params”:[“12851c2f-3fd9-4d61-85c1-afe983705ee2”,[6,5,4,7]],“id”:2208782,“jsonrpc”:“2.0”}
Dabei ist der erste Parameter die websocket id ("ws://host:port/websocketId), diese ist bei ‘server’ und ‘client’ socket dieselbe.

Es komtm auch ein Antwort
{“id”:2208782,“jsonrpc”:“2.0”,“result”:null}

Aber irgendwie erhalte ich keine Event Notifications … hmm

Ich sende 4 mal ‘subscribePeers’ mit verschiedenen id’s … komischerweise erhalte ich aber nur 2 mal einen Response?

Plugin: https://pastebin.com/Mu5dCkiD
Log: https://pastebin.com/Pix4h0jX

Hallo @pheinrich,

poste mal das Homegear-Log auf Debuglevel 5 dazu (vom subscribePeers und von einem Ereignis). Vielleicht gibt das Aufschluss darüber, was da schief läuft.

Viele Grüße

Sathya

Ich habe noch kurz ein Minimal Beispiel mit nodejs erstellt.

Wenn ich subscribePeers auf dem serverSocket schicke sehe ich im homegear log, dass die RPC method verarbeitet wird. Allerdings habe ich im HomegearWS.js gesehen dass das eigentlich auf dem clientSocket passieren soll, dann passiert aber nichts (kein error, kein response, kein log).

Das einzige was ich auf dem clientSocket erhalte ist
Received Message (Client): {“id”:1,“jsonrpc”:“2.0”,“method”:“event”,“params”:["",7,0,“RSSI_DEVICE”,-44]}

auth steht ueberall auf ‘none’

peerId 7 ist eine Homematik Steckdose welche auch aktiv ist und ich mit getValue bzw setValue auch steuern kann.

Hier des Minimal Script: https://pastebin.com/61dSnWjQ
Hier das Log mit Level 5: https://pastebin.com/dXRMd7hT

Hey @pheinrich,

das sieht doch schon einmal gar nicht schlecht aus. Da es sich bei den Aufrufen um RPC-Funktionen handelt, wird immer eine Antwort erwartet (als Beispiel in HomegearWS: https://github.com/Homegear/HomegearWS/blob/master/homegear-ws-0.0.1.js#L125). Deswegen passiert nach dem ersten Ereignis nichts mehr. Sende eine leere Antwort, dann sollte es eigentlich klappen.

Viele Grüße

Sathya

Hey @pheinrich,

hier dein Beispiel funktionierend:

https://pastebin.com/5MV4vk7L

Viele Grüße

Sathya

Haha cool das war einfach :smiley:

Vielen Dank @sathya