Инвертор солнечный ANENJI 4200 Вт 24 В (ИБП + BMS + HA + AZE0)
- Цена: 16 708 ₽
- Перейти в магазин
Этот инвертор уже обозревался тут раньше. В рамках обзора мы сделаем из него почти полноценный ИБП, подключим к Home Assistant и NUT, пустим в дело ячейки от Nissan Leaf, и внедрим в него soft start, исправив тем самым закладку изготовителя, которая похоже часто приводит к выгоранию силовых ключей. Солнечные панели к нему подключаться не будут.
До его покупки для питания ответственных потребителей на даче (котел, насосы, интернет, автоматика, пара серверов) использовался APC smart-UPS 2200XL с 4-мя 12V 75Ач Ca/Ca, с внешним балансировщиком. Один АКБ умер, второй был поменян по гарантии год назад и существенно отличается от двух оставшихся, остаточная емкость которых была уже 12Ач. Было решено перейти с 48В с на 24В, заодно перейти на Li-ion б/у ячеек от Nissan Leaf. КПД старой схемы по ощущениям не поднималось выше 50%, даже с новыми АКБ больше 3:30 добиться не удавалось. На 48В не свинцовые АКБ — это очень дорого + старый ИБП не умеет ничего кроме свинца, доработать его в лоб вряд ли бы удалось, можно сместить калибровку, но профиль заряда не изменить.
Этот инвертор посовременнее, изначально умеет в разные АКБ и КПД за счет современной элементной базы должно быть существенно выше. По итогам тестирования конструкция проработала более 7ч, но в тот момент SOC был не откалиброван и котел включался редко, тем не менее этот результат меня устраивает полностью, цена за все вместе около 45 000р.
Перед инвертором у меня стоит реле выбора фаз с ограничением по напряжению сверху и снизу, т.е. в этой части замена скомпенсирована.
Эта статья — попытка зафиксировать весь процесс в одном месте. Замечания и комментарии приветствуются.
Далее схема будет использована из этого отзыва.
Мы никому не верим, поэтому сначала проверим, что инвертор действительно ведет себя именно так (тестер подключен к высоковольтному конденсатору на плате, их там два, но они запаралелены, в нагрузке — строительный фен). В видео оговорился, не 48В, а 24В конечно же.
После того, как убедились — пришли к выводу, что явно нужно дорабатывать.
Для этого так же будем использовать схему Алексея с озона:

Собрали «как смогли», подпаяли по инструкции выше, получили +- то, что ожидали )
После проверки — в два слоя термоусадки и приклеить к корпусу или плате.



После этого инвертор при старте ведет себя уже приличнее и предварительно заряжает конденсаторы до 240В, выходные ключи должны нам сказать спасибо за это.
Изначально я ориентировался на готовые аккумуляторные сборки LiFePO4 24В 105Ач на озоне, но пока думал они подорожали с 24к до 36к. Выбор стал очевиден, будем брать Li-ion от бу ячеек Nissan Leaf. Было заказано 12 ячеек с остаточной емкостью около 35Ач на авито у уважаемого Алексея из Астрахани (искать по словам: AZE0, консервы, Nissan Leaf ввб). Аккумуляторы были отлично упакованы и доставлены транспортной компанией.
Будем собирать 7s3p схему. В каждой банке 2 соединенных последовательно аккумулятора. Для 24В нам нужно 7 аккумуляторов, а купили мы по факту чуть больше, 3 аккумулятора останутся не востребованными. Можно было купить 11 банок, одну вскрыть, распилить шины и соединить в ней аккумуляторы параллельно, тогда бы лишним был один элемент. Я решил таким не заниматься и у меня не использованы 3 элемента, возможно потом они нам пригодятся для замены уставших.
Так же отдельно был приобретен BMS с активной балансировкой — JIKONG JK-B2A8S20P BMS 4S-8S 200A 2A. Он был выбран из-за достойного тока балансировки в 2А. 200А мы конечно через него прокачивать не будем, но запас карман не тянет. И к нему же был куплен экранчик, просто для красоты — 3,2' LCD JIKONG Smart, подключается вместо штатной кнопки BMS.
Для датчиков температуры от BMS в задней части банок есть отверстие, датчики были установлены в середину каждой из стопок.
Подключение к АКБ, т.к. сборка 7S, а BMS на 8s, то контакт B8 не подключаем:
Для сборки батареи нам понадобится:
Немного сверления, матов, болгарки, кривых рук и мы собрали нашего франкенштейна:




При сборке учитывать, что банки могут иметь + как слева, так и справа. Либо уточнять при заказе, либо переворачивать. При переворачивании учесть, что длина шин может измениться.
К корпусу BMS приклеены пластиковые проставки, что бы исключить касание клеммами корпуса банок.
Цели:
Теоретически возможно подключение BMS напрямую к инвертору через RS485, но по факту нам это ничего не даст, это дает возможность получать настройки граничных напряжений и реальный SOC из BMS в инвертор и ВСЁ, а свободный порт займет. Управлять настройками и снимать телеметрию с BMS это нам не поможет.
Поэтому к инвертору мы подключимся по RS485, а к BMS по Bluetooth (на самом деле можно и через uart, но лишний изолятор в виде воздуха никогда не помещает).
Уже есть некоторое количество проектов, в которые занимались похожим и откуда мы почерпнули информацию:
github.com/jul-ienfr/esphome-anenji-4.2kw-wifi
github.com/janas-karol/esphome-anenji-6.2kw/
github.com/psalkiewicz/esphome-2026-anenji4200/
github.com/syssi/esphome-jk-bms
Так же магазин нам подкинул некоторое количество документации:
1. Modbus-регистры.
2. Инструкция.
Использовать будем готовую плату KC868-A2 В ней из коробки есть все, что нам нужно: RS485, реле, LAN. Кстати платка сама весьма интересная, в нее можно еще и SIM800 воткнуть.
В перечисленных выше проектах выбрасывали штатную плату управления по wifi из инвертора, либо выпаивали ESP из нее. Мы оставим ее на месте, инвертор отлично отвечает по ModBUS с внешнего разъема, но изменим адрес в настройках, что бы штатная управлялка не смогла ничего сделать.
Но все таки, раз мы залезли в инвертор, то грех не вывести 5в на существующий разъем RJ45, что бы наш внешний контроллер питался изнутри инвертора.
Питание возьмем с 5-ти контактного разъема платы управления (RS-232):

и приведем его на RJ45 c RS485:
Выводы 4 и 5 никуда не были подключены. Теперь у нас инвертор подключается одним шнурком.
Сборка и прошивка ESP для ESP-home описано многократно и повторяться не будем. Я это делал в Addon ESPHome Device Builder внутри Home Assistant.
в конфиге ESP для работы нужно изменить (если использовать эту плату):
По факту конфиг собирает все из нужных репозиториев в одном месте и реализует две доработки:
Первичный запуск и настройку выполняют с выключенным автоматом. Только после выставления уровней напряжений в обоих устройствах автомат включают.
Мы будем использовать нашу батарею в щадящем режиме, от 3.2 до 4.0В, с током зарядки — 30А Это всего 60% от общей емкости батареи, но есть надежда, что при таких значения мы значительно продлим ее срок службы в буферном режиме (фактически по Кулонометру BMS зарядили на 60Ач из 105Ач при текущих настройках).
Для корректного расчета емкости и остатков нужно прогнать полный разряд и заряд после настройки.
Некоторые настроечные значения BMS взаимосвязаны и могут меняться только парами. ESP не видит ошибки при их установке, я первичную настройку делал через родное приложение — JK BMS, рекомендую поступить так же.
Ниже приведенные значения, это мой взгляд и опыт, в них могут быть ошибки или нестыковки. С удовольствием пройдусь по замечаниям, если они будут.
Привожу только фактически измененные значения, а не все (их очень много).
У меня еще есть proxmox на даче с несколькими ВМ и неплохо бы его выключать до того, как батарейка сядет полностью. Будем это делать через NUT используя скрипт, который опрашивает ESP.
Для определения низкого уровня заряда будем использовать предупреждение самого инвертора в переменной UPS warning, оно появляется где-то на уровне 23,4В при напряжении отключения инвертора 22,4В, это с запасом. В NUT еще будем отдавать SOC BMS и уже настроенную логику для UPS Grid Power Relay будем использовать как фактор перехода на батарею.
Все действия выполняются под root на сервере proxmox.
Сначала нужные пакеты
Ну тут все просто до безобразия, т.к. фактически мы все необходимое уже сделали выше.
1. Подключаем ESP через штатную интеграцию ESP-Home;
2. Устанавливаем карточку для отображения параметров работы BMS через HACS или вручную из репозитория — github.com/Pho3niX90/jk-bms-card
и получаем вполне понятный и симпатичный интерфейс:
3. Настраиваем автоматизацию для оповещений. Мой вариант — прислать сообщение в телеграмм и проговорить голосом при переключении сеть/батарея и прислать только в телеграмм статус батареи раз в 15 мин и если она села, тригером для нее является все то же реле, что в случае с NUT.
В реальной жизни это дублируется входящим звонком от контроллера котла, к которому подключен сухой контакт нашего ESP.
Ну вот и все, статья получилась весьма объемной, но я постарался рассказать про всю цепочку. Пока писал — пришла мысли, что в ESP-home нужна кнопка reboot, которая дернет выход на 30 сек. Иначе комп удаленно уже не включить, если он выключился по низкой батареи, а свет включили до полного отключения инвертора. ))
Преамбула:
Обзор посвящен именно инвертору, его применению и использованию для решения реальной инженерной задачи, остальные элементы системы не планировалось обозревать, но без них он теряет смысл, поэтому намеренно не разделил на несколько обзоров.До его покупки для питания ответственных потребителей на даче (котел, насосы, интернет, автоматика, пара серверов) использовался APC smart-UPS 2200XL с 4-мя 12V 75Ач Ca/Ca, с внешним балансировщиком. Один АКБ умер, второй был поменян по гарантии год назад и существенно отличается от двух оставшихся, остаточная емкость которых была уже 12Ач. Было решено перейти с 48В с на 24В, заодно перейти на Li-ion б/у ячеек от Nissan Leaf. КПД старой схемы по ощущениям не поднималось выше 50%, даже с новыми АКБ больше 3:30 добиться не удавалось. На 48В не свинцовые АКБ — это очень дорого + старый ИБП не умеет ничего кроме свинца, доработать его в лоб вряд ли бы удалось, можно сместить калибровку, но профиль заряда не изменить.
Этот инвертор посовременнее, изначально умеет в разные АКБ и КПД за счет современной элементной базы должно быть существенно выше. По итогам тестирования конструкция проработала более 7ч, но в тот момент SOC был не откалиброван и котел включался редко, тем не менее этот результат меня устраивает полностью, цена за все вместе около 45 000р.
Перед инвертором у меня стоит реле выбора фаз с ограничением по напряжению сверху и снизу, т.е. в этой части замена скомпенсирована.
Эта статья — попытка зафиксировать весь процесс в одном месте. Замечания и комментарии приветствуются.
Soft start
На озоне был найден вот такой интересный отзыв, который сразу же был проверен, для истории сохраним его тут и поблагодарим уважаемого Алексея за столь ценную информацию:
Далее схема будет использована из этого отзыва.Мы никому не верим, поэтому сначала проверим, что инвертор действительно ведет себя именно так (тестер подключен к высоковольтному конденсатору на плате, их там два, но они запаралелены, в нагрузке — строительный фен). В видео оговорился, не 48В, а 24В конечно же.
После того, как убедились — пришли к выводу, что явно нужно дорабатывать.
Для этого так же будем использовать схему Алексея с озона:

Собрали «как смогли», подпаяли по инструкции выше, получили +- то, что ожидали )
После проверки — в два слоя термоусадки и приклеить к корпусу или плате.



После этого инвертор при старте ведет себя уже приличнее и предварительно заряжает конденсаторы до 240В, выходные ключи должны нам сказать спасибо за это.
Часть вторая, сборка батареи и BMS
Изначально я ориентировался на готовые аккумуляторные сборки LiFePO4 24В 105Ач на озоне, но пока думал они подорожали с 24к до 36к. Выбор стал очевиден, будем брать Li-ion от бу ячеек Nissan Leaf. Было заказано 12 ячеек с остаточной емкостью около 35Ач на авито у уважаемого Алексея из Астрахани (искать по словам: AZE0, консервы, Nissan Leaf ввб). Аккумуляторы были отлично упакованы и доставлены транспортной компанией.
Будем собирать 7s3p схему. В каждой банке 2 соединенных последовательно аккумулятора. Для 24В нам нужно 7 аккумуляторов, а купили мы по факту чуть больше, 3 аккумулятора останутся не востребованными. Можно было купить 11 банок, одну вскрыть, распилить шины и соединить в ней аккумуляторы параллельно, тогда бы лишним был один элемент. Я решил таким не заниматься и у меня не использованы 3 элемента, возможно потом они нам пригодятся для замены уставших.
Так же отдельно был приобретен BMS с активной балансировкой — JIKONG JK-B2A8S20P BMS 4S-8S 200A 2A. Он был выбран из-за достойного тока балансировки в 2А. 200А мы конечно через него прокачивать не будем, но запас карман не тянет. И к нему же был куплен экранчик, просто для красоты — 3,2' LCD JIKONG Smart, подключается вместо штатной кнопки BMS.
Для датчиков температуры от BMS в задней части банок есть отверстие, датчики были установлены в середину каждой из стопок.
Подключение к АКБ, т.к. сборка 7S, а BMS на 8s, то контакт B8 не подключаем:
Для сборки батареи нам понадобится:| Наименование | Количество | Назначение |
| Наконечник кольцевой неизолированный 6,0мм, DJ431-6A.B.C.D | 8шт. | Подключение BMS |
| Кабельный наконечник медный луженый JG-10 (10-6-5), ТМЛ | 8шт | Подключение силовых цепей |
| Наконечник 10 мм2 двойной НШВИ-2 | 4шт | Подключение силовых цепей к инвертору |
| Автомат С80А EKF PROxima ВА 47-100 | 1шт | Доп защита от КЗ |
| Провод ПуВ нг(А)-LS, 1х10мм2 | Подключение силовых цепей, учитывать, что в двое. | |
| Шайба М6 кузовная усиленная | 24шт | Подключение крайних клемм ячейки |
| Винт М6х12 | 24шт | Подключение крайних клемм ячейки |
| Шайба М4 кузовная усиленная | 12шт | Подключение центральных клемм ячейки |
| Винт М4х12 | 12шт | Подключение центральных клемм ячейки |
| Медная шина М1 3х15мм | 1.5м | соединение ячеек |
| Шпилька М8 | 2м | стягивание ячеек между собой |
| Шайба М8 | 16шт | стягивание ячеек между собой |
| Гайка М8 | 16шт | стягивание ячеек между собой |
Немного сверления, матов, болгарки, кривых рук и мы собрали нашего франкенштейна:




При сборке учитывать, что банки могут иметь + как слева, так и справа. Либо уточнять при заказе, либо переворачивать. При переворачивании учесть, что длина шин может измениться.
К корпусу BMS приклеены пластиковые проставки, что бы исключить касание клеммами корпуса банок.
Часть третья, ESP-home всему голова
Цели:
- Поддержка Network UPS Tools (NUT) или APC UPS Daemon (apcupsd) для штатной работы с серверами;
- Сухие контакты, для отдачи в контроллер котла сигнала о переходе на батареи. Для дублирования этого сигнала через смс и звонок (ранее AP9619 отдавала этот сигнал);
- Ethernet (он уже там есть, т.к. AP9619 ее использовала);
- Интеграция метрик BMS и инвертора в home-assistant.
Теоретически возможно подключение BMS напрямую к инвертору через RS485, но по факту нам это ничего не даст, это дает возможность получать настройки граничных напряжений и реальный SOC из BMS в инвертор и ВСЁ, а свободный порт займет. Управлять настройками и снимать телеметрию с BMS это нам не поможет.
Поэтому к инвертору мы подключимся по RS485, а к BMS по Bluetooth (на самом деле можно и через uart, но лишний изолятор в виде воздуха никогда не помещает).
Уже есть некоторое количество проектов, в которые занимались похожим и откуда мы почерпнули информацию:
github.com/jul-ienfr/esphome-anenji-4.2kw-wifi
github.com/janas-karol/esphome-anenji-6.2kw/
github.com/psalkiewicz/esphome-2026-anenji4200/
github.com/syssi/esphome-jk-bms
Так же магазин нам подкинул некоторое количество документации:
1. Modbus-регистры.
2. Инструкция.
Использовать будем готовую плату KC868-A2 В ней из коробки есть все, что нам нужно: RS485, реле, LAN. Кстати платка сама весьма интересная, в нее можно еще и SIM800 воткнуть.
В перечисленных выше проектах выбрасывали штатную плату управления по wifi из инвертора, либо выпаивали ESP из нее. Мы оставим ее на месте, инвертор отлично отвечает по ModBUS с внешнего разъема, но изменим адрес в настройках, что бы штатная управлялка не смогла ничего сделать.
Но все таки, раз мы залезли в инвертор, то грех не вывести 5в на существующий разъем RJ45, что бы наш внешний контроллер питался изнутри инвертора.
Питание возьмем с 5-ти контактного разъема платы управления (RS-232):

| Pin | Description |
| 1 | TX (3.3V TTL level) |
| 2 | RX (3.3V TTL level) |
| 3 | +5V VCC |
| 4 | GND |
| 5 | Unknown (3.3V TTL level) |
и приведем его на RJ45 c RS485:
| Pin | Description |
| 1 | B (+) |
| 2 | A (-) |
| 3 | Пусто |
| 4 | +5V |
| 5 | GND |
| 6 | Пусто |
| 7 | A (-) |
| 8 | B (+) |
Выводы 4 и 5 никуда не были подключены. Теперь у нас инвертор подключается одним шнурком.
Сборка и прошивка ESP для ESP-home описано многократно и повторяться не будем. Я это делал в Addon ESPHome Device Builder внутри Home Assistant.
в конфиге ESP для работы нужно изменить (если использовать эту плату):
- MAC-адрес BT BMS;
- IP-адрес NTP сервера;
- пароль для OTA обновлений;
- name — с него будут начинаться названия параметров инвертора;
- nameBT — с него будут начинаться названия параметров BT BMS;
- ModBUS адрес инвертора (у меня 2);
По факту конфиг собирает все из нужных репозиториев в одном месте и реализует две доработки:
- Второе реле включено (UPS Grid Power Relay), когда питание от сети;
- Расчет остатка времени работы (UPS estimated runtime) исходя из нагрузки и BMS capacity remaining, вне разряда выдается — «Charging»
Часть четвертая, настройка
Первичный запуск и настройку выполняют с выключенным автоматом. Только после выставления уровней напряжений в обоих устройствах автомат включают.
Мы будем использовать нашу батарею в щадящем режиме, от 3.2 до 4.0В, с током зарядки — 30А Это всего 60% от общей емкости батареи, но есть надежда, что при таких значения мы значительно продлим ее срок службы в буферном режиме (фактически по Кулонометру BMS зарядили на 60Ач из 105Ач при текущих настройках).
Для корректного расчета емкости и остатков нужно прогнать полный разряд и заряд после настройки.
Некоторые настроечные значения BMS взаимосвязаны и могут меняться только парами. ESP не видит ошибки при их установке, я первичную настройку делал через родное приложение — JK BMS, рекомендую поступить так же.
Ниже приведенные значения, это мой взгляд и опыт, в них могут быть ошибки или нестыковки. С удовольствием пройдусь по замечаниям, если они будут.
Привожу только фактически измененные значения, а не все (их очень много).
| Параметр | Текущее | Ед. изм. |
| UPS battery discharge recovery point | 24.0 | V |
| UPS battery equalization time | 0 | min |
| UPS battery low voltage protection | 22.4 | V |
| UPS battery low voltage protection (rec) | 22.3 | V |
| UPS battery overvoltage protection | 29.0 | V |
| UPS floating charging voltage | 28.0 | V |
| UPS Low DC cut-off SOC | 3 | % |
| UPS max charging voltage | 28.0 | V |
| UPS maximum charging current | 30.0 | A |
| UPS maximum mains charging current | 30.0 | A |
| UPS output frequency setting | 50.00 | Hz |
| UPS output voltage | 230.0 | V |
| BMS balance trigger voltage | 0.010 | V |
| BMS balancing start voltage | 3.90 | V |
| BMS cell count | 7 | шт |
| BMS cell request charge voltage | 4.110 | V |
| BMS cell request charge voltage time | 0.5 | h |
| BMS cell request float voltage | 4.100 | V |
| BMS cell request float voltage time | 5.0 | h |
| BMS cell soc0 voltage | 3.200 | V |
| BMS cell soc100 voltage | 4.001 | V |
| BMS cell voltage overvoltage protection | 4.200 | V |
| BMS cell voltage overvoltage recovery | 4.000 | V |
| BMS cell voltage undervoltage protection | 3.000 | V |
| BMS cell voltage undervoltage recovery | 3.210 | V |
| BMS charge overcurrent protection | 60 | A / s |
| BMS charge overtemperature protection | 50.0 | °C |
| BMS charge overtemperature recovery | 40.0 | °C |
| BMS max balance current | 2.0 | A |
| BMS max charge current | 50.0 | A |
| BMS max discharge current | 100.0 | A |
| BMS power off voltage | 2.80 | V |
| BMS total battery capacity | 95 | Ah |
| Параметр | Значение |
| UPS battery charging priority | PV is at the same level as the Utility |
| UPS battery type | Lib (Литиевый без связи) |
| UPS buzzer mode | Beep on warnings and faults |
| UPS input voltage range | Narrow range (Узкий диапазон) |
| UPS lcd backlight | Timed off (Автоотключение) |
| UPS output mode | Single (Однофазный) |
| UPS output priority | Utility-PV-Battery(UTI) |
| UPS turn on mode | Local and remotely turn-on allowed |
Часть пятая, NUT
У меня еще есть proxmox на даче с несколькими ВМ и неплохо бы его выключать до того, как батарейка сядет полностью. Будем это делать через NUT используя скрипт, который опрашивает ESP.
Для определения низкого уровня заряда будем использовать предупреждение самого инвертора в переменной UPS warning, оно появляется где-то на уровне 23,4В при напряжении отключения инвертора 22,4В, это с запасом. В NUT еще будем отдавать SOC BMS и уже настроенную логику для UPS Grid Power Relay будем использовать как фактор перехода на батарею.
Все действия выполняются под root на сервере proxmox.
Сначала нужные пакеты
apt install nut jqСкрипт опроса ESPvi /usr/local/bin/esp-ups-monitor.sh
#!/bin/bash
ESP_IP="192.168.35.169" ###ИСПРАВИТЬ АДРЕС на СВОЙ
# Функция: получение поля "state" через jq
get_state() {
curl -s --max-time 2 "$1" | jq -r '.state'
}
# 1. Состояние реле: "ON" или "OFF"
RELAY_STATE=$(get_state "http://${ESP_IP}/switch/UPS%20Grid%20Power%20Relay")
# 2. Строка предупреждений (например, "Reserve;PV low voltage;Battery low voltage")
WARNING_STATE=$(get_state "http://${ESP_IP}/text_sensor/UPS%20warning")
# 3. Заряд батареи: приходит как "100 %", извлекаем только цифры
SOC_RAW=$(get_state "http://${ESP_IP}/sensor/BMS%20state%20of%20charge")
SOC=$(echo "$SOC_RAW" | grep -o '[0-9]\+')
# Защита от сбоя сети: если реле не ответило, выходим без изменения статуса
if [[ -z "$RELAY_STATE" || "$RELAY_STATE" == "null" || "$RELAY_STATE" == "unknown" ]]; then
exit 0
fi
# Базовый статус: ON = OL (сеть), OFF = OB (батарея)
if [[ "$RELAY_STATE" == "ON" ]]; then
STATUS="OL"
else
STATUS="OB"
fi
# Добавляем флаг LB, если в предупреждениях есть "Battery low voltage"
if [[ "$WARNING_STATE" == *"Battery low voltage"* ]]; then
STATUS="$STATUS LB"
fi
# Если заряд не распарсился, ставим безопасное значение
if [[ -z "$SOC" ]]; then
SOC="50"
fi
# Обновляем файл драйвера dummy-ups
cat << EOF > /etc/nut/esp-ups.def
ups.status: ${STATUS}
battery.charge: ${SOC}
EOF
# ВАЖНО: Восстанавливаем права, чтобы драйвер nut мог читать файл
chown root:nut /etc/nut/esp-ups.def
chmod 640 /etc/nut/esp-ups.def
# Если статус OB LB — инициируем завершение работы
if [[ "$STATUS" == *"OB"* && "$STATUS" == *"LB"* ]]; then
logger "NUT-MONITOR: Обнаружен статус OB LB (Battery low voltage). Инициация завершения работы (fsd)."
/usr/sbin/upsmon -c fsd
fi
Скрипт завершения работы всех ВМvi /usr/local/bin/proxmox-safe-shutdown.sh
#!/bin/bash
logger "NUT: Инициировано безопасное завершение работы (Low Battery)"
# 1. Отправляем команду штатного завершения работы всем запущенным ВМ
for vmid in $(qm list | awk 'NR>1 {print $1}'); do
if qm status $vmid | grep -q "running"; then
logger "NUT: Отправка shutdown для ВМ $vmid"
qm shutdown $vmid
fi
done
# 2. Ожидание 60 секунд для корректного завершения гостевых ОС
sleep 60
# 3. Принудительная остановка ВМ, которые не ответили на ACPI shutdown
for vmid in $(qm list | awk 'NR>1 {print $1}'); do
if qm status $vmid | grep -q "running"; then
logger "NUT: Принудительная остановка (qm stop) для ВМ $vmid"
qm stop $vmid
fi
done
# 4. Выключение самого хоста Proxmox
logger "NUT: Выключение хоста Proxmox"
/sbin/shutdown -h now
Дать права на запуск chmod +x /usr/local/bin/esp-ups-monitor.sh
chmod +x /usr/local/bin/proxmox-safe-shutdown.shСоздать пользователя для управления (в последствии под ним же подключаться с других машин к этому экземпляру NUT):/etc/nut/upsd.users
[upsmonitor]
# Пароль пользователя
password = UPSPASS
# Права пользователя на выполение системных действий, то есть выключения и т.д.
actions = SET
# Права на изменение доступных переменных ИБП с помощью команды upscmd
instcmds = ALL
# Использование этого пользователя как управляющего для NUT
upsmon master
Настроить сервис мониторинга (дописать в него):vi /etc/nut/upsmon.conf
LOWBATT 0 ##по факту не отслеживать SOC
MONITOR esp_solar@localhost 1 upsmonitor UPSPASS master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/usr/local/bin/proxmox-safe-shutdown.sh"
Настроить сам виртуальный UPSvi /etc/nut/ups.conf
[esp_solar]
driver = dummy-ups
port = /etc/nut/esp-ups.def
desc = "ESPHome Solar Inverter Anenji"
Включить листенер на внешнем порту, для подключения других серверов:vi /etc/nut/upsd.conf
LISTEN 0.0.0.0 3493выполнить скрипт опроса ESP и убедиться, что он работает:/usr/local/bin/esp-ups-monitor.sh
cat /etc/nut/esp-ups.def
ups.status: OL #вот тут будет OB если скрипт с ошибкой
battery.charge: 100 # вот тут будет 50 если скрипт с ошибкой вместо реального значения
Если скрипт работает, то запускаем службыsystemctl enable nut-server nut-monitor nut-driver@esp_solar
systemctl restart nut-server nut-monitor nut-driver@esp_solar
Проверяем логи служб на отсутствие ошибокjournalctl -u nut-* -fДобавляем задание на опрос ESP в крон:echo "* * * * * root /usr/local/bin/esp-ups-monitor.sh >/dev/null 2>&1" > /etc/cron.d/esp-ups-monitorПроверяем, что файлик раз в минуту обновляется:ls -l /etc/nut/esp-ups.defИ саму работу NUTupsc esp_solar@localhost
Init SSL without certificate database
battery.charge: 100
device.mfr: Dummy Manufacturer
device.model: Dummy UPS
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: dummy-ups
driver.parameter.mode: dummy
driver.parameter.pollinterval: 2
driver.parameter.port: /etc/nut/esp-ups.def
driver.parameter.synchronous: auto
driver.state: quiet
driver.version: 2.8.1
driver.version.internal: 0.18
ups.mfr: Dummy Manufacturer
ups.model: Dummy UPS
ups.status: OL
По факту настройка выполнена, можно сделать эмуляцию low battery и проверить, что все корректно выключается. Для этого просто записать в наш файлик:vi /etc/nut/esp-ups.def
ups.status: OB LB
battery.charge: 10
Home Assistant
Ну тут все просто до безобразия, т.к. фактически мы все необходимое уже сделали выше.
1. Подключаем ESP через штатную интеграцию ESP-Home;
2. Устанавливаем карточку для отображения параметров работы BMS через HACS или вручную из репозитория — github.com/Pho3niX90/jk-bms-card
и получаем вполне понятный и симпатичный интерфейс:
3. Настраиваем автоматизацию для оповещений. Мой вариант — прислать сообщение в телеграмм и проговорить голосом при переключении сеть/батарея и прислать только в телеграмм статус батареи раз в 15 мин и если она села, тригером для нее является все то же реле, что в случае с NUT.В реальной жизни это дублируется входящим звонком от контроллера котла, к которому подключен сухой контакт нашего ESP.
alias: UPS.Unified
description: Объединенные оповещения ИБП (Сеть/ИБП/Статус/Низкий заряд)
triggers:
- trigger: state
id: grid_relay
entity_id: switch.kotelnaia_anenji_4200w_ups_grid_power_relay
- trigger: state
id: warning_sensor
entity_id: sensor.kotelnaia_anenji_4200w_ups_warning
- trigger: time_pattern
id: periodic_status
minutes: /15
conditions:
- condition: template
value_template: |
{% if trigger.id in ['periodic_status', 'warning_sensor'] %}
{{ is_state('switch.kotelnaia_anenji_4200w_ups_grid_power_relay', 'off') }}
{% else %}
{{ true }}
{% endif %}
actions:
- action: notify.send_message
target:
device_id: fff200fc06caf9562323877c3432dedb
data:
title: |
{% if trigger.id == 'grid_relay' %}
{% if is_state('switch.kotelnaia_anenji_4200w_ups_grid_power_relay', 'on') %}Переход на питание от города.
{% else %}Переход на питание от ИБП.
{% endif %}
{% else %}
Питание от ИБП.
{% endif %}
message: >
{% if trigger.id == 'warning_sensor' and 'Battery low voltage' in
states('sensor.kotelnaia_anenji_4200w_ups_warning') %}НИЗКИЙ ЗАРЯД!!! {%
endif %}Заряд АКБ: {{
states('sensor.kotelnaia_anenji_4200w_bms_state_of_charge') }} %.
Нагрузка: {{
states('sensor.kotelnaia_anenji_4200w_ups_output_active_power') | float
| round(0) }} Вт. Напряжение АКБ: {{
states('sensor.kotelnaia_anenji_4200w_bms_total_voltage') | float |
round(1) }} В. Ток АКБ: {{
states('sensor.kotelnaia_anenji_4200w_bms_current') | float | round(1)
}} А. {% set runtime =
states('sensor.kotelnaia_anenji_4200w_ups_estimated_runtime') %} {% if
runtime not in ['Charging', 'unknown', 'unavailable', 'none', ''] %}
Оставшееся время: {{ runtime }}. {% endif %}
- if:
- condition: time
after: '09:00:00'
before: '23:00:00'
- condition: trigger
id:
- grid_relay
then:
- choose:
- conditions:
- condition: and
conditions:
- condition: switch.is_on
target:
entity_id: switch.kotelnaia_anenji_4200w_ups_grid_power_relay
options:
behavior: any
for: '00:00:00'
sequence:
- action: tts.google_translate_say
metadata: {}
data:
cache: false
entity_id: media_player.vlc_telnet
language: ru
message: Внимание! Переход на питание от города!
- conditions:
- condition: and
conditions:
- condition: switch.is_off
target:
entity_id: switch.kotelnaia_anenji_4200w_ups_grid_power_relay
options:
behavior: any
for: '00:00:00'
sequence:
- action: tts.google_translate_say
metadata: {}
data:
cache: false
entity_id: media_player.vlc_telnet
language: ru
message: Внимание! Переход на питание от батарей!
mode: single
Ну вот и все, статья получилась весьма объемной, но я постарался рассказать про всю цепочку. Пока писал — пришла мысли, что в ESP-home нужна кнопка reboot, которая дернет выход на 30 сек. Иначе комп удаленно уже не включить, если он выключился по низкой батареи, а свет включили до полного отключения инвертора. ))
свернутьразвернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии (0)
RSS
Самые обсуждаемые обзоры
| +118 |
3974
132
|
| +96 |
3442
36
|