В конце прошлой статьи я остановился на перечислении того бесконечного списка технических решений, которые очень хочется реализовать в рамках автоматизации всей, ну не страны, но дачи.
Раньше общее потребление контролировал однофазный счетчик с Modbus-интерфейсом. Следить за текущими показаниями потребления полезно, чтобы не превышать разумные лимиты и не дожидаться отключения групповых автоматов. С этой задачей он справлялся на «ура». Но гораздо интереснее следить за каждым потребителем в отдельности. Для чего и как это сделать попробую рассказать в этой статье.
Прежде всего я хотел сказать большое спасибо вам, коллеги, за проявленный интерес к предыдущей статье. Отвечать на ваши комментарии было не менее увлекательно, чем писать саму статью. Один наблюдательный читатель обратил внимание, что фильтр грубой очистки воды установлен вверх ногами!
Wiren Board производит несколько моделей многоканальных modbus-счетчиков электроэнергии: четырехканальный трехфазный монстр WB-MAP12H (и его одноканальный младший брат WB-MAP3H), шестиканальный однофазный WB-MAP6S и отдельную модель WB-MAP3E, которая применяется в специальных случаях, когда требуется диагностировать короткие и мощные всплески напряжения.
Счетчики серии WB-MAP измеряют огромное количество параметров сети: мгновенные параметры напряжения, тока, частоты, мощности (активной, реактивной, полной), коэффициентов мощности, фазовые углы; накопленные значения энергий по каждому каналу. Кроме всего прочего, счетчики MAP позволяют измерять коэффициенты гармоник по напряжению и току, что важно для оценки качества электроэнергии в сетях со “злобными” потребителями.
Напряжение подается непосредственно на клеммы счетчиков, а ток для каждого канала измеряется разъемными токовыми трансформаторами. Это очень удобно при установке счетчика в готовом щите.
Монтаж счетчиков
В демонстрационных щитах трансформаторы тока выглядят красиво и аккуратно (как на картинке в заглавии поста), в реальной жизни приходится размещать трансформаторы там, где это получается. И да, щиты должны быть большими!
Проект автоматизации моего дачного дома, как я подробно рассказывал в предыдущей статье, сделан на основе предыдущей версии нашего контроллера Wiren Board 5, к которому по интерфейсу Modbus подключены различные релейные модули, исполнительные устройства и датчики.
Перед очередными выходными я вооружился двумя счетчиками WB-MAP6S и одним WB-MAP12H и занялся делом. Первоначальные прикидки по количеству каналов измерения оказались, конечно, неверными: потребителей, за которыми хотелось наблюдать, оказалось больше, так что некоторое время пришлось потратить на размышления, по каким группам измерять потребление.
Были выбраны общий ввод, нагрузки после стабилизатора и инвертора, конвекторы и кондиционеры (каждый по отдельности), два бойлера, телекоммуникационный шкаф, автоматические ворота, холодильник, теплый пол.
Счетчики собирают огромное количество параметров (WB-MAP12H имеет более тысячи регистров), но даже постоянный опрос нескольких десятков параметров с каждого счетчика становится значительной нагрузкой на шину RS-485, если опрашивать их слишком часто. Стандартные шаблоны, которые идут вместе с контроллером, я сократил до необходимого минимума параметров.
Счетчики я перенес на вторую шину RS-485 контроллера Wiren Board, чтобы не мешать нормальной работе релейных модулей и датчиков, и увеличил скорость до 115200 кбит/с. В такой конфигурации опрос счетчиков стал выполняться довольно бодро и не мешал функционированию остальной автоматики.
Прежде чем приступить к практическому использованию полученных результатов, их необходимо проанализировать со всех сторон. Контроллер Wiren Board имеет встроенную базу данных и простые средства визуализации, но для серьезных задач стоит использовать более серьезные средства.
Вспомнив, что я как-никак Zabbix CP, решил было развернуть мониторинг на нем, но тяга к новому пересилила и я решился попробовать использовать для хранения и отображения данных популярную связку Influxdb + Grafana. Контроллер транслирует все данные в виде mqtt-топиков на отдельный mqtt-брокер на сервере, где скрипт на Python обрабатывает их и сохраняет в Influx. Там же установлена Grafana для отображения всего и вся.
Первые же результаты меня не разочаровали. Вот несколько примеров.
Напряжение в сети
Все провалы, за редким исключением, приходятся на время около 21:00 — 23:00 часов и в выходные особенно заметны. Пики — раннее утро.
Так выглядит работа двух стабилизаторов (желтая и голубая линии):
Это обычные релейные стабилизаторы известного в широких кругах латвийско-китайского производителя, с достаточно большим шагом меняющие напряжение на выходе. Ничего особенного, хотя видно, что один из них склонен к переключению на совсем уж предельные (укладывающиеся, правда, в рамки ГОСТа) значения напряжения. Первый кандидат на замену.
Мгновенные значения отображаются в виде таких графановских виджетов:
Просто и наглядно, годится для вывода на информационный экран или планшет на стене.
Очень живописно выглядит график мгновенной мощности для всех потребителей (щелкните на рисунке, чтобы открыть в полном масштабе):
Большое и зеленое — это не крокодил, а общая мощность на входе.
Grafana позволяет выбрать на графике не только все, но один или несколько показателей, представляющих интерес.
Коэффициент мощности (cos φ). У современных бытовых устройств он вполне себе неплох. Я исследовал работу трех потребителей: кондиционера, холодильника и водонагревателя.
У водонагревателя в момент активной работы коэффициент мощности 1 — “высокий” (0,95…1), у холодильника 0,85 — “хороший” (0,8…0,95); коэффициент мощности кондиционера (0,76) находится у верхней границы “удовлетворительного” диапазона (0,65…0,8).
Инверторный кондиционер:
Работа в штатном режиме охлаждения и структура отдельного пика включения компрессора (справа)
Видны пики при начальном запуске компрессора внешнего блока, стабильный режим работы, дежурный режим.
Как работает холодильник? “Др-др-др-др-др-др-др?” Почти что. Компрессор запускается периодически, по мере потепления внутри камер:
Периодические включения компрессора холодильника
Структура отдельного пика энергопотребления
Отдельный цикл: виден бросок мощности при включении компрессора холодильника. Счетчики WB-MAP достаточно чувствительные: видите эти маленькие пики, около десятка Ватт? Это загоралась лампочка внутри холодильника: кто-то в него лазил!
Полотенцесушитель работает в цикле постоянного включения/выключения для поддержания заданной температуры:
Справа более детальное изображение отдельных пиков потребления
Примерно так же работает варочная поверхность:
Кажется, это варился мой утренний кофе.
Интересный профиль энергопотребления у автоматических ворот:
Около 5 Ватт потребляют они в дежурном режиме, при работе профиль энергопотребления позволяет увидеть отдельные фазы движения створок: начинает открываться первая, затем начинает вторая, затем они открываются вместе, а затем по очереди стопорятся и двигатели приводов отключаются.
Бойлер поддерживает температуру воды, частота и время включений зависят от потребления горячей воды:
Не буду утомлять дальше читателей графиками — покажу табличку! (Grafana умеет не только строить графики, но и отображать данные в таблицах и на столбчатых диаграммах.)
Табличка простая и позволяет отслеживать общее потребление энергии по часам, а также оценить, во что обошелся каждый час в соответствии с текущим тарифом. Старая версия Influxdb, которая ставится из репозиториев текущей версии Ubuntu на сервере, не умеет делать привычные выборки из выборок, поэтому добавить столбец со стоимостью каждого часа не удалось.
На диаграмме потребление выглядит так:
Учитывая, что Gafana может генерировать тревожные сообщения, полученного результата вполне хватает для light-версии мониторинга энергоснабжения.
Однако хочется решить и более увлекательные задачи.
- Гармоники тока и напряжения. Несут ли они полезную информацию для дома? Часто плохие потребители или искрящие контакты генерируют гармоники высоких порядков. Насколько хватит временного разрешения счетчиков, чтобы их детектировать и принимать какие-то решения об отключении “плохих нагрузок”? Или просто выдавать алерты?
- Кондиционеры и конвекторы. Если отталкиваться от температуры в помещении, можно понять, в каком режиме работает кондиционер: пытается ли он с диким упорством охладить конвектор (конвектор следует отключить) или они сотрудничают вместе, чтобы побыстрее нагреть помещение, если кондиционер работает в обратном режиме, на нагрев?
- Ворота. Если профиль энергопотребления меняется и начинает значительно отличаться от штатного, то это может говорить о том, что есть какое-то препятствие, загустело масло в приводах от низкой температуры, кто-то слишком часто открывает-закрывает ворота. Тут можно отправлять предупреждения, отключать питание. Хватит ли для этого средств контроллера, Influx и Grafana? Возможно, такие вещи надо реализовывать отдельным скриптом, подписанным только на сообщения со значениями параметров энергопотребления ворот.
- Насосная станция и скважинный насос. Вместе с оценкой расхода воды возможно отследить падение производительности из-за каких-то неисправностей, течи, проблем с накопительными баками.
- Работу компрессора септика тоже можно оценить по энергопотреблению, хотя расход воздуха более информативен, на мой взгляд.
- Водонагреватели. В скважине очень жесткая вода, накипь образуется достаточно быстро. Соответственно, нагревательным элементам приходится работать больше и в более жестком режиме, нагревая воду из-под дополнительного кожуха накипи (он еще и пригорать начинает, если довольно толстый). Интересно будет понять, хватит ли анализа потребляемой мощности для детектирования образовавшейся накипи (у бойлеров нет интерфейса для сообщения о температуре воды в баке)?
- Общее энергопотребление — если токи подходят к предельным значениям, можно отключать низкоприоритетные нагрузки.
Буду рад, если кто-нибудь предложит неожиданный и интересный вариант использования мониторинга энергопотребления отдельных устройств.
До новых встреч, друзья!