Node-Red-Anbindung & JSON-RPC

Hi,
ich versuche gerade Homegear mit Node-RED (http://nodered.org) zu verheiraten.
In der Bibliothek der verfügbaren Node-Plugins gibt es dazu https://github.com/firsttris/node-red-contrib-homematic,
welches aber JSON-RPC nutzt (ja, es wird irgendwann, eventuell eine Version mit XML-RPC geben…).

Da die aktuellen Snapshots von Version 0.6 ja auch schon seit einiger Zeit JSON-RPC können hatte ich gehofft die Anbindung damit zu schaffen. Allerdings bin ich mir nicht sicher ob die Requests passen bzw. wie ich sie richtig an Homegear schicke.

Bisher getestet:
http-get an localhost:2001/ (test mit curl und via node-red http)

Request:
GET / HTTP/1.1
Content-Type: application/json

{ "method": "Interface.getValue", "params": { "interface": "BidCos-RF", "address": "LEQxxxxxxx", "valueKey": "ACTUAL_TEMPERATURE" } }

Response:
Die RPC Willkommens-Seite als HTML..

telnet direkt an localhost 2001

Request:
{ "method": "Interface.getValue", "params": { "interface": "BidCos-RF", "address": "LEQxxxxxxx", "valueKey": "ACTUAL_TEMPERATURE" } }

Response:
-- keiner -- Homegear macht die Verbindung zu und schreibt dann im Error log:

Error: Uninterpretable packet received. Closing connection. Packet was: {"method":"Interface.getValue","params":{"interface":"bidCos-RF","address":"LEQxxxxxxx","valueKey":"ACTUAL_TEMPERATURE"}}

Ich verwende im wesentlichen die Default-Konfiguration, auf 2001 wird also keine Anmeldung oder ähnliches erwartet.

Jede Hilfe wäre echt klasse!

OK, mir selbst antworten ist auch komisch aber naja…

Das Thema hat sich zu “Reines Interesse” reduziert - ich habe die wunderbare MQTT Anbindung von Homegear 0.6 entdeckt :smiley:
MQTT kann Node-Red auch nativ und einfache dinge wie Setzen eines wertes werden ja sogar als Shortcut unterstützt.

Ich bin natürlich nach wie vor für jede Antwort dankbar die mir bei meinem originalen Problem (JSON-RPC) hilft.

Hallo,

genau, meine Empfehlung wäre jetzt auch MQTT gewesen :wink:. Aber hier mal ein JSON-RPC-Beispiel aus der HomegearWS-Konsolenausgabe:

Invoking RPC method: {"jsonrpc":"2.0","method":"getValue","id":5,"params":[74,2,"VOLUME"]} homegear-ws-0.0.1.js:308:3
Invoking RPC method: {"jsonrpc":"2.0","method":"getValue","id":9,"params":[74,2,"CURRENT_PLAY_MODE"]} homegear-ws-0.0.1.js:308:3
Response to id 5 received: {"id":5,"jsonrpc":"2.0","result":29} homegear-ws-0.0.1.js:176:4
Response to id 9 received: {"id":9,"jsonrpc":"2.0","result":1}

Die ID ist eine von dir gewählte Zahl, welche dem Antwortpaket wieder angehängt wird, um dieses zuordnen zu können. Unter “method” können sämtliche RPC-Methoden aufgerufen werden, “params” ist ein Array der Parameter. Der Request muss als POST übertragen werden und möglicherweise muss “Content-Type: application/json” sein (bin mir gerade nicht sicher).

Hier ein Curl-Beispiel:

Viele Grüße und guten Rutsch

Sathya

Danke für die Antwort :slight_smile:

Mittlerweile habe ich mir auch dank Wikipedia ein Bild über den Aufbau einer JSON-RPC Meldung gemacht.

Und wie das halt so ist wenn man nicht das findet was man sucht macht man es halt selber: https://github.com/shirk/node-red-contrib-homegear-mqtt

Läuft spitze mit HomeGear 0.6 via MQTT & JSON-RPC.
Mir fehlen zwar noch die Specs für MAX! / Insteon und Hue aber ich möchte ja auch 2016 noch was zum basteln haben :wink:

Ebenfalls guten Rutsch!

Hey,

das ist ja richtig genial :slight_smile:. Werde ich gleich mal ausprobieren! Wenn du an irgendeiner Stelle Hilfe brauchst, sag bescheid. Am besten per Mail.

Viele Grüße

Sathya

Nachtrag: Hab dein Projekt mal auf die Downloadseite gepackt :wink:.