NEWS
hm-rpc mit Homegear: Keine Werte in Objekten
-
Hallo,
ich möchte meine Homegear installation an io-broker anbinden. Leider bekomme ich weder in den Objekten noch in Visualisierungen Werte angezeigt. Bei den Objekten steht z.B.
HUMIDITY (null)%
An der Verbindung kann es nicht liegen. Im Debug Log sind die richtigen Werte zu sehen. Ich weiß jedoch nicht, was "undefined discarded, no matching device" in dem Zusammenhang bedeutet. Ich bekomme alle Devices unter Objekte angezeigt.
Hat jemand eine Idee, welche Einstellung fehlt?
Torsten2023-12-29 21:40:21.739 - info: hm-rpc.0 (418116) xmlrpc -> 92 devices 2023-12-29 21:40:23.489 - debug: hm-rpc.0 (418116) xml multicall : LEQ1283812:0,RSSI_DEVICE,-84 2023-12-29 21:40:23.491 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1283812:0","RSSI_DEVICE",-84] 2023-12-29 21:40:23.492 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.RSSI_DEVICE.-84:undefined discarded, no matching device 2023-12-29 21:40:23.509 - debug: hm-rpc.0 (418116) xml multicall : LEQ1283812:0,LOWBAT,false 2023-12-29 21:40:23.512 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1283812:0","LOWBAT",false] 2023-12-29 21:40:23.514 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.LOWBAT.false:undefined discarded, no matching device 2023-12-29 21:40:23.545 - debug: hm-rpc.0 (418116) xml multicall : LEQ1283812:1,HUMIDITY,57 2023-12-29 21:40:23.546 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1283812:1","HUMIDITY",57] 2023-12-29 21:40:23.547 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.HUMIDITY.57:undefined discarded, no matching device 2023-12-29 21:40:23.548 - debug: hm-rpc.0 (418116) xml multicall : LEQ1283812:1,TEMPERATURE,22.1 2023-12-29 21:40:23.549 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1283812:1","TEMPERATURE",22.1] 2023-12-29 21:40:23.550 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.TEMPERATURE.22.1:undefined discarded, no matching device 2023-12-29 21:40:28.843 - debug: hm-rpc.0 (418116) xml multicall : LEQ1463969:0,RSSI_DEVICE,-63 2023-12-29 21:40:28.844 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1463969:0","RSSI_DEVICE",-63] 2023-12-29 21:40:28.845 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.RSSI_DEVICE.-63:undefined discarded, no matching device 2023-12-29 21:40:28.869 - debug: hm-rpc.0 (418116) xml multicall : LEQ1463969:2,ACTUAL_HUMIDITY,59 2023-12-29 21:40:28.869 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1463969:2","ACTUAL_HUMIDITY",59] 2023-12-29 21:40:28.870 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.ACTUAL_HUMIDITY.59:undefined discarded, no matching device 2023-12-29 21:40:28.871 - debug: hm-rpc.0 (418116) xml multicall : LEQ1463969:2,ACTUAL_TEMPERATURE,21.5 2023-12-29 21:40:28.871 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1463969:2","ACTUAL_TEMPERATURE",21.5] 2023-12-29 21:40:28.872 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.ACTUAL_TEMPERATURE.21.5:undefined discarded, no matching device 2023-12-29 21:40:28.873 - debug: hm-rpc.0 (418116) xml multicall : LEQ1463969:2,SET_TEMPERATURE,21 2023-12-29 21:40:28.874 - debug: hm-rpc.0 (418116) xmlrpc <- event ["LEQ1463969:2","SET_TEMPERATURE",21] 2023-12-29 21:40:28.874 - debug: hm-rpc.0 (418116) xmlrpc <- event: hm-rpc.0.SET_TEMPERATURE.21:undefined discarded, no matching device
-
Nach einigen Änderung in main.js funktioniert es. Anscheinend schickt mein Homegear einen Parameter weniger???
--- main.js.orig 2023-12-30 22:40:01.548975143 +0100 +++ /opt/iobroker/node_modules/iobroker.hm-rpc/build/main.js 2023-12-30 23:32:20.779209862 +0100 @@ -84,31 +84,32 @@ this.log.debug(`${this.config.type}rpc <- event ${JSON.stringify(params)}`); let val; // CUxD ignores all prefixes!! - if (params[0] === 'CUxD' || !params[0].includes(this.name)) { - params[0] = this.namespace; - } - const channel = params[1].replace(':', '.').replace(tools.FORBIDDEN_CHARS, '_'); + //if (params[0] === 'CUxD' || !params[0].includes(this.name)) { + // params[0] = this.namespace; + //} + const channel = params[0].replace(':', '.').replace(tools.FORBIDDEN_CHARS, '_'); if (params[0] === clientId) { // convert back our clientId to our namespace params[0] = this.namespace; } - const name = `${params[0]}.${channel}.${params[2]}`; + const name = `${this.namespace}.${channel}.${params[1]}`; + if (this.dpTypes[name]) { if (this.dpTypes[name].UNIT === '100%') { - val = Math.round(params[3] * 1000) / 10; + val = Math.round(params[2] * 1000) / 10; } else { - val = params[3]; + val = params[2]; } } else { // for every device we know (listDevices), there will be a dpType, so this way we filter out stuff like PONG event and https://github.com/ioBroker/ioBroker.hm-rpc/issues/298 - this.log.debug(`${this.config.type}rpc <- event: ${name}:${params[3]} discarded, no matching device`); + this.log.debug(`${this.config.type}rpc <- event: ${name}:${params[2]} discarded, no matching device`); return ''; } val = tools.fixEvent({ val, dpType: this.dpTypes[name] }); this.log.debug(`${name} ==> UNIT: "${this.dpTypes[name] ? this.dpTypes[name].UNIT : 'none'}" (min: ${this.dpTypes[name] ? this.dpTypes[name].MIN : 'none'}, max: ${this.dpTypes[name] ? this.dpTypes[name].MAX : 'none'}) From "${params[3]}" => "${val}"`); - this.setState(`${channel}.${params[2]}`, { val: val, ack: true }); + this.setState(`${name}`, { val: val, ack: true }); // unfortunately this is necessary return ''; } @@ -1643,4 +1644,4 @@ // otherwise start the instance directly (() => new HomematicRpc())(); }