Добрый день.
Есть электронный манометр с MODBUS от отечественного производителя Агава. Подключен ко второй линии MODBUS контроллера Wirenboard-6. Есть топик в каналах MQTT /devices/wb-modbus-1-0/controls/pressure
Значения отображаются корректно, как число с запятой. При запуске mosquitto_sub -C 1 -h ip -p 1883 -t “/devices/wb-modbus-1-0/controls/pressure” значение давления отображается корректно.
Как использовать это в правиле WBRULES. Мне нужно по достижению порогового значения открывать клапан (замыкать реле WB). Полагаю, что сенсор отдает значения не в таком формате как надо. Не по конвенции так сказать. Может кто знает, как решить проблему. Вот правило.
defineVirtualDevice("press_control", {
title: "Клапан КВД",
cells: {
SetPress: {
type: "range",
value: 3,
min: 2,
max: 5,
units: "Bar"
},
Hysteresis: {
type: "range",
value: 0.5,
min: 0.1,
max: 2.0,
step: 0.1,
units: "bar"
},
BarState: {
type: "switch",
value: false,
readonly: true
}
}
});
var SENSOR = "wb-modbus-1-0/controls/pressure";
var RELAY = "wb-mr6c_178/K5";
defineRule("press_control_rule", {
whenChanged: [SENSOR, "press_control/SetPress"],
then: function () {
var temp = dev[SENSOR];
var SetPress = dev["press_control/SetPress"];
var hyst = dev["press_control/Hysteresis"];
if (temp <= SetPress - hyst) {
// Закрываем клапан
dev[RELAY] = false;
dev["press_control/BarState"] = false;
} else if (temp >= SetPress + hyst) {
// Открываем клапан
dev[RELAY] = true;
dev["press_control/BarState"] = true;
}
}
});