Среди ИТ специалистов ходит анекдот, что системные администраторы делятся на 10 категории, на тех кто пока не делает бэкап, и на тех, кто уже делает резервное копирование данных. А так как самой частой причиной отказов в ЦОДах является – сбой электропитания, то обеспечение надежного электрического питания для компьютера (да и для любой другой цифровой техники) является наиглавнейшей задачей.

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

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

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

Некоторое время настрадавшись с подключением UPS по USB с помощью проприетарных программ, я решил разобраться с данной проблемой кардинально - сделать простенький контроллер состояния батареи источника бесперебойного питания со стандартным протоколом связи ИБП, который бы подошел для любого типа и модели источника бесперебойного питания при использования дома или в небольшом офисе.

Минусы такого решения (установки дополнительной платы контролера на АКБ) - её нужно делать самостоятельно или покупать уже готовую, а потом вручную устанавливать в каждый ИБП.

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

Изначально я хотел найти уже готовое решение для дистанционного контроля ИБП с помощью какой нибудь малинки. И хотя идея Open Source очень привлекательна, а уж Open Source Hardware и подавно, но всё имеет свою цену. И за открытое железо обычно приходится платить определенной сложностью его изготовления и эксплуатации. А уже если речь идет о самостоятельной сборке электронной платы, то о простоте и дешевизне итогового решения говорить уже не приходится.

Поэтому, так и не найдя устраивающее меня готовое решение, я решил сделать максимально простое и дешевое устройство (в пределах 1-2 тыс.рублей), которое можно было бы подключить к любому источнику бесперебойного питания (точнее к его АКБ). Конечно, при подключении контроллера к клеммам АКБ не будет некоторой информации (например, напряжения питающей сети), но это и не важно, так как основной целью устройства является в первую очередь контроль состояния АКБ и такого подключения вполне достаточно для определения режима работы источника бесперебойного питания (от сети, от АКБ), уровня заряда аккумулятора, статистики работы и т.д.

Первоначально качестве линии связи я хотел использовать RS485 (он более надежный и расстояние значительно больше, чем у USB, а по одной линии связи может работать сразу несколько устройств одновременно), но в конечном итоге решил сделать все максимально просто и дешевле, оставив классический USB, просто добавив к нему еще Bluetooth и WiFi.

Вопрос к читателям Хабра

Сейчас я собрал прототип контроллера в виде макетной платы для отладки схемотехники и прошивки, но в дальнейшем планирую сделать его в виде отдельной платы. Но так как прототипы плат с монтажом компонентов в Китае приходится оформлять через посредников (монтаж компонентов при заказе из России не делают), из-за чего и стоимость изготовления 2-3 палат выходит просто космическая, то передо мной стоит выбор, либо делать пару плат для собственного использования навесным монтажом или утюжным способом или с кем нибудь скооперироваться, чтобы разделить затраты на изготовление контроллеров заводским способом (будет имееть смысл, если наберется хотя бы десяток желающих).

Комментарии (42)


  1. nbkgroup
    08.06.2025 11:36

    Может, просто заменить свинцово-кислотную батарею на LiFePo4?


    1. rsashka Автор
      08.06.2025 11:36

      В принципе можно, но итоговая стоимость такого решения будет значительно дороже. Ведь такая батарея довольно дорогая и к ней потребуется отдельный контролер заряда (ведь зарядка UPSа рассчитана обычную АКБ)

      И все это никак не убирает изначальную проблему - удаленный контроль состояния АКБ в ИБП.


      1. Merkt007
        08.06.2025 11:36

        Но ведь если аккум сам по себе фиговый, его мониторинг мало что даст.


      1. powerman
        08.06.2025 11:36

        Я сегодня подключил новую LiFePO₄ вместо предыдущей AGM батареи. И, надо признать, с точки зрения юзабилити - это был почти что шок! Единственная особенность AGM/GEL батарей в плане юзабилити - это немного пугающе громкие хлопки с искрами в момент подключения второй клеммы. Моя батарея LiFePO₄ в этом плане отличается принципиально:
        - На ней есть кнопка включения! Так что хлопков и искр при подключении удалось избежать.
        - Когда батарея включена - кнопка включения подсвечивается!
        - На ней есть LCD индикатор! (На котором ещё пара кнопок, с которыми я пока не разбирался.)
        - У неё есть Bluetooth и приложение для смартфона:

        Да, LiFePO₄ действительно примерно на 25% дороже AGM/GEL, но учитывая разницу в их характеристиках и сроке службы покупать AGM/GEL есть смысл либо если это последние деньги и больше нет (что при покупке аккумулятора для UPS маловероятно - это не жизненно необходимый товар), либо если это массовые закупки в серверную/ДЦ и экономия в 25% сейчас на таких масштабах для компании намного важнее любых возможных преимуществ и экономии которые станут ощутимы через несколько лет.


        1. sim2q
          08.06.2025 11:36

          LiFePO₄ действительно примерно на 25% дороже AGM/GEL,

          нолик забыли?

          Так что хлопков и искр при подключении удалось избежать.

          Небольшой резистор для начальной зарядки ёмкостей в UPS решает, надо то всего раз...

          Но в целом согласен, менять надо. Сам со свинцом намаялся. Акк стоят чуть недозаряженными. В отдельном вентилируемом отсеке, в режим баттарей переходит очень редко и не на долго и.... всё равно сульфатация.


          1. powerman
            08.06.2025 11:36

            нолик забыли?

            Откуда там нолик? Может если сравнивать с автомобильными кислотными, но здесь речь об UPS в комнате и необслуживаемых типа-герметичных AGM/GEL. Первые попавшиеся цены на 100 Ah: LiFePO₄=$313, AGM=$250.


        1. powerman
          08.06.2025 11:36

          У меня в личке уже несколько человек спросили о какой конкретно модели шла речь, так что я всё-таки оставлю ссылку прямо здесь: Аккумулятор LP LiFePO4 12,8V - 100 Ah (1280Wh) (BMS 100A/50А) пластик LCD Smart BT.


        1. haga777
          08.06.2025 11:36

          А каким образом с телефоном контролируется?


  1. m0xf
    08.06.2025 11:36

    Нормальные ИБП работают по USB без установки дополнительного ПО и драйверов. Сразу после подключения системном трее появляется значёк батареи с процентом заряда, как на ноутбуках.


    1. rsashka Автор
      08.06.2025 11:36

      Согласен, что нормальные ИБП именно так и должны делать.
      Вот только где найти такой нормальный и не дорогой ИБП с поддержкой Linux?


      1. l0ser140
        08.06.2025 11:36

        В nuts поддержка самых странных протоколов есть. А если нет - можно бросить силы на из поддержку.


        1. rsashka Автор
          08.06.2025 11:36

          Кроме "поддержки" еще есть проблема в актуальных данных.


      1. mano2020
        08.06.2025 11:36

        У вас немного неправильно поставлен вопрос, не ИБП поддерживает Linux, а Linux поддерживает ИБП - в проекте nut https://networkupstools.org/

        уже прописаны протоколы для всех основных производителей ИБП. Всё, что ИБП отдает по USB - можно любым способом обрабатывать.
        В серьезных серверных ИБП есть либо слоты для карточек SNMP, либо уже встроены такие карточки.

        Поэтому вы с чистой совестью можете брать любой компьютер с Linux, подключать к нему ИБП через USB и всё нужное посмотреть, передать, обработать, графики нарисовать.


        Так сказать - всё придумано до нас.

        (чтобы не быть голословным - буквально вчера подсоединял ИБП Powercom к NAS Netgear - обоим примерно по десять лет, потратил часа два на изучение вопроса и никак не мог понять почему практически нет информации о том, как нужно сплясать чтобы всё заработало - оказалось что нужно просто вставить провод USB и.... всё! - ИБП определился, оставалось только выбрать уровень заряда аккумулятора, при котором NAS должен штатно завершить работу в случае отключении электросети - nut в Netgear-овский Linux встроен по умолчанию. Нет, совсем без танцев не обошлось - при холодном старте NAS ИБП не определялся, при передергивании провода - определялся, но это проблема алгоритма работы USB портов в NAS - еще пару часов поиска почему такое происходит, по результату написал скрипт на две строчки, который через минуту после загрузки передергивал порт USB - если бы я купил не Powercom, а, например, APC - такого бы не было (поддержка APC в Netgear заявлена)


        Но в качестве тренировки - почему нет? Платы, кстати, в Китае собирают и шлют - только через посредника в Китае, информации достаточно как это сделать.

        И сисадмины делятся не на 10, а на 11 категорий - вы забыли тех, кто бэкапы потом проверяет на возможность из них развернуть систему.


  1. slog2
    08.06.2025 11:36

    Идея то хорошая. И меня посещала. У меня не ИБП, а некий электротранспорт, в котором 5 батарей 12в 55а*ч последовательно и не плохо бы каждую из них контролировать. Только вы ничего не сообщили кроме того что есть некий прототип. У меня нет проблем разработать, заказать и спаять платы. И стоимость совсем не космическая. Если бы я делал какой-то вольтметр с BLE для одной батареи, то по себестоимости будет не дороже 500руб.


    1. rsashka Автор
      08.06.2025 11:36

      то по себестоимости будет не дороже 500руб.

      В пятьсот рублей у меня никак не влезает: IOT модуль + преобразователь питания (12-24В до 5-7В) + токовый шунт 75мВ + 4 резистора для делителей напряжения + датчик температуры ds18b20. Это минимум без платы и без монтажа.


      1. slog2
        08.06.2025 11:36

        Не надо никакой IOT модуль, надо дешевый BLE модуль + дешевый процик за 20 рублей. Питание 12-24 -> 3,3v это 20-30 рублей. А надо ли ток контролировать? Может напряжения достаточно. ds18b20 дорого и оригинальный не найти. С частью которая будет измерять я проблем не вижу. А кто будет это всё собирать и показывать?


        1. Ivanii
          08.06.2025 11:36

          ESP32 + INA3221+ шунт(для тяговых можно перемычку шунтом использовать) + MP2315(до 20 В) + немного рассыпухи. DS18B20 можно взять производства UMW https://www.chipdip.ru/product/ds18b20-umw


          1. rsashka Автор
            08.06.2025 11:36

            Именно так я и делаю.


            1. Ivanii
              08.06.2025 11:36

              DC-DC 40 р., INA3221 80 р., ESP32 150 р., DS18B20 60 р., Шунт 10 р. = 340 р.


              1. slog2
                08.06.2025 11:36

                INA3221 80 р

                Где она по 80р ? И зачем 3 канала?


                1. Ivanii
                  08.06.2025 11:36

                  https://aliexpress.ru/item/32828796768.html Первая что была под руками, лишнее не используйте.

                  https://aliexpress.ru/item/1005006043407096.html Докучи.


                  1. slog2
                    08.06.2025 11:36

                    100% чип перемаркирован. Как и почти все ходовые чипы на алике.


              1. xSVPx
                08.06.2025 11:36

                INA3221 - я так понимаю только для измерения напряжения. Чем бы ток мерять ? Можно на обычных шунтах 75мОМ, но они огромные и что-то у меня +-лапоть получаются результаты :(


                1. Ivanii
                  08.06.2025 11:36

                  На токи 1 - 2 А я чтото типа таких https://aliexpress.ru/item/1005002890367177.html?sku_id=12000022640017222 использовал совместно с INA3221 делая стенд для обмеров плат MP2315.


                  1. xSVPx
                    08.06.2025 11:36

                    Какой 1-2А? У батареи десятки А ток :(((. При 12В и условной мощности в 360вт получаем 30А...


                    1. Ivanii
                      08.06.2025 11:36

                      Кроме 50 мОм там есть 1 - 2 - 2,5 и 3 мОм шунты, 1 мОм при 30 А даст 30 мВ и 1 Вт рассеиваемой мощи.


                      1. xSVPx
                        08.06.2025 11:36

                        Ну я примерно таким и пользуюсь, стандартный шунт дает 75мВ на ХА, в моем случае на 100А. Но что-то загоняя в ацп получаю мягко говоря не слишком точные результаты. (десятки процентов разбега). Вероятно нужны дополнительные усилия, четырехпроводная схема может или еще что.... Поди наводки от 50гц есть уже с такими напряжениями.

                        ЗЫ. Вижу что описался с мОм. Шунты на 75мВ именно.


        1. rsashka Автор
          08.06.2025 11:36

          дешевый BLE модуль + дешевый процик за 20 рублей

          для которых еще нужна обвязка MCU + разъем и обвязка для USB (у самых дешевых микроконтроллеров поддержки USB может и не быть) + обязательно плата (навесным монтажом проводки к ножкам не припаяешь).

          В итоге все это выйдет гораздо дороже и сложнее какого нибудь ESP32 с уже рабочим USB и встроенными WiFi и Bluetooth


          1. slog2
            08.06.2025 11:36

            Плата в любом случае нужна. Или вас устроит колхоз из китайских модулей на проводках и соплях? Меня сопли в принципе не устраивают, наигрался в детстве. Зачем USB и WiFi в батарее? ESP32 кушает слишком много.


            1. xSVPx
              08.06.2025 11:36

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


  1. VBKesha
    08.06.2025 11:36

    Для дома смысла маловато. Потери не те. Ну потераяешь 1-2 часа работы, максимум. А на серьезном оборудовании стоят другие решения.

    PS. С другой стороны рано или поздно многих посещается идея своего бесперебойника.


    1. rsashka Автор
      08.06.2025 11:36

      Ну потераяешь 1-2 часа работы, максимум.

      С точки зрения потери данных, потерь вообще не будет, так как я дома работаю на ноутбуке, только с внешним монитором и клавиатурой.

      Тут больше защита от скачков напряжения при продолжении работы при отсутствии питания.


      1. alexkuzko
        08.06.2025 11:36

        А можно поставить АВР и переключать назад на сеть если упал ИБП. Не для всех сценариев (если основная сеть ещё не работает, но зато если на ИБП в целом работает что-то постоянно, то так можно тестировать без боязни потерять питание на нагрузке)...


  1. VT100
    08.06.2025 11:36

    Показометр напряжения на аккумуляторе - почти ничего не даст. Дохлая батарея с повышенным внутренним сопротивлением (например - выкипание) - даст то же самое напряжение (на которое настроен блок заряда), но не выдержит и десятка мс.

    Даже если делать параллельно контроль тока и, перемножая между собой и со временем, получать реальные кулоны - остаётся вопрос о граничных условиях. Заряд с N1 до N2 вольт током Inom за время T при температуре t - это норма или потеря ёмкости? А если потеря, то скольких процентов? А "новая" батарея, пролежавшая год на складе - насколько "новая"? Решение вопроса потянет на полноценный НИР с погружением в тематику, поиском информации и опытами.

    Без возможности переключения на аккумуляторы для теста - любая "нашлёпка" немного стоит. Отсюда - желательность разбора вендорских протоколов (которые часто являются просто дискретными сигналами на линиях "чего-то, похожего на COM-порт") и неверность опроса. Надо спрашивать не "Защищаетесь ли Вы", а "Чем Вы защищаетесь". Как вариант - "нашлёпка" могла бы подавать сигнал на принудительное переключение внутрь схемы UPS. Но это - сузит круг последователей.

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


    1. rsashka Автор
      08.06.2025 11:36

      Даже если делать параллельно контроль тока

      Именно контроль тока на шунте. В этом случае можно будет и емкость/заряд подсчитать и ручную корректировку настроить при необходимости.

      Без возможности переключения на аккумуляторы для теста - любая "нашлёпка" немного стоит.

      Для этого нужен контроль входного напряжения, но вот это делать как раз и не хочется.

      Беспроводной интерфейс для стационарного прибора и

      Беспроводные интерфейсы идут в комплекте, тогда как основной это USB


    1. sim2q
      08.06.2025 11:36

      Дохлая батарея с повышенным внутренним сопротивлением

      А если "шатать" напряжение заряда и смотреть за током, получим ли хотя бы примерное внутреннее сопротивление или там всё слишком сложно для какой бы то ни было экстраполяции?
      У меня в UPS кстати есть место на плате для управления напряжением заряда и ещё какими-то манипуляциями вокруг зарядки, но детали не распаяны.


      1. VT100
        08.06.2025 11:36

        Наверное - да. Линейно ли оно в зависимости от тока и надо ли вводить поправку? Рабочий ток разряда предполагаю, как минимум, на порядок большим зарядного.


  1. Int_13h
    08.06.2025 11:36

    Я вас обрадую. Дешманские ИБП ("офисные", оффлайн) выдают на заряд неизвестно что неизвестно каких форм, ограниченное только напряжением, греют АКБ до 40 градусов греющимся трансформатором (если он есть, ссейчас вообще стали делать миниатюрные ИБП в размерах чуть больше сетевого фильтра с кучей импульсных преобразователей). Дорогие "онлайн" (если не брендовые АРС) тоже выдают на заряд неизвестно что: сказано в мануалах, что заряжать надо 13.75В/АКБ, но зарядник выдает абсолютно некалиброванное напряжение, в зависимости от разбега компонентов, к тому же замеряет его на своем выходе, а дальше еще диод ставят, предохранители/клеммы/провода, отбирают часть напряжения на собственные нужды (вторичный блок питания). В настройках "умный" заряд - по факту его нет, в лучшем случае отключается зарядник (плавающий заряд) - но в куче моделей программисты забыли добавить это отключение. Темокомпенсация? Забудьте, там даже датчика температуры нет.

    Термокомпенсация с мониторингом состояния АКБ начинается в трехфазке (ка минимум по входу 3 фазы) и на массивах батарей 18.....48 штук последовательно. Но опять же включена термокомпенсация, допустим 0.03В/градус на банку, датчик температуры, все дела, а отклонение напряжения на цепи АКБ может быть до 5...10 Вольт - цепи измерения неоткалиброваны и не калибруются (привет, хуавей и его отечественные копии) - фтопку термокомпенсацию!

    Так что если и делать мониторинг, то добавлять и балансировку - а такое уже придумано (криво-косо и вендорозависимо, но есть).


    1. xSVPx
      08.06.2025 11:36

      Вот кстати для понимания всего этого, измерение напряжения, тока и температуры были бы нелишними ...


  1. moroz69off
    08.06.2025 11:36

    ИБП простенький, 20 аккум*12 вольт (+120 и -120). Есть контроль состояния и калибровка состояния.
    RS-485 витой парой примерно 7-8 метров.
    Да, нудно нужно ПО от производителя ИБП, но это не точно (просто мне так удобно).
    DSP MULTIPOWER online ИБП 20кВА


  1. lonelymyp
    08.06.2025 11:36

    Свинцовые батареи стабильно дохнут и требуют регулярной замены, наличие мониторинга не решает проблему, а лишь позволяет производить их замену вовремя.

    Простенькая лифепо батарея отечественного производителя из Екатеринбурга для простенького домашнего ИБП стоит как 3-4 обычных обычных свинцовых, имеет срок службы 10 лет, при этом мониторинг ей вообще не требуется


    1. xSVPx
      08.06.2025 11:36

      Мониторинг не требуется только такому оборудованию, неработа которого вас не беспокоит.

      Нормальная батарея собранная из ячеек по-хорошему должна мониторится на уровне каждой ячейки...