Добрый день, не могу понять как поменять начальное значение для “Прямая активная энергия для канала 1” для счетчика WB-MAPS6S F2.1 Пробую сделать следующим образом:
Перезагружаю контроллер и значение не меняется. Можно конечно программным способом добавить дельту, но хотелось бы чтобы счетчик сам выдавал значения синхронные со счетчиком квартиры. Т.е. чтобы технический и коммерческий учет был между собой одинаков.
Если делаю что-то не так, подскажите как надо
Добрый день!
Показания счётчика не изменить - это работает точно так же, как у вашего бытового счётчика.
Для решения вашей задачи, можете через движок правил создать виртуальное устройство, привязанное к показаниям счётчика с изменением на нужную дельту.
Другой вариант (идеологически неверный, но, возможно, более удобный) - скопировать шаблон устройства, и в нём в нужном канале добавить параметр offset (там уже есть параметр scale, добавьте аналогично рядом).
Спасибо, пойдем по пути правил
1 лайк
Пропали топики в WUI 2.0 на закладке MQTT Channels, как-то скрипт мог сказаться?
Сделал следующий скрипт
// UserSettings/currentAP1 - текущие показания канала AP1 + delta
// UserSettings/lastMonthAP1 - показания счетчика в прошлый месяц
// UserSettings/summMonthAP1 - расход за месяц
// UserSettings/summDayAP1 - расход за день
defineRule("summAP1", { //правило для добавления текущих значений счетчика WB-MAP6S к значениям счетчика учета энергии
whenChanged: "2A12-MAP6S/AP energy 1",
then: function (newValue, devName, cellName) {
dev["UserSettings/currentAP1"] = 5000 + parseInt(newValue); // 5000 это показания счетчика на площадке на момент запуска, для синхронизации
}
});
defineRule("summAP2", { //правило для добавления текущих значений счетчика WB-MAP6S к значениям счетчика учета энергии
whenChanged: "2A12-MAP6S/AP energy 2",
then: function (newValue, devName, cellName) {
dev["UserSettings/currentAP2"] = parseInt(newValue);
}
});
var timer = 70*1000; // таймер на 70 секунд
var timer_id = null;
defineRule("chekDay", {
when: cron ("0 59 23 * *"), //запускаем таймер в 23-59, время согласно date формат 0 ММ ЧЧ * *
then: function (){
var date1 = new Date ();
if (timer_id) {
clearTimeout(timer_id); //сброс таймера
}
timer_id = setTimeout(function () { //запускаем таймер на 70 секунд чтобы посмотреть дату позже
var date2 = new Date ();
if (date1.getMonth() != date2.getMonth()) // если месяцы в датах разные, т.е. наступил новый месяц
{
dev["UserSettings/summMonthAP1"] = dev["UserSettings/currentAP1"] - dev["UserSettings/lastMonthAP1"]; // вычесляем расход за месяц = текущее значение - предыдущие показания месяца
dev["UserSettings/lastMonthAP1"] = dev["UserSettings/currentAP1"]; //последнему значению присвоили текущее значение счетчика
dev["UserSettings/summMonthAP2"] = dev["UserSettings/currentAP2"] - dev["UserSettings/lastMonthAP1"]; // вычесляем расход за месяц = текущее значение - предыдущие показания месяца
dev["UserSettings/lastMonthAP2"] = dev["UserSettings/currentAP2"]; //последнему значению присвоили текущее значение счетчика
}
timer_id = null;
}, timer);
dev["UserSettings/summDayAP1"] = dev["UserSettings/currentAP1"] - dev["UserSettings/summDayAP1"]; // вычесляем расход за день = текущее значение - предыдущие показания дня
dev["UserSettings/summDayAP2"] = dev["UserSettings/currentAP2"] - dev["UserSettings/summDayAP2"]; // вычесляем расход за день = текущее значение - предыдущие показания дня
}
});
Ничего не делал, все восстановилось само собой спустя час
подскажите как это завернуть в виртуальное устройство
не понятно что вас интересует, можете точнее сформулировать вопрос