Wb-mai2-mini и датчики давления в системе отопления

Добрый день.
Подключил датчик давления ОВЕН 4-20 мА к wb-mai2-mini. Все отлично. Ток показывает.
Хочу перевести показания из mA в bar. Для этого показания в мА необходимо разделить на 4 и отнять единичку. И эти показания хочу выводить в веб.
Вот код:
//Перевод показаний датчика давления из mA в bar(Мпа).
defineVirtualDevice(“HeatPress”, { // Создаем виртуальный девайс для отображения в веб интерфейсе.
title: “Текущее давление в системе отопления”,
cells: {
HeatPressVol: {
type: “value”,
value: dev[“HeatPress/HeatPressVol”]
},
}
});

defineRule(“HeatPressVol”, {
whenChanged: “wb-mai2-mini_53/Current input 1”,
then: function(newValue, devName, cellName) {
if(newValue){
// dev[“HeatPress/HeatPressVol”] = dev [“wb-mai2-mini_53/Current input 1”]/4-1;
dev[“HeatPress/HeatPressVol”] = parseInt(newValue)/4-1;
}
}
});
Однако виртуалдевайс все время отображается как 0. Не пойму, что делаю не так.
Пробовал два варианта (один из которых сейчас закоментирован. Не отрабатывает.
Спасибо.

попробуй явно указать, что тебе нужно “дробное” деление

dev [“wb-mai2-mini_53/Current input 1”]/4.0-1

Добрый день.
К сожалению на помогло.
Снимок экрана 2023-05-03 в 09.45.19

А зачем здесь parseInt и if(newValue)?

Вот так - будет работать. Если очень хочется, можно сделать ParseFloat(newValue).

defineVirtualDevice("HeatPress", {
  title: "Текущее давление в системе отопления",
  cells: {
    HeatPressVol: {
      type: "value",
      value: dev["HeatPress/HeatPressVol"]
    },
  }
});

defineRule("HeatPressVol", {
  whenChanged: "wb-mai2-mini_53/Current input 1",
  then: function(newValue, devName, cellName) {
    dev["HeatPress/HeatPressVol"] = newValue/4-1;
  }
});

Все равно вирт
Снимок экрана 2023-05-03 в 11.29.42
уальное устройство отображает 0

если дописать +5
defineVirtualDevice(“HeatPress”, {
title: “Текущее давление в системе отопления”,
cells: {
HeatPressVol: {
type: “value”,
value: dev[“HeatPress/HeatPressVol”]+5
},
}
});
то отображает 5

Просто скопируйте код из моего сообщения. Я проверил - это работает.

закопипастил, не работает


Снимок экрана 2023-05-03 в 11.44.38

Добавьте отладочный вывод внутри правила HeatPressVol
log("newValue: {}, devName: {}, cellName`: {}", newValue, devName, cellName); и посмотрите, вызывается ли оно вообще.

Топик (wb-mai2-mini_53/Current input 1) точно правильный?

Просто нажмите на него во вкладке Devices - название топика скопируется в нужном виде.
И, да, оно таки не wb-mai2-mini_53/Current input 1, а wb-mai2-mini_53/Current input 1 (mA).

Упс, заработало, что то не доглядел, что топик четь по другому называется.
Большое спасибо.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.