NEWS
[Gelöst][Bug] HM-RPC 1.4.14 mit Homegear 0.7.12-1492 (latest stable)
-
Hallo,
ich benutze seit einiger Zeit iobroker und habe seit Jahren einen rpi mit Busware COC und homegear am laufen.
Da ich mir optische Fensterkontakte gekauft habe, musste ich die Homegear-Version seit Jahren mal wieder upgraden, weil es die optischen Kontakte zu diesem Zeitpunkt noch gar nicht gab.
Mit der uralten Version von Homegear lief iobroker auch sehr gut zusammen, aber mit der aktuellen Homegear Stable nicht.
Normalerweise habe ich bisher immer BIN-RPC verwendet, was grundsätlich historisch bei Homegear auch die bessere Wahl ist und bisher mit der alten Homegear Version auch funktionierte. Ich habe aber auch XML-RPC versucht und komme da zumindest zu Teilerfolgen, aber der Reihe nach …
iobroker hm-rpc: 1.4.14 (latest) Homegear: 0.7.12-1492 (latest stable)
<u>BIN-RPC</u>
Der Adapter startet, die ersten beiden Lampen sofort auf grün. Danach kurz alle drei Lampen auf grün. Danach nur noch die dritte Lampe auf grün.
Der Adapter ist in dieser Form nicht nutzbar. "ps -A | grep io" zeigt auch keinen laufenden hm-rpc Prozess.
<u>LOG mit BIN-RPC:</u>
! host.barney-nas 2018-01-14 11:37:58.854 error instance system.adapter.hm-rpc.0 terminated with code 6 (uncaught exception)
! hm-rpc.0 2018-01-14 11:37:58.845 info binrpc -> 192.168.178.32:12001 init ["xmlrpc_bin://192.168.178.39:12001",""]
! hm-rpc.0 2018-01-14 11:37:57.842 info binrpc -> 192.168.178.32:12001 init ["xmlrpc_bin://192.168.178.39:12001",""]
! hm-rpc.0 2018-01-14 11:37:57.841 error at TCP.onread (net.js:537:20)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Socket.Readable.push (_stream_readable.js:111:10)
! hm-rpc.0 2018-01-14 11:37:57.841 error at readableAddChunk (_stream_readable.js:153:18)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Socket.emit (events.js:169:7)
! hm-rpc.0 2018-01-14 11:37:57.841 error at emitOne (events.js:77:13)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Socket. (/opt/iobroker/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/server.js:50:38)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Object.Protocol.decodeRequest (/opt/iobroker/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/protocol.js:476:32)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Object.Protocol.decodeStrangeRequest (/opt/iobroker/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/protocol.js:441:9)
! hm-rpc.0 2018-01-14 11:37:57.841 error at rec (/opt/iobroker/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/protocol.js:432:32)
! hm-rpc.0 2018-01-14 11:37:57.841 error at Object.Protocol.decodeData (/opt/iobroker/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/protocol.js:371:81)
! hm-rpc.0 2018-01-14 11:37:57.841 error TypeError: Cannot read property 'toString' of null
! hm-rpc.0 2018-01-14 11:37:57.837 error uncaught exception: Cannot read property 'toString' of null
! hm-rpc.0 2018-01-14 11:37:57.334 info Connected
! hm-rpc.0 2018-01-14 11:37:57.111 info binrpc client is trying to connect to 192.168.178.32:12001 with ["xmlrpc_bin://192.168.178.39:12001","hm-rpc.0"]
! hm-rpc.0 2018-01-14 11:37:57.110 info binrpc server is trying to listen on 192.168.178.39:12001
! hm-rpc.0 2018-01-14 11:37:57.004 info starting. Version 1.4.14 in /opt/iobroker/node_modules/iobroker.hm-rpc, node: v4.8.0
! host.barney-nas 2018-01-14 11:37:56.344 info instance system.adapter.hm-rpc.0 started with pid 632
! host.barney-nas 2018-01-14 11:37:56.337 info object change system.adapter.hm-rpc.0
! iobroker 2018-01-14 11:37:41.685 info exit 0
! iobroker 2018-01-14 11:37:41.679 info Adapter "hm-rpc" updated<u>XML-RPC</u>
Umstellung von BIN-RPC auf XML-RPC lässt den Adapter sauber hochfahren. Alle Homematic-Komponenten lassen sich auch steuern, aber es kommt zu Fehlermeldungen, dass Geräte angeblich nicht antworten würden. Die Fehlermeldungen kommen vor allem (ausschließlich) bei Steuerung über Javascript. Beim Steuern über "Objects"-Tab meine ich das auch einmal gehabt zu haben, aber das funktioniert in der Regel ohne Fehler.
Die Skripte sind unverändert gegenüber der früheren Konstellation mit uraltem Homegear, wo sie ohne Fehlermeldung (allerdings über BIN-RPC) liefen.
Im Fehlerfall führt dies nicht nur zu Fehlern im iobroker, sondern auch zu Systemmeldungen in Homegear "Gerätekommunikation aktuell gestört" bzw. "Gerätekommunikation war gestört". Manchmal auch allgmein "Kommunikationsstörung". Die Befehle werden aber auch im Feherfall alle korrekt ausgeführt und die Thermostate etc. auf die gewünschte Temperatur gesetzt.
<u>LOG (fehlerfrei) beim Adapter-Start:</u>
! hm-rpc.0 2018-01-14 11:54:47.823 info xmlrpc -> 53 devices
! hm-rpc.0 2018-01-14 11:54:47.815 info xmlrpc <- listDevices ["hm-rpc.0"]
! hm-rpc.0 2018-01-14 11:54:47.802 info xmlrpc <- system.listMethods []
! hm-rpc.0 2018-01-14 11:54:47.324 info Connected
! hm-rpc.0 2018-01-14 11:54:47.270 info xmlrpc client is trying to connect to 192.168.178.32:12001 with ["http://192.168.178.39:12001","hm-rpc.0"]
! hm-rpc.0 2018-01-14 11:54:47.269 info xmlrpc server is trying to listen on 192.168.178.39:12001
! hm-rpc.0 2018-01-14 11:54:47.147 info starting. Version 1.4.14 in /opt/iobroker/node_modules/iobroker.hm-rpc, node: v4.8.0
! host.barney-nas 2018-01-14 11:54:46.493 info instance system.adapter.hm-rpc.0 started with pid 684
! host.barney-nas 2018-01-14 11:54:46.487 info object change system.adapter.hm-rpc.0<u>LOG (Fehler) bei Skript-Ausführung:</u>
! hm-rpc.0 2018-01-14 13:07:42.623 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 13:07:42.623 error xmlrpc -> setValue ["4","SET_TEMPERATURE",21] FLOAT
! hm-rpc.0 2018-01-14 13:07:42.623 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 13:07:42.623 error xmlrpc -> setValue ["4","SET_TEMPERATURE",6] FLOAT
! hm-rpc.0 2018-01-14 13:07:42.607 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 13:07:42.606 error xmlrpc -> setValue ["4","SET_TEMPERATURE",21] FLOATIch habe noch HM-CFG-LAN Software hier installiert und kann fehlerfrei auf Homegear zugreifen. (geht über XML-RPC)
Ich habe auch mit der neuen Homegear-Installation schon erfolgreich ein Firmware-Update auf das Wandthermostat gemacht.
Ich habe testweise OpenHAB mit Homematic-Binding getestet (BIN-RPC) und es funktioniert fehlerfrei.
-
Weil ich beim Fehler der XML-RPC Variante irgendwie den Datentyp unter Verdacht habe, habe ich eben mal versucht die Skripte dahingehend zu ändern, dass die Temperaturen als String und nicht als Float gesetzt werden. (Ich weiß, dass float richtig wäre und meine Skripte sind eigentlich auch dahingehend. Es dient nur der Fehlereingrenzung.)
LOG:
! hm-rpc.0 2018-01-14 12:42:14.912 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 12:42:14.912 error xmlrpc -> setValue ["2","SET_TEMPERATURE","21.0"] FLOAT
! hm-rpc.0 2018-01-14 12:42:14.909 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 12:42:14.908 error xmlrpc -> setValue ["4","SET_TEMPERATURE","6.0"] FLOAT
! hm-rpc.0 2018-01-14 12:42:14.904 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 12:42:14.903 error xmlrpc -> setValue ["4","SET_TEMPERATURE","21.0"] FLOAT
! hm-rpc.0 2018-01-14 12:42:14.874 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 12:42:14.873 error xmlrpc -> setValue ["4","SET_TEMPERATURE","21.0"] FLOAT
! javascript.0 2018-01-14 12:42:12.294 warn at Object. (script.js.common.Anwesenheit.Fabi:12:3)
! javascript.0 2018-01-14 12:42:12.294 warn at callControlHeizung (script.js.common.Anwesenheit.Fabi:5:5)
! javascript.0 2018-01-14 12:42:12.293 warn at ctrlHeizungAll (script.js.common.Anwesenheit.Fabi:-224:5)
! javascript.0 2018-01-14 12:42:12.293 warn at ctrlHeizungWohnzimmer (script.js.common.Anwesenheit.Fabi:-121:9)
! javascript.0 2018-01-14 12:42:12.292 warn Wrong type of hm-rpc.0.LEQ0598095.2.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
! javascript.0 2018-01-14 12:42:12.291 warn at Object. (script.js.common.Anwesenheit.Fabi:12:3)
! javascript.0 2018-01-14 12:42:12.291 warn at callControlHeizung (script.js.common.Anwesenheit.Fabi:5:5)
! javascript.0 2018-01-14 12:42:12.291 warn at ctrlHeizungAll (script.js.common.Anwesenheit.Fabi:-225:5)
! javascript.0 2018-01-14 12:42:12.290 warn at ctrlHeizungTrulla (script.js.common.Anwesenheit.Fabi:-175:9)
! javascript.0 2018-01-14 12:42:12.287 warn Wrong type of hm-rpc.0.KEQ0724950.4.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
! javascript.0 2018-01-14 12:42:12.282 warn at Object. (script.js.common.Anwesenheit.Fabi:12:3)
! javascript.0 2018-01-14 12:42:12.282 warn at callControlHeizung (script.js.common.Anwesenheit.Fabi:5:5)
! javascript.0 2018-01-14 12:42:12.282 warn at ctrlHeizungAll (script.js.common.Anwesenheit.Fabi:-226:5)
! javascript.0 2018-01-14 12:42:12.282 warn at ctrlHeizungSchlafzimmer (script.js.common.Anwesenheit.Fabi:-61:5)
! javascript.0 2018-01-14 12:42:12.279 warn Wrong type of hm-rpc.0.KEQ0730154.4.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.
! javascript.0 2018-01-14 12:42:12.277 warn at Object. (script.js.common.Anwesenheit.Fabi:12:3)
! javascript.0 2018-01-14 12:42:12.277 warn at callControlHeizung (script.js.common.Anwesenheit.Fabi:5:5)
! javascript.0 2018-01-14 12:42:12.277 warn at ctrlHeizungAll (script.js.common.Anwesenheit.Fabi:-227:5)
! javascript.0 2018-01-14 12:42:12.277 warn at ctrlHeizungBuero (script.js.common.Anwesenheit.Fabi:-25:5)
! javascript.0 2018-01-14 12:42:12.268 warn Wrong type of hm-rpc.0.KEQ0724657.4.SET_TEMPERATURE: "string". Please fix, while deprecated and will not work in next versions.Was bedeutet das "FLOAT" in````
xmlrpc -> setValue ["2","SET_TEMPERATURE","21.0"] FLOATKann man ihn testweise zwingen das als String abzusetzen?
-
XML-RPC-Fehler kommt auch beim Setzen mittels Alexa über den Cloud-Adapter:
! hm-rpc.0 2018-01-14 14:17:36.589 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 14:17:36.588 error xmlrpc -> setValue ["2","SET_TEMPERATURE",23] FLOATBefehle werden aber immer korrekt ausgeführt.
-
XML-RPC-Fehler kommt auch bei boolschen Werten:
! hm-rpc.0 2018-01-14 13:20:00.227 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 13:20:00.227 error xmlrpc -> setValue ["4","BOOST_MODE",true] ACTION
! hm-rpc.0 2018-01-14 13:20:00.224 error Error: XML-RPC fault: No answer from device.
! hm-rpc.0 2018-01-14 13:20:00.224 error xmlrpc -> setValue ["4","BOOST_MODE",true] ACTIONgetestet via Alexa + cloud adapter
Befehl abermals ausgeführt, allerdings mehrmals, obwohl nur einmal ausgelöst.
Er ist auch mehrmals bei den Thermostaten angekommen, denn der "Boost Countdown" sprang mehrfach wieder auf die 300 Sekunden hoch und zählte dann irgendwann runter.
-
Auffällig ist auch, dass Befehle über Alexa merhmals ausgeführt werden.
Ich sehe das besonders deutlich, wenn ich den Heizungsboost einschalte, weil dann am Thermostat ein Counter runterzählt.
Wenn ich den Boost über Alexa starte, dann wird der aber mehrmals hintereinander wieder hochgesetzt, also:
300, 299, 300, 299, 300, 299, 300, 299, 300, 299, 298, 297, 296, …
Das war auf jeden Fall mal anders, aber wie gesagt da hatte ich die Uralt-Version von Homegear und Anbindung über BIN-RPC und nicht XML-RPC wie jetzt.
Wenn ich den Boost am selben Thermostat über den Objects-Tab ausführe, dann passiert das nicht, also ganz normal:
300, 299, 298, 297, 296, ...
Ich glaube meine Geräte stoßen durch das permanente Merhfachsenden auch an den Duty Cycle, was die fehlenden Antworten von oben erklären würde.
Eventuell gibt's auch einen Zusammenhang mit dem Cloud-Problem? Weil soweit ich das sehe benutzen (fast?) alle wegen zu vieler Requests geblockten User den Homematic-Adapter.
-
Ich habe den BIN-RPC Modus wieder zum Laufen gebracht und dieser funktioniert auch dann ohne die beim XML-RPC Modus beschriebenen Probleme.
Folgende Zeile aus Datei````
/node_modules/iobroker.hm-rpc/node_modules/binrpc/lib/protocol.js:371console.log("<-- binrpc error: unknow data type " + res.dataType.toString(16) + " :(");
<u>res</u> ist null in diesem Fall. Ich habe die Zeile mit der Logausgabe auskommentiert und alles flutscht. Vermutlich hat der XML-Modus genau mit diesen Fällen auch ein Problem und bringt die "Error: XML-RPC fault: No answer from device." Meldungen. Falls gewünscht bringe ich noch den Inhalt des "data"-Parameters in Erfahrung, bei dem das daraus resultierende "res" null ist.