- Оборудование.
Контроллер Wiren Board 7
Batch No
7.3.3C/1 645
Current uptime
0d 0h 31m
DTS Version
733
HW Revision
7.3.3
Manufacturing Date
2022-10-12 08:51:13
Release name
wb-2304
Release suite
stable
Short SN
A2NESPD2
Temperature Grade
industrial
Модуль WB MAI6
Датчик ОВЕН ПВТ110-Н4.А (температура + влажность 4…20мА)
-
Стороннее ПО не использую. Но на WB установлен Light server GoodWAN (для приема показаний с беспроводных датчиков).
-
С датчика ОВЕН получаю значения температуры и влажности (вижу их в WB).
-
Написал правило js, требуется по значению температуры/влажности включать/отключать устройства.
-
Проблема. Значение температуры и влажности в правило js не передаются.
-
Можно воспроизвести сколь угодно раз.
-
Конфигурация минимальна, лишнего нет.
-
Добавил скрины и лог.
Правило JS
defineVirtualDevice('Vent', {
title: 'Вентустановка',
cells: {
mode: {//режим 0-ручной 1-автомат
title: 'Режим АВТ',
type: 'switch',
value: false,
},
settemp: {//уставка
title: 'Уставка температуры',
type: 'range',
value: 25,
min: 0,
max: 40
},
sethim: {//уставка
title: 'Уставка влажности',
type: 'range',
value: 60,
min: 0,
max: 80
},
controltemp: {
title: 'Температура',
type: 'value',
units: 'deg C',
value: 0
},
controlhim: {
title: 'Влажность',
type: 'value',
units: '%',
value: 0
},
hysttemp: {
title: 'Гистерезис температуры',
type: 'range',
value: 0.5,
min: 0,
max: 5
},
hysthim: {
title: 'Гистерезис влажности',
type: 'range',
value: 0.5,
min: 0,
max: 5
},
}
})
defineRule('ruleventtemp', { //правило для температуры
whenChanged: 'wb-mai6_55/IN 6 P Value', //тип правила (при изменении значения с датчика температуры, отобразить его в контроле, отобразить в логе)
then: function (newValue, devName, cellName) {
dev['Vent/controltemp'] = newValue;
log('Изменилось значение температуры с датчика = {}', newValue);
},
whenChanged: ['Vent/controltemp', 'Vent/settemp', 'Vent/mode', 'Vent/hysttemp'], //тип правила (при изменении значения от датчика, уставки, режима работы, запускаем алгоритм включения/отключения вентилятора)
then: function () { //при изменении есть функция
log('Изменилось значение Vent/controltemp, Vent/settemp, Vent/mode, Vent/hysttemp');
if (dev['Vent/mode'] == true) {
if ( dev['Vent/controltemp'] > dev['Vent/settemp'] + dev['Vent/hysttemp']) { //если температура датчика ,больше уставки + гистерезис
dev["wb-modbus-1-0/START"] = true;
dev['wb-modbus-1-0/SETPOINT'] = 500;
dev['wb-dac/EXT3_O5'] = 10000;
}
if (dev['Vent/controltemp'] < dev['Vent/settemp'] - dev['Vent/hysttemp']) { //если температура датчика меньше уставки - гистерезис
dev['wb-modbus-1-0/START'] = false;
dev['wb-modbus-1-0/SETPOINT'] = 200;
dev['wb-dac/EXT3_O5'] = 0;
}
}
else dev['wb-modbus-1-0/START'] = false;
dev['wb-modbus-1-0/SETPOINT'] = 200;
dev['wb-dac/EXT3_O5'] = 0;
}
});
defineRule('ruleventhim', { //правило для влажности
whenChanged: 'wb-mai6_55/IN 6 N Value', //тип правила (при изменении значения с датчика ВЛАЖНОСТИ, отобразить его в контроле, отобразить в логе)
then: function (newValue, devName, cellName) {
dev['Vent/controlhim'] = newValue;
log('Изменилось значение температуры с датчика = {}', newValue);
},
whenChanged: ['Vent/controlhim', 'Vent/sethim', 'Vent/mode', 'Vent/hystvent'], //тип правила (при изменении значения от датчика, уставки, режима работы, запускаем алгоритм включения/отключения вентилятора)
then: function () { //при изменении есть функция
log('Изменилось значение Vent/controlhim, Vent/sethim, Vent/mode, Vent/hysthim');
if (dev['Vent/mode'] == true) {
if ( dev['Vent/controlhim'] > dev['Vent/sethim'] + dev['Vent/hysthim']) { //если влажность с датчика больше уставки + гистерезис
dev['wb-modbus-1-0/START'] = true;
dev['wb-modbus-1-0/SETPOINT'] = 300;
dev['wb-dac/EXT3_O5'] = 10000;
}
if (dev['Vent/controlhim'] < dev['Vent/sethim'] - dev['Vent/hysthim']) { //если влажность с датчика меньше уставки - гистерезис
dev['wb-modbus-1-0/START'] = false;
dev['wb-modbus-1-0/SETPOINT'] = 200;
dev['wb-dac/EXT3_O5'] = 0;
}
}
else dev['wb-modbus-1-0/START'] = false;
dev['wb-modbus-1-0/SETPOINT'] = 200;
dev['wb-dac/EXT3_O5'] = 0;
}
});
wb-rules_20230821T120230.log (266,9 КБ)
Правило Mod1.txt (4,8 КБ)