Создание параметра расхода энергии за час

Добрый день. Подскажите пожалуйста, как создать скрипт, который будет измерять показания расчета Энергии (AP_energy_L1) за час? Сейчас он каждую минуту показания дает и показывает суммарное значение. Хочется понимать какой расход в час. Заранее спасибо!

Добрый день.
Настройки” → “Конфигурационные файлы” → “История данных MQTT
Необходимо поменять параметр “Минимальный интервал записи значений (с)”:
image

Это полезный параметр, который влияет на частоту опроса. Но мне нужно, чтобы только у параметра (AP_energy_L1) изменилась частота. Верно ли я нашел место, где можно это изменить? Тут в мс поэтому такая цифра вышла…
image

Стоит задача сформировать параметр, который отвечает именно за разницу между значениями. Если в 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"];
  }
});
2 лайка

Огромное спасибо. Правильно ли я понял, что если в cron правиле изменить @hourly на @monthly то получим показатель месячный?

Да, всё верно.