Приветствую,
Как выяснилось, маппинги значений каналов не работают в wb-rules. Пришлось писать “костыль”:
var ventilationSupplySpeeds = [0, 1, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14];
var ventilationExhaustSpeeds = [0, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15];
var supplyDevice = "rcs350p_11/Supply fan speed";
var exhaustDevice = "rcs350p_11/Exhaust fan speed";
function getSpeed (speed_set, speed) {
log ("getSpeeed entry with {} {}".format(speed_set, speed))
var result = 0;
log(typeof(result));
for (var i in speed_set) {
if (speed_set[i] == speed) {
result = parseInt(i);
break;
}
}
log("returning {} {}".format(result, typeof(result)))
return result;
}
speedDevice = defineVirtualDevice("Ventilation speed", {
title: "Ventilation Speed",
cells: {
"Supply fan speed" : {
type: "value",
min: 0,
max: 11,
value: getSpeed(ventilationSupplySpeeds, dev[supplyDevice]),
forceDefault: true,
readonly: false
},
"Exhaust fan speed" : {
type: "value",
min: 0,
max: 11,
value: getSpeed(ventilationExhaustSpeeds, dev[exhaustDevice]),
forceDefault: true,
readonly: false
}
}
});
log(dev["Ventilation speed/Supply fan speed"]);
log(dev["Ventilation speed/Exhaust fan speed"]);
log(typeof(getSpeed(ventilationSupplySpeeds, dev[supplyDevice])));
log(typeof(getSpeed(ventilationExhaustSpeeds, dev[exhaustDevice])));
defineRule({
whenChanged: supplyDevice,
then: function(newValue) {
dev["Ventilation speed/Supply fan speed"] = getSpeed(ventilationSupplySpeeds, newValue);
}
});
defineRule({
whenChanged: exhaustDevice,
then: function(newValue) {
dev["Ventilation speed/Exhaust fan speed"] = getSpeed(ventilationExhaustSpeeds, newValue);
}
});
defineRule({
whenChanged: "Ventilation speed/Supply fan speed",
then: function(newValue) {
log("Ventilation speed: new Supply fan speed {}".format(newValue))
dev[supplyDevice] = ventilationSupplySpeeds[newValue];
}
});
defineRule({
whenChanged: "Ventilation speed/Exhaust fan speed",
then: function(newValue) {
log("Ventilation speed: new Exhaust fan speed {}".format(newValue))
dev[exhaustDevice] = ventilationExhaustSpeeds[newValue];
}
});
Как выяснилось в результате изысканий с анемометром, “рваные” значения скоростей относятся не только к притоку но и к оттоку тоже. Данный “костыль” создает виртуальное устройство и позволяет регулировать скорости притока и оттока в диапазоне от 0 до 11, проводя маппинг значений
Для интеграции в HA или для контроля собственной логикой работы вентмашины в MQTT появляются соответствующие топики (/devices/Ventilation speed/controls/Exhaust fan speed и /devices/Ventilation speed/controls/Supply fan speed)