Aus meiner node-red Installation setze ich die Schalter folgendermaßen:
var groups = global.get("heating_groups");
var pre = 'homegear/0/set/';
var post = '/1/STATE';
var hm_vars = global.get("homegear_global_vars");
groups.forEach(function(group){
var status = 0;
group.forEach(function(id){
device_id = id;
msg.group_id = global.get("heater_" + groups.indexOf(group));
global_sT = global.get(id + '_SET_TEMPERATURE');
global_cT = global.get(id + '_ACTUAL_TEMPERATURE');
global_VS = global.get(id + '_VALVE_STATE');
global_ur = global.get(id + '_UNREACH');
msg.topic = (pre + global.get("heater_" + groups.indexOf(group)) + post);
if(global_VS > 6 && global_ur !== true){
//msg.payload = 'true';
status = status + 1;
}
});
if(status > 0){
msg.payload = 'true';
} else {
msg.payload = 'false';
}
msg.info = status;
node.send(msg);
});
Also in homegear/0/set/3/1/STATE payload:true publishen. Ich denke dein Problem liegt einfach nur bei “value”. Ersetz das durch payload und es müsste funktionieren.
Also zumindest wenn es hier kein Schreibfehler ist, liegt das Problem wohl daran, dass die Variable STATE (GROSSgeschrieben und nicht state (kleingeschrieben) heißt. Folglich muss Du nach homegear/rpi/set/3/1/STATE publishen. Dann geht es auch mit { "value": true } oder einfach nur true als Payload.
du kannst einmal Loglevel 5 aktivieren und schauen, ob beim Setzen des Topics überhaupt etwas in Homegear ankommt. Poste hier mal den entsprechenden Logausschnitt.
Wenn ich Fantasiewerte schicke sehe ich es auch: 09/30/18 08:44:25.591 MQTT Client: Error in file MQTT/Mqtt.cpp line 632 in function void Mqtt::processPublish(std::vector<char>&): Tried to decode invalid number. Payload was: 62756D
sorry für die späte Antwort. Das sieht soweit eigentlich gut aus. Hast du noch die nächsten paar Logzeilen auf Loglevel 5 für mich? Der RPC-Server müsste eigentlich noch die an setValue übergebenen Parameter loggen. Funktioniert auf der Konsole folgendes: