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.
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
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.
genau, meine Empfehlung wäre jetzt auch MQTT gewesen . 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).
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