Hallo,
nachdem bumaas (Burkhard) mir geholfen hatte die neue V 4.3 xmlrpc komplett in IPS zu integrieren stellte ich fest, dass ich keine Temperaturen mit xx.5 Grad aufrufen und setzen konnte. Meine Vermutung war, dass dies mit der neuen xmlrpc zu tun hat, was aber nicht der Fall ist.
Betroffen sind die Varianten der hmxml. Burkhard war aufgefallen, dass an diversen Stellen sich diese Befehle für die double, int und boolean Werte befinden:
$params = array($param => new xmlrpcval("$value", "double"));
Dies führt dazu, dass letztendlich der float Wert als String übergeben wird. Da dieser nun in php 7 als z. B. „20,5“ übergeben wird, wurde der Wert nicht korrekt gesetzt. Im CCU Log bekam man auch eine Fehlermeldung. Unter php 5 wurde zwar auch fälschlicherweise der float Wert als String übergeben allerdings mit dem Inhalt „20.5“ was dann zum korrekten Setzen der Temperatur führte.
Hier zur Anschauung die Dumps bei php 7 direkt in der hmxml:
array(1) {
["MANU_MODE"]=>
object(xmlrpcval)#8 (3) {
["me"]=>
array(1) {
["double"]=>
string(4) "21,5"
}
["mytype"]=>
int(1)
["_php_class"]=>
NULL
}
}
Ersetzt man die Befehle durch
$params = array($param => new xmlrpcval($value, "double"));
sieht es so aus und es wird eine korrekte Float Variable übergeben:
array(1) {
["MANU_MODE"]=>
object(xmlrpcval)#589 (3) {
["me"]=>
array(1) {
["double"]=>
float(21,5)
}
["mytype"]=>
int(1)
["_php_class"]=>
NULL
}
}
Noch ein Hinweis auf HMXML_getParamSetDesc. Dieser Aufruf liefert bei Heizungs- und Wandthermostaten - nicht jedoch bei Heizungsgruppen - in der alten 3.0 xmlrpc den folgenden Fehler:
Warning: mb_convert_encoding(): Illegal character encoding specified in C:\IP-Symcon\scripts\xmlrpc.inc.php on line 2614
Dieser Fehler besteht auch noch in der neuen 4.3 xmlrpc nur das der Fehlertext nun
Error: HMXML_send() Request to BidCos-Service failed (192.168.178.35) -> Invalid return payload: enable debugging to examine incoming payload (XML error: Invalid character at line 3, column 68935)
lautet.
Burkhard hat im HM Forum bereits eine Anfrage gestellt XML-RPC Response mit ungültigem Zeichen? • HomeMatic-Forum / FHZ-Forum.
Nun noch kurz zur neuen 4.3 xmlrpc. Diese kann man hier https://github.com/gggeek/phpxmlrpc/releases/tag/4.3.0 herunterladen. Danach in das scripts Verzeichnis von IP-Symcon entpacken und in den Skripten die Verweise auf die alte xmlrpc.inc zu ersetzen:
z.B.
require „./xmlrpc.inc.php“ ;
durch
require „./phpxmlrpc-4.3.0/lib/xmlrpc.inc“;
Gruß
Hans