Предложения для счетчиков электроэнергии

Добрый день.

что-то навеяно собствеными наблюдениями, а что-то и некоторой болью, которая созвучна с темами этой и этой, и введенными ограничениями на публикацию не более 100 топиков в секунду.

  1. Очень жду анонсированного добавления в прошивку дополнительного множителя для коэффициента трансформации. Без этого приходится делать виртуальные клоны устройств, которые сильно увеличивают нагрузку на контроллер

  2. Было бы очень полезно добавить для каждого значения параметр “публиковать значение при изменении на …”, чтобы публикация в топик происходила только при изменении на заданную дельту. В KNX эти 2 независимых друг от друга параметра ( “отправлять при изменении на …” и “отправлять с периодичностью …”) очень помогают от флуда в шину значений типа температуры/напряжения/… Я так понимаю, для Urms и была попытка сделать что-то такое, но что-то пошло не так… И это было бы полезно сделать не только для счетчиков, но и для всех устройств, который выдают числовые данные

  3. Было бы здорово добавить некоторый набор событий, которые счетчики могли бы отслеживать сами, например:

  • обрыв ноля
  • обрыв фазы (когда пропадает напряжение на одной или двух фазах)
  • отсутствие напряжения на всех фазах одновременно
  • отсутствие потребления на всех фазах одновременно (косвенно может свидетельствовать об отключении автомата/рубильника, который стоит после счетчика)
  • превышение / понижение напряжения по каждой фазе выше/ниже заданного порога в течении заданного времени
  • превышение / понижение нагрузки по каждой фазе выше/ниже заданного порога в течении заданного времени
  • предупреждение “вероятно нарушено чередование фаз”
  • предупреждение “вероятно неверное направление ТТ”
  1. Для возможности отображения на интерфейсах степени угрозы, обнаруженной из пункта (3), в цветовом варианте было бы еще неплохо добавить числовой параметр, например:
    0-все ок,
    1-критическое состояние (обрыв ноля, фазы),
    2-требуется внимание (отсутствие напряжения на всех фазах, сработка установленных триггеров превышения/понижения пороговых значений напряжения/тока),
    3-информационное (отсутствие потребления на всех фазах)
    4-возможная ошибка конфигурации (чередование фаз, направление ТТ)

  2. Ну и еще одно предложение, не связанное со счетчиками. Отображать другим цветом шапки виджета устройства, если оно в ошибке. Когда устройств много и они все свернуты, то не видно, какие в ошибке, а какие нет

Спасибо

1 лайк

Здравствуйте! Сегодня выходной день, поэтому сотрудники техподдержки ответят вам в рабочий день.
Пока что я, автоматический помощник, проанализировал ваш вопрос и постарался найти решение:

Разберу ваши предложения по пунктам, с прицелом на то, что можно сделать уже сейчас на Wiren Board (контроллеры WB6/WB7/WB8 и счётчики/модульные измерители, такие как WB-MAP, WB-MAP3E/MAP6S и т.п.), а что — очевидно зона доработки прошивок/ПУ.


1. Дополнительный множитель для коэффициента трансформации

Сейчас типовой механизм — один коэффициент трансформации (для ТТ/ТН) в настройках устройства (через веб-интерфейс или шаблоны /etc/wb-mqtt-serial.conf и .json-шаблоны) и дальше возможна «надстройка» через виртуальные устройства и правил wb-rules (как вы и делаете). Это действительно создаёт лишние топики и нагрузку.

Полноценное решение — именно то, про что вы пишете: второй множитель в прошивке самого счётчика/модуля, чтобы:

  • измерительные регистры × (коэф. ТТ/ТН) × (доп. множитель);
  • наружу в MQTT сразу выходили «правильные» значения без создания виртуальных каналов.

Сейчас это можно лишь эмулировать:

  • оставить в устройстве «базовую» конфигурацию;
  • домножать значения в wb-rules и публиковать в отдельные топики (виртуальные устройства через /etc/wb-rules/ и /etc/wb-mqtt-confed.d/)[1].

Но да, это только обходной путь, а не замена аппаратной/прошивочной функции. Ваше пожелание логичное и как минимум хорошо стыкуется с уже имеющейся болью с коэффициентами и лимитом публикаций.


2. «Публиковать при изменении на Δ» для каждого значения

То, что вы описали (дельта + периодическое обновление), сейчас частично можно реализовать только на уровне контроллера:

Вариант через wb-rules:

  • Отключить/уменьшить частоту публикации «сырого» значения (если позволяет устройство/драйвер).
  • Делать свой «фильтр по дельте»:
    • хранить последнее опубликованное значение в переменной;
    • по приходу новых данных проверять if (Math.abs(new - prev) >= delta), и только тогда публиковать в отдельный топик (виртуальное устройство).

Пример скелета правила:

defineRule('filtered_voltage', {
  whenChanged: 'wb-map6s_123/Voltage_L1', // пример топика
  then: function (newValue, devName, cellName) {
    var delta = 1.0; // публиковать при изменении >= 1 В
    var key = 'last_voltage_L1';
    var prev = global.get(key);
    if (prev === undefined || Math.abs(newValue - prev) >= delta) {
      global.set(key, newValue);
      dev['virt_power/Voltage_L1_filtered'] = newValue;
    }
  }
});

Но:

  • это опять ведёт к виртуальным устройствам и дополнительным топикам;
  • не уменьшает поток «сырых» данных от драйвера к MQTT, а только ограничивает «пользовательские» топики.

Для системной разгрузки действительно нужен параметр на уровне устройства/драйвера (внутри wb-mqtt-serial или прошивки счётчика), как вы описали — отдельный параметр «минимальное изменение для публикации» плюс, возможно, отдельный периодический опрос. Аналог KNX-подхода — хорошая идея.


3. События, которые сам счётчик мог бы отслеживать

Многие из перечисленных событий сейчас приходится реализовывать на стороне контроллера через правила:

  • Обрыв нуля / фазы, отсутствие напряжения
    По факту — анализ фазных напряжений (Urms) и состояния фаз:

    • если одна фаза просела ниже порога и/или пропало напряжение — событие «обрыв фазы»;
    • все фазы одновременно ниже порога — «отсутствие напряжения».
  • Отсутствие потребления на всех фазах
    Анализ суммарного тока/мощности близкой к нулю в течение заданного времени.

  • Превышение/понижение напряжения/нагрузки в течение времени
    Сейчас это типично делается в wb-rules: при превышении порога старт таймера, если условие держится N секунд — генерируем событие (MQTT-топик, уведомление, лог).

  • Нарушение чередования фаз, неверное направление ТТ
    Здесь уже нужны либо специализированные вычисления на стороне счётчика (анализ векторной диаграммы токов/напряжений и cos φ по фазам), либо достаточно сложные сценарии в контроллере. В прошивке счётчика такую логику реализовать значительно надёжнее и однозначнее.

На текущем уровне:

  • большую часть списка можно реализовать как правила на контроллере с публикацией «событийных» топиков (например, /events/power/phase_loss, /events/power/voltage_over и т.п.);
  • но то, что вы предлагаете, — именно перенести эту логику (или её ядро) в прошивку счётчиков/измерительных модулей, чтобы контроллер получал уже готовые флаги/состояния. Это ощутимо разгрузит и MQTT, и wb-rules, и упростит конфигурацию.

4. Числовой параметр «степени угрозы»

С точки зрения реализации на сегодня:

  • можно завести виртуальное устройство power_status с каналом severity (0…4):
    • 0 — всё ОК,
    • 1 — критическое,
    • 2 — требуется внимание,
    • 3 — информационное,
    • 4 — возможная ошибка конфигурации.
  • правилами wb-rules выставлять это значение в зависимости от сработавших условий (из п.3);
  • на уровне интерфейса (Dashticz, встроенный UI, внешняя SCADA, Home Assistant и т.п.) сделать цветовую индикацию по этому полю.

Но более стройное решение — если такие коды будет выдавать сам счётчик или модуль, а в MQTT будет просто один канал severity (как вы и описали). Это хорошо ложится на концепцию «интеллектуального измерительного устройства», где контроллер больше занимается интеграцией, чем низкоуровневой логикой.


5. Цвет шапки виджета устройства при ошибке

Сейчас базовый веб-интерфейс Wiren Board:

  • отображает состояние каналов, иногда статус устройства в виде иконок/текста;
  • при большом количестве устройств и свёрнутых виджетах действительно сложно быстро увидеть, какие в ошибке.

То, что вы предлагаете — подсветка шапки виджета устройства при наличии ошибки (например, device/controls/…/error или по состоянию драйвера) — можно частично реализовать кастомизацией фронтенда (если проект позволяет менять шаблоны UI), но это уже зона доработки веб-интерфейса контроллера.

С инженерной точки зрения идея хорошая:

  • быстрая визуальная диагностика без разворачивания всех устройств;
  • особенно полезно при системах с десятками/сотнями модулей.

Что можно сделать уже сейчас (на уровне пользователя)

Пока функциональность не реализована в прошивках/драйверах, вы можете:

  1. Собрать свою «надстройку»:

    • виртуальные устройства для «отфильтрованных» значений (дельта-публикация);
    • отдельные MQTT-топики для событий (обрыв фазы, перенапряжение и т.п.);
    • единый канал severity с вашей градацией 0–4.
  2. Минимизировать нагрузку:

    • уменьшить частоту опроса по менее важным каналам (часть параметров можно опрашивать реже через настройки опроса в wb-mqtt-serial)[1:1];
    • объединять несколько «логических» событий в один «статусный» регистр/топик (как вы и предлагаете с кодами 0–4).
  3. UI-уровень:

    • использовать внешний интерфейс (например, Home Assistant / SCADA), где можно гибко настроить цветовую индикацию по полю severity или по ошибочным флагам;
    • в стандартном UI Wiren Board можно хотя бы сгруппировать проблемные устройства на отдельной странице/вкладке.

Ваши предложения очень системные: они уменьшают нагрузку (MQTT, правила), повышают диагностику и лучше соответствуют практике, которую вы упомянули (KNX). По сути, это набор требований к «новому поколению» прошивок счётчиков/модулей и драйверов на WB.

Когда инженеры подключатся в рабочий день, они смогут:

  • прокомментировать планы по введению дополнительного множителя;
  • сказать, планируются ли параметры «дельта-публикации» в драйверах/устройствах;
  • оценить возможность добавления перечисленных событий и статусного кода угрозы в прошивки конкретных моделей счётчиков / модулей;
  • передать ваши пожелания по UI (цвет шапки виджета при ошибке) в план развития интерфейса.

Примечание: Я — искусственный интеллект, а не человек. В моих ответах могут быть неточности.


  1. Драйвер wb-mqtt-serial — Wiren Board ↩︎ ↩︎

Добрый день.

Это пока не анонсировалось, но да, в планах есть.

Уже есть
А для чего порог изменения может требоваться редактировать? То есть какой кейс?

А как, каким механизмом это можно реализовать?
Пока не могу себе представить способ анализа, позволяющий точно определить это.

Не думаю что имеет смысл реализовывать такие проверки именно в измерителе - это, анализ. как раз задача верхней системы.

Здравствуйте! Сегодня выходной день, поэтому сотрудники техподдержки ответят вам в рабочий день.
Пока что я, автоматический помощник, проанализировал ваш вопрос и постарался найти решение:

Сейчас в теме уже подключился модератор, поэтому я дополню ответы по сути ваших предложений, но более «технически-конкретно» — что есть уже, что можно обойти правилами, а где действительно нужен именно функционал в прошивке/ПО.


1. Дополнительный множитель трансформации

Модератор верно уточнил: это пока не анонсировано, но находится «в планах». То есть официального ETA нет, но идея внутри компании уже обсуждалась.

На данный момент:

  • Реализовать второй множитель именно в счётчике / wb-mqtt-serial вы как пользователь не можете.
  • Обходной путь остаётся прежним: либо:
    • заложить исходный коэффициент ТТ/ТН в устройстве,
    • дополнительный множитель делать на уровне wb-rules и виртуальных устройств,
      либо
    • «размазать» итоговый коэффициент по одному множителю (если хватает диапазона/точности).

Если виртуальные клоны создают избыточную нагрузку (по количеству топиков) — сейчас, увы, это системное ограничение. То, что инженеры признали задачу «в планах», — уже признак, что боль типовая и она не игнорируется.


2. Порог изменения для публикации (Δ) и существующий механизм

Модератор указал на «Событие быстрого Modbus» у WB‑MAP12E, которое срабатывает при изменении на >2 В с прошлого события по Urms[1]. Это:

  • частный случай того, что вы хотите (жёстко заданная дельта 2 В),
  • но не универсальный и не настраиваемый пользователем.

Ваш кейс — именно конфигурируемый порог изменения для публикации (и желательно отдельно от периода опроса). Практические сценарии:

  • «передавать температуру только при изменении ≥0.5 °C, но не реже раза в 10 минут»;
  • для напряжения — публиковать только при изменении ≥1…2 В, чтобы не заливать MQTT флуктуациями сети;
  • для токов/мощности — отдельные дельты, чтобы снизить шум от малых изменений при ШИМ-нагрузках и т.п.

Сейчас всё это можно только эмулировать:

  • опрашивать устройство с базовой частотой;
  • в wb-rules фильтровать по дельте, как я показывал ранее, и публиковать уже «сглаженное» значение в виртуальный канал.

Почему кейс важен именно как настраиваемый параметр:

  • разные объекты и нагрузки требуют разных порогов;
  • часть систем ожидает практически «аналоговый» поток, другая — только грубые изменения;
  • единый жёсткий порог (как в fast event) не покрывает широкий спектр задач.

Так что ваш запрос на редактируемый порог изменения вполне обоснован; в плане реализации он ближе к уровню драйвера/прошивки, чем сценария.


3. События уровня счётчика (обрывы, перенапряжения, направление ТТ и т.д.)

Модератор справедливо заметил, что сложный анализ — задача верхнего уровня (контроллера/SCADA), но у этого подхода есть и недостатки:

  1. Обрыв нуля
    Действительно, это непростая задача: требуется анализ не только абсолютных величин напряжения, но и перекосов по фазам, поведения при нагрузке и т.п. Для надёжного распознавания нужны:

    • фазные напряжения,
    • токи,
      -, возможно, последовательный анализ во времени.

    На Wiren Board сейчас такое можно реализовать только в wb-rules по вашему алгоритму (вы сами определяете критерии «обрыв нуля»).

  2. Обрыв фазы / отсутствие напряжения / отсутствие потребления
    Эти сценарии проще:

    • Urms_L? < порога X в течение t секунд → событие «обрыв фазы L?».
    • Все Urms_L? < порога X одновременно → «отсутствие напряжения».
    • Все I? или суммарная P ~0 в течение t секунд → «отсутствие потребления (возможно автомат отключён)».

    Сейчас:

    • легко реализуется в wb-rules (есть всё: Urms, I, P и таймеры);
    • но требует писать сценарии и держать их в контроллере.
  3. Превышение/понижение напряжения/нагрузки с выдержкой времени
    Типовой паттерн: «если значение вышло за порог и не вернулось в норму за t секунд — тревога».
    В счётчике/модуле такие вещи часто делают:

    • из-за гарантированной детерминированности (энергомер живёт своей жизнью, вне зависимости от загрузки контроллера);
    • для локальной сигнализации (реле, дисплей, сухой контакт).

    На Wiren Board:

    • сейчас это нужно писать в wb-rules;
    • пороги и время можно вынести в параметры в MQTT и менять из UI.
  4. Нарушение чередования фаз / неверное направление ТТ
    Здесь модератор особенно прав: это совсем «интеллектуальные» параметры, обычно реализуемые:

    • либо в дорогих многоканальных анализаторах качества,
    • либо на стороне верхнего уровня.
      Для точной реализации требуются:
    • фазы токов/напряжений,
    • анализ cos φ и последовательности фаз.

    Это уже ближе к специализированной функции счётчика. Если для будущих моделей измерителей планируется «умный анализ», ваш список событий может быть именно ТЗ для разработчиков.

Итого: сейчас это действительно зона «верхнего уровня», но с вашей стороны логично просить минимум часть этих событий встроить в измерители — хотя бы те, что однозначно определяются по порогам Urms и I/P.


4. Числовой уровень «угрозы» (0–4)

Здесь нет противоречия: модератор говорит «анализ — лучше наверху», вы предлагаете универсальную шкалу, даже если события считаются в контроллере.

Технически, вы можете уже сейчас:

  • завести виртуальное устройство power_status с каналом severity (0…4);
  • описать в wb-rules «мэппинг»:
    • обрыв фазы → 1,
    • долгий недонапряг/перенапряг → 2,
    • просто отсутствие потребления → 3,
    • выявлены аномалии «чередование/ТТ» по вашему алгоритму → 4,
    • нормальное состояние → 0.
  • дальше в UI (стороннем или кастомном) раскрашивать по значению.

Если же когда-нибудь часть логики уйдёт в прошивку, тот же диапазон 0…4 можно будет использовать уже как регистр в счётчике. То есть, ваше предложение совместимо и с текущей архитектурой (верхний анализ), и с возможным будущим (умные счётчики).


5. Цвет шапки виджета при ошибке

Это уже не про измерители, а про веб-интерфейс контроллера. Сейчас стандартный UI:

  • не меняет цвет шапки виджета устройства при ошибке драйвера/каналов;
  • максимум — отдельные иконки/подписи об ошибках.

С точки зрения UX:

  • ваше предложение логично и полезно для инсталляций с десятками устройств;
  • технически реализуемо на уровне frontend (CSS/JS и логика, завязанная на состояние драйвера или спец. топики /meta/error//status и т.п.).

Пока такой функционал в стандартном UI нетипичен, вы можете:

  • либо использовать внешний интерфейс (Home Assistant / SCADA), который вы сами настроите по топикам;
  • либо, если есть ресурсы, форкнуть/кастомизировать веб-интерфейс контроллера (в корпоративных проектах так иногда делают).

Что вы можете сделать прямо сейчас

Если суммировать «практическую» часть, не дожидаясь смены прошивок:

  1. Фильтр по дельте и уменьшение флуда:

    • использовать wb-rules для дельта-фильтра;
    • при необходимости хранить «исходный» топик для диагностики, а «рабочий» — уже отфильтрованный.
  2. События и уровни угроз:

    • оформить все ваши идеи в сценарии на контроллере:
      • правила на Urms, I, P с таймерами;
      • генерация событийных топиков (/events/...);
      • единый канал severity (0–4), который UI, HA или SCADA раскрашивает.
  3. Обсуждение с инженерами (в рабочие дни):

    • уточнить, какие именно модели измерителей/счётчиков рассматриваются;
    • узнать, какие события реально планируют переносить «в железо»;
    • предложить конкретный формат регистров/каналов (например, один регистр битовой маски и один — уровень угрозы).

Когда сотрудники техподдержки будут в онлайне, они смогут:

  • более предметно прокомментировать планы по дополнительному множителю;
  • обозначить, возможно ли и когда появится редактируемый порог изменения в драйверах/устройствах;
  • передать ваш список событий и шкалу 0–4 в продуктовую команду/разработчикам ПО измерителей;
  • оценить шанс появления в стандартном веб-интерфейсе подсветки заголовка виджета по ошибкам.

Примечание: Я — искусственный интеллект, а не человек. В моих ответах могут быть неточности.


  1. WB-MAP12E: измеряемые и вычисляемые величины — Wiren Board ↩︎

Это пока не анонсировалось, но да, в планах есть.

подглядел в одной из соседних тем, очень очень жду, т.к. контроллер один, а счетчиков много (25шт MET3E, подключенных через 6шт WB-MGE), что-то не ожидал, что упрусь в производительность контроллера

А для чего порог изменения может требоваться редактировать? То есть какой кейс?

порог срабатывания в моем понимании это баланс между количеством периодических опросов и событийных телеграмм. Я бы с бОльшим удовольствием поставил опрос того же Urms раз в минуту, а то и в 5, зато порог выставил бы в 0.8 - 1.5в в зависимости от качества сети. В итоге получаем кратное снижение количества телеграмм не теряя при этом реального состояния.

кейс - разгрузить шину и CPU, и использовать возможности fast modbus для событийной модели обновления состояния устройств, вместо опросной. Ведь вы fast modbus именно для этого и придумывали ).

А как, каким механизмом это можно реализовать?

Для 1 фазной сетии наверно правильнее называть его “Вероятен обрыв ноля” в случаях, когда когда Urms зашкаливает за 300в. В принципе это вполне решается пороговыми значениями.
А для 3-х фазной наверно более правильным было бы назвать “Ошибка перекоса фаз”.

Все же это именно предложения, возможно не во всем корректно сформулированные из-за недостатка теоретических знаний. Поэтому, конечно, хотелось бы услышать комментарии/корректировки как профессионалов, так и других пользователей

Не думаю что имеет смысл реализовывать такие проверки именно в измерителе

тут все просто, измеритель увидит аварийную ситуацию в разы (в десятки/сотни раз?) быстрее и это не будет зависеть от текущей нагрузки на основной контроллер, на шину, на периоды опроса и т.п. Измеритель же видит эти данные в разрезе микросекунд.
А так же вы, как разбирающиеся в этом вопросе многим больше, чем многие пользователи этих устройств, сможете определить более правильно и качественно набор критериев, которые с высокой достоверностью оповестят об аварийных ситуациях на электрической сети, чем те, кто будет реализовывать “верхнюю” систему.
а если добавить к нему сухой контактик с выходом NO/NC “авария”, то это вообще будет уникальное самобытное устройство