Предисловие
Несколько лет назад, для резервного питания роутера и Orange Pi, я покупал ИБП Powercom WOW-700U. Хороший, дешёвый девайс, имеет USB порт, автоматически включается при появлении напряжения, не ест из розетки лишнего электричества, так как тип ИБП “резервный”, что очень хорошо, когда он должен быть включён 24/7, в отличии от моего основного ИБП1, который не прочь покушать ~50 Ватт из-за своей “интерактивной” технологии.
Время шло и Orange Pi сначала заменилась на мини-ПК на атоме, а потом и старый ПК стал сервером.
Но давайте перейдём уже к сути и самой настройке ИБП на Debian-like Linux!
Базовая настройка NUT
Для начала установим NUT:
|
|
Подключаем наш ИБП к ПК и посмотрим, как он определяется в системе:
|
|
Вот как выглядит вывод команды у меня:
|
|
Теперь необходимо сказать NUT, что у нас для него есть ИБП, для этого добавим в конец файла /etc/nut/ups.conf
|
|
Скопируем список udev правил, чтобы разрешить пользователю без прав root использовать данное USB устройство:
|
|
В моём случае, в правилах уже был прописан мой ИБП, но если вашего там нет, то просто добавляем в конец файла правило, заменив ID на свои, которые можно посмотреть в выводе команды lsusb
|
|
Перезапустим udev
|
|
Необходимо отключить и снова подключить USB кабель к ПК, чтобы правило применилось.
Переведём NUT в standalone mode, для этого отредактируем файл /etc/nut/nut.conf
и заменим стандартное значение на
|
|
Настроим сервер и создадим юзера, который сможет получать данные от ИБП
Заменим содержимое 2х файлов:
/etc/nut/upsd.conf
на
|
|
и /etc/nut/upsd.users
на
|
|
Я понимаю, что год Канонизации Святого Доминика Григорием IX 2 в качестве пароля, так себе идея, но дальше localhost к NUT не подключиться.
Настроим мониторинг ИБП, который будет выключать ПК при низком заряде батареи, для этого отредактируем файл /etc/nut/upsmon.conf
и добавим в него:
|
|
После этого запускаем сервисы
|
|
Проверяем, что всё хорошо с помощью upsc ups
(должен вывести информацию об ИБП).
Далее, сделаем, чтобы всё автоматически запускалось после рестарта:
|
|
Но вот с nut-driver
так сделать не получится, так как получим ошибку:
|
|
Казалось бы, может и не надо ему включать автозапуск? Но вот у меня без автозапуска драйвера не работает ¯\_(ツ)_/¯
.
Ошибку легко исправить, просто немного отредактируем сервис с помощью команды
|
|
и добавим:
|
|
Теперь можно включить автозапуск и ошибки не будет:
|
|
Полезные команды
Для отладки, могут быть полезны следующие команды:
|
|
Базовая настройка завершена
Вот так вот, “легко” и “просто”, можно настроить ИБП на Linux, который будет выключать комп при низком заряде батареи, процент указан в параметре battery.charge.low
ИБП.
В моём случае там установлено значение 10%, но ИБП отключается уже на 30% и поэтому ПК никогда не завершит работу успешно. Поэтому переходим к…
Немного продвинутая настройка
Я хочу, чтобы ИБП отключался через 2 минуты после того, как пропало электричество.
Для этого, сначала отредактируем файл /etc/nut/upsmon.conf
, добавив туда
|
|
Теперь, при пропаже/появление электричества, будет запускаться /usr/sbin/upssched
Обязательно проверьте с помощью команды which upssched
, что у вас такой же путь до upssched
, что и у меня.
Редактируем настройки upssched
в /etc/nut/upssched.conf
, изменяем/добавляем:
|
|
При пропаже электричества, будет запускаться таймер на 120 сек и по истечению времени, запускать скрипт /usr/bin/upssched-cmd
, а при появлении электричества, таймер будет останавливаться.
Создадим скрипт /usr/bin/upssched-cmd
со следующим содержанием:
|
|
Перезапускаем сервис мониторинга
|
|
Вы великолепны 🎉.