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?
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.
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.
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.