Как в правиле wb-rules использовать значение от сенсора не от WirenBoard

Добрый день.

Есть электронный манометр с 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;

    }

  }

});


Добрый день.

Проверьте пожалуйта.
Например после

выведите в лог значение переменной и тип этого значения.

Вот значение переменной

[rule info] Pressure= TypeError: [[DefaultValue]] coerce failed

А как проверить ее тип, не могу понять.

log(“Тип переменной - “, typeof (dev[SENSOR] ) );
см, например - https://learn.javascript.ru/types-intro#type-typeof

Ну и определение самого устройства, топика - неверно, “controls” - явно лишнее.
Вот тут про это.
То есть - уберите его.

INFO: [rule info] Pressure= null
INFO: [rule info] Тип переменной - object

Пробовал без control все равно не работает, null значение. Но у прибора два топика в MQTT каналах видно и значения в вице чисел вижу в каналах MQTT в вебке WB.

Устройство/Контрол

wb-modbus-1-0/pressure

MQTT топик

/devices/wb-modbus-1-0/controls/pressure

Устройства/Контрол
wb-modbus-1-0/pressure_percent

MQTT топик

/devices/wb-modbus-1-0/controls/pressure_percent

ЗАРАБОТАЛО.

INFO: [rule info] Pressure= 2.73
INFO: [rule info] Тип переменной - number

похоже слеш был лишний в начале еще. Убрал controls в этом дело было, действительно.

Всем большое спасибо.