@manuel001 sagte in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:
@socke Ich habe das Script eingebaut und für den einen Parameter der mich interessiert, angepasst.
Allerding dürfte ich dabei einen oder mehrere Fehler gemacht haben:
/**
* This script reads data from a hautec heater Keba controller.
* www.hautec.eu
*/
const request = require('request');
const heizung_host = '192.168.1.101';
const urlOfHeatpump = 'http://' + heizung_host + '/var/readWriteVars';
//const jsondata = [{"name":"APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"}];
// all values I want to receive
const jsonRequest = [
{"name":"APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled"},
];
const jsonAsString = JSON.stringify(jsonRequest);
// create all the states in broker
createState('javascript.'+instance+'.Heizung.Verdichter', 0, {type: 'number', role: 'value', unit: '%'});
// every minute read the data from the heater and save it
schedule("* * * * *", function() {
request.post({
url: urlOfHeatpump,
form: jsonAsString
}, function(error, response, body) {
if (error) log(error, 'error');
if (body) {
//log(body);
var responseBody = JSON.parse(body);
setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody[1].value));
}
});
});
Welche Nummer gehört in die Eckige Klammer nach responseBody?
(bin kein Programmierer)
Es liegt lediglich an der "1" in folgender Zeile
setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody**[1]**.value));
Einfach ändern auf
setState('javascript.'+instance+'.Heizung.Verdichter', parseFloat(responseBody**[0]**.value));
Hintergrund: Die abgefragten Werte (bei dir nur ein Wert) geben ein Array zurück. Hierbei ist der erste Eintrag immer mit 0 indexiert, der zweite mit 1, der dritte mit 2 , usw usw