Добрый день. Подскажите пожалуйста, как создать скрипт, который будет измерять показания расчета Энергии (AP_energy_L1) за час? Сейчас он каждую минуту показания дает и показывает суммарное значение. Хочется понимать какой расход в час. Заранее спасибо!
Добрый день.
“Настройки” → “Конфигурационные файлы” → “История данных MQTT”
Необходимо поменять параметр “Минимальный интервал записи значений (с)”:
Это полезный параметр, который влияет на частоту опроса. Но мне нужно, чтобы только у параметра (AP_energy_L1) изменилась частота. Верно ли я нашел место, где можно это изменить? Тут в мс поэтому такая цифра вышла…
Стоит задача сформировать параметр, который отвечает именно за разницу между значениями. Если в 10:00 было значение в 200 кВт/ч , а в 11:00 стало 205 кВт/ч, то нужно вывести 5кВт/ч.
Можно вынести его в отдельную группу.
Это параметр периода опроса. В истории данные так же будут отображаться с интервалом 2 минуты, но значение параметра будет меняться только раз в час.
Такую задачу можно реализовать с помощью wb-rules. В частности, необходимо создать виртуальное устройство, и по cron-правилу считать разницу и записывать значение в топик виртуального устройства.
Это я и так понял. Надеялся, что можете предложить готовый вариант. Тут решения не нашел Примеры правил — Wiren Board
Вариант в “лоб”: запоминать в переменную или объект значение на начало периода, предварительно сохряняя резницу между текущим и старым значением.
Второй вариант: запрашивать из истории, используя RPC, более красивый.
Первый вариант реализовал через Zabbix. А как в Wirenboard подобный метод использовать?
Пример по cron-правилу:
defineVirtualDevice("dev", {
title: "Hourly consumption",
cells: {
AP_energy_L1: {
type: "value",
value: 0
},
}
});
var last_val = dev["wb-map3et_222/AP energy L1"];
defineRule({
when: cron("@hourly"),
then: function () {
dev["dev/AP_energy_L1"] = dev["wb-map3et_222/AP energy L1"] - last_val;
last_val = dev["wb-map3et_222/AP energy L1"];
}
});
Пример по событию изменения параметра, когда выставлен период опроса 3600000 мс:
defineVirtualDevice("dev", {
title: "Hourly consumption",
cells: {
AP_energy_L1: {
type: "value",
value: 0
},
}
});
var last_val = dev["wb-map3et_222/AP energy L1"];
defineRule({
whenChanged: "wb-map3et_222/AP energy L1",
then: function () {
dev["dev/AP_energy_L1"] = dev["wb-map3et_222/AP energy L1"] - last_val;
last_val = dev["wb-map3et_222/AP energy L1"];
}
});
Огромное спасибо. Правильно ли я понял, что если в cron правиле изменить @hourly на @monthly то получим показатель месячный?