Добрый день! В последних версиях ПО есть ли возможность сделать в контролах range виртуальных устройств значения в десятичных долях? Температуру задавать, давление и пр. величины.
Добрый день, не совсем понимаю вопрос.
Вам необходимо отображение данные с отсечкой до десятых долей вместо сотых?
Есть виртуальное устройство с контролем для задания уставки по температуре.
Спойлер
"SetPoint": {
title: "Температура",
type:"range",
value: 25,
max: 25,
min: 0,
readonly: true
},
Как в нем сделать, чтобы можно было с десятыми долями задавать значение?
(Контрол привел для примера)
Спасибо за разъяснение.
Бегунком регулировать у меня регулировать не вышло.
Могу предложить для более точной подстройки использовать вариант с добавлением к значению нужного значения в десятых.
// Функция для корректного округления до одного знака после запятой
function roundToOneDecimal(value) {
return Math.round(value * 10) / 10;
}
// Создание виртуального устройства с контролом температуры и двумя кнопками
defineVirtualDevice("test_device", {
title: "Тестовое устройство",
cells: {
SetPoint: {
type: "range",
value: 22.5,
max: 25.0,
min: 0.0,
step: 0.1,
readonly: false
},
AddValueButton: {
type: "pushbutton", // Кнопка +0.1
value: false,
title: "+0.1"
},
SubtractValueButton: {
type: "pushbutton", // Кнопка -0.1
value: false,
title: "-0.1"
}
}
});
// Правило для обработки нажатия на кнопку добавления +0.1
defineRule("add_value_button_pressed", {
whenChanged: "test_device/AddValueButton",
then: function (newValue, devName, cellName) {
if (newValue) {
var currentTemp = dev["test_device"]["SetPoint"];
var newTemp = currentTemp + 0.1;
// Проверка на пределы значений (max)
if (newTemp > 25.0) {
newTemp = 25.0;
}
// Округление значения до одного знака после запятой
newTemp = roundToOneDecimal(newTemp);
// Установка нового значения температуры
dev["test_device"]["SetPoint"] = newTemp;
log.info("Значение температуры увеличено на 0.1. Новое значение: " + newTemp + " °C");
}
}
});
// Правило для обработки нажатия на кнопку уменьшения -0.1
defineRule("subtract_value_button_pressed", {
whenChanged: "test_device/SubtractValueButton",
then: function (newValue, devName, cellName) {
if (newValue) {
var currentTemp = dev["test_device"]["SetPoint"];
var newTemp = currentTemp - 0.1;
// Проверка на пределы значений (min)
if (newTemp < 0.0) {
newTemp = 0.0;
}
// Округление значения до одного знака после запятой
newTemp = roundToOneDecimal(newTemp);
// Установка нового значения температуры
dev["test_device"]["SetPoint"] = newTemp;
log.info("Значение температуры уменьшено на 0.1. Новое значение: " + newTemp + " °C");
}
}
});
Ясно, спасибо за помощь, подумаю. Я тоже пробовал методом тыка разные свойства задавать - не вышло.
В принципе, для температуры в помещении это не так критично (хотя 0.5 градуса можно), а вот для давления воды - вполне логично. Можно конечно в килопаскалях задавать, но такое себе.
Оставьте как пожелание на будущее пожалуйста)
Из вариаций можно отображать давление в барах, а бегунок в килопаскалях.
Пожелание направлено разработчикам.