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

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

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

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

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

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

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

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

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

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

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

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

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


  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. 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. 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. 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