Ибп с автоматическим выключением и включением компьютера

Купить ИБП для домашнего сервера я собирался давно, но постоянно душила жаба. То есть, особой необходимости в нём не было, просто как-то не по-людски без бесперебойника. В конце-концов, купил дешёвый Ippon Backpower Pro 500 и уселся настраивать. Погуглив пару минут, решил, что официальные драйвера, написанные на java лохматого года выпуска, мне не нравятся и взялся прикручивать NUT.

Настроил. Заработало. Одно «но» — вражеский девайс упорно не желал выключать питание с нагрузки.

То есть, схема задумывалась следующая:

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

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

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

    • n — время до выключения ИБП с момента подачи команды.
    • m — время до включения ИБП с момента подачи команды. Если m минут уже истекло, а питание для ИБП всё ещё не подаётся, ИБП ждёт появления напряжение в сети и тогда включается.
    • Для n диапазон значений может быть либо <.1 — .9>(десятые доли минуты), либо <01-10>(целые минуты).
    • Для m диапазон значений — <0001-9999>(целые минуты).

    Всё в минутах, заметьте. Мой конкретный экземпляр Ippon Backpower Pro 500 воспринимает первое значение как часы. Брак ли это, или так задумано, чтоб враги не догадались — не знаю. Таким образом, минимальный интервал времени, который я могу указать для выключения ИБП, составляет 6 минут вместо 6-ти секунд. Не зная этой особенности, я вводил значения для выключения около 2-3 минут, а иппонец преданно намеревался ждать 2-3 часа перед тем, как уйти в ждущий режим.

    Далее приведу мои конфиги для настройки выключения ИБП через минимальное время (6 минут) после разряда батареи. NUT позволяет следить за целыми сетями бесперебойников, но у меня конфиг простенький:

    [ippon]
    driver = blazer_usb
    port = auto
    desc = "Ippon IBP"
    default.battery.voltage.high = 13.60
    default.battery.voltage.low = 10.60
    offdelay = 6
    ondelay = 7

    Значения default.battery.voltage.high и default.battery.voltage.low служат для вычисления примерного заряда батареи в процентах. Также при снижении напряжения до уровня default.battery.voltage.low запускается скрипт выключения системы. На других ИБП значения могут отличаться. Можете их сначала не указывать, а добавить после замера напряжения при полном заряде ИБП и незадолго до его разряда. Значения можно получить командой upsc . Имя указано в начале секции в квадратных скобках (у меня ippon ).

    /etc/nut/upsd.conf — у меня этот файл пуст, все настройки по умолчанию.

    [admin]
    password = mypass
    upsmon master
    actions = SET
    instcmds = ALL

    В этом файле устанавливаются права для различных пользователей. У меня только один пользователь с полными правами.

    RUN_AS_USER nut
    MONITOR ippon@localhost 1 admin mypass master
    MINSUPPLIES 1
    SHUTDOWNCMD "/sbin/shutdown -Ph +0"
    POLLFREQ 5
    POLLFREQALERT 5
    HOSTSYNC 15
    DEADTIME 15
    POWERDOWNFLAG /etc/killpower
    RBWARNTIME 43200
    NOCOMMWARNTIME 300
    FINALDELAY 5

    Здесь настраиваются параметры слежения за ИБП и завершения работы. В этом файле нужно обратить внимание на значения MONITOR (где указано, за какими ИБП будет следить демон) и SHUTDOWNCMD (команда для завершения работы).

    Поскольку в конфигах содержатся пароли для управления ИБП, права на их чтение следует выделить только руту и группе nut.

    На этом всё, при исчезновении напряжения в сети, компьютер проработает некоторое время (у меня headless-машинка на двухядерном AMD с парой винтов работает около получаса), потом выключится сам, а через 6 минут выключится и бесперебойник. При появлении питания ИБП включится и подаст питание на нагрузку. Правда, у меня есть нехорошее подозрение, что если питание появится в интервале между выключением компа и выключением ИБП, весь этот план рухнет, но здесь ничего не поделаешь. Разве что купить бесперебойник покруче и подороже.

    Купить ИБП для домашнего сервера я собирался давно, но постоянно душила жаба. То есть, особой необходимости в нём не было, просто как-то не по-людски без бесперебойника. В конце-концов, купил дешёвый Ippon Backpower Pro 500 и уселся настраивать. Погуглив пару минут, решил, что официальные драйвера, написанные на java лохматого года выпуска, мне не нравятся и взялся прикручивать NUT.

    Настроил. Заработало. Одно «но» — вражеский девайс упорно не желал выключать питание с нагрузки.

    То есть, схема задумывалась следующая:

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

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

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

    • n — время до выключения ИБП с момента подачи команды.
    • m — время до включения ИБП с момента подачи команды. Если m минут уже истекло, а питание для ИБП всё ещё не подаётся, ИБП ждёт появления напряжение в сети и тогда включается.
    • Для n диапазон значений может быть либо <.1 — .9>(десятые доли минуты), либо <01-10>(целые минуты).
    • Для m диапазон значений — <0001-9999>(целые минуты).

    Всё в минутах, заметьте. Мой конкретный экземпляр Ippon Backpower Pro 500 воспринимает первое значение как часы. Брак ли это, или так задумано, чтоб враги не догадались — не знаю. Таким образом, минимальный интервал времени, который я могу указать для выключения ИБП, составляет 6 минут вместо 6-ти секунд. Не зная этой особенности, я вводил значения для выключения около 2-3 минут, а иппонец преданно намеревался ждать 2-3 часа перед тем, как уйти в ждущий режим.

    Далее приведу мои конфиги для настройки выключения ИБП через минимальное время (6 минут) после разряда батареи. NUT позволяет следить за целыми сетями бесперебойников, но у меня конфиг простенький:

    [ippon]
    driver = blazer_usb
    port = auto
    desc = "Ippon IBP"
    default.battery.voltage.high = 13.60
    default.battery.voltage.low = 10.60
    offdelay = 6
    ondelay = 7

    Значения default.battery.voltage.high и default.battery.voltage.low служат для вычисления примерного заряда батареи в процентах. Также при снижении напряжения до уровня default.battery.voltage.low запускается скрипт выключения системы. На других ИБП значения могут отличаться. Можете их сначала не указывать, а добавить после замера напряжения при полном заряде ИБП и незадолго до его разряда. Значения можно получить командой upsc . Имя указано в начале секции в квадратных скобках (у меня ippon ).

    /etc/nut/upsd.conf — у меня этот файл пуст, все настройки по умолчанию.

    [admin]
    password = mypass
    upsmon master
    actions = SET
    instcmds = ALL

    В этом файле устанавливаются права для различных пользователей. У меня только один пользователь с полными правами.

    RUN_AS_USER nut
    MONITOR ippon@localhost 1 admin mypass master
    MINSUPPLIES 1
    SHUTDOWNCMD "/sbin/shutdown -Ph +0"
    POLLFREQ 5
    POLLFREQALERT 5
    HOSTSYNC 15
    DEADTIME 15
    POWERDOWNFLAG /etc/killpower
    RBWARNTIME 43200
    NOCOMMWARNTIME 300
    FINALDELAY 5

    Здесь настраиваются параметры слежения за ИБП и завершения работы. В этом файле нужно обратить внимание на значения MONITOR (где указано, за какими ИБП будет следить демон) и SHUTDOWNCMD (команда для завершения работы).

    Поскольку в конфигах содержатся пароли для управления ИБП, права на их чтение следует выделить только руту и группе nut.

    На этом всё, при исчезновении напряжения в сети, компьютер проработает некоторое время (у меня headless-машинка на двухядерном AMD с парой винтов работает около получаса), потом выключится сам, а через 6 минут выключится и бесперебойник. При появлении питания ИБП включится и подаст питание на нагрузку. Правда, у меня есть нехорошее подозрение, что если питание появится в интервале между выключением компа и выключением ИБП, весь этот план рухнет, но здесь ничего не поделаешь. Разве что купить бесперебойник покруче и подороже.

    Некоторые модели источников бесперебойного питания (ИБП) не оснащены системой автоматического включения после полного разряда аккумуляторной батареи и возобновления питания сетевым напряжением. Иногда это критично, особенно для удалённого оборудования.

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

    Основные характеристики устройства:

    • питание от сетевого напряжения;
    • гальваническая развязка от схемы ИБП;
    • защита от ложных срабатываний;
    • задержка включения ИБП при подаче питания.

    Функционирует устройство следующим образом: переменное сетевое напряжение ограничивается по амплитуде и силе тока цепью C1,VD1,R1, выпрямляется диодным мостом VD2 и поступает на транзистор оптрона U1, который находится в запертом состоянии, если напряжение с выхода ИБП отсутствует. Это обстоятельство переводит выход 3 логического элемента DA1.1 в состояние 1. Интегрирующая цепочка R5-C5 создаёт задержку, приблизительно в 4 секунды, прежде чем логическая единица поступит на вход инвертора DA1.2. Через 4 секунды, после подачи сетевого напряжения, на выходе 4 инвертора DA1.2 установится логический ноль. Логический ноль поступает на вход укорачивающего одновибратора, собранного на элементах DA1.3-DA1.4 и запускает его. Данный одновибратор при наличии на входе бесконечно длительного логического уровня 0, на выходе выдаёт единицу лишь на определённое время, которое зависит от цепочки R7-C6. С указанными номиналами этой цепочки, единица на выходе 11 будет установлена на 0.6 сек. На это время транзистор VT1 откроется и реле Rel1 замкнёт контакты кнопки включения ИБП.

    Таким образом, в момент включения устройства, через 4 секунды на 0.6 секунды «нажимается» кнопка включения/выключения питания ИБП.

    Ибп с автоматическим выключением и включением компьютера

    Работающий ИБП выдаёт переменное напряжение для питания аппаратуры. Также к выходу ИБП, через однополупериодный выпрямитель VD3 и ограничитель тока на R2 подключен светодиод оптрона U1, который открывает транзистор и на входе 2 DA1.1 устанавливается логическая единица. На выходе 3 при этом устанавливается логический 0. И, через несколько секунд, на выходе 4 инвертора DA1.2 установится единица, которая не даст запуститься одновибратору.

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

    Рассмотрим момент, когда аккумулятор ИБП не успел разрядиться и сетевое напряжение восстановилось. В этом случае устройство получило питание, на выходе 4 DA1.2 мгновенно устанавливается единица, т.к. конденсатор C5 разряжен, транзистор оптопары открыт, на входе 2 DA1.1 логическая единица, на выходе 3 – ноль. Конденсатор С5 уже не зарядится, запуск одновибратора запрещён, реле не срабатывает.

    Ибп с автоматическим выключением и включением компьютера

    Обращаю внимание, что порядок выключения ИБП изменится: после выключения ИБП необходимо его полностью обесточить (вынуть вилку с розетки). Иначе, через 4 секунды он снова включится.

    Некоторые пояснения по схеме: Х1 – подключается по высоковольтному входу ИБП, Х2 – подключается к высоковольтному выходу ИБП, Х3 – подключается параллельно контактов кнопки включения/выключения ИБП. Диод VD3 защищает светодиод оптрона от высокого обратного напряжения. Диод VD4 замыкает ток самоиндукции катушки реле. Рисунок печатной платы прилагается. Реле – малогабаритное, разводку на плате подкорректируйте в соответствии с его корпусом.

    Ибп с автоматическим выключением и включением компьютера

    Устройство содержит одну микросхему с четырьмя элементами «2ИЛИ-НЕ». На рисунке таблица истинности одного элемента

    Источник

    Добавить комментарий

    Related Post