Настройка ИБП на примере Ippon Back Power Pro 800

Аватар пользователя DA

За основу взята эта статья, которая была переработана для openSUSE.

Если, устройство подключается через USB, вбейте в терминале lsusb до и после подключения, чтобы выявить идентификаторы устройства. Например, из строки
"Bus 002 Device 005: ID 0665:5161 Cypress Semiconductor USB to Serial"
можно узнать, что VendorID = 0665 и ProductID = 5161.

1. Установка

Далее установим NUT: sudo zypper in nut

2. Настройка правил UDEV

После этого создаем файл (в случае USB подключения ИБП) в /lib/udev/rules.d/52-nut-usbips.rules со следующим содержанием:

# Ippon Back Power Pro 800
ATTR{idVendor}=="Ваш_VendorID", ATTR{idProduct}=="Ваш_ProductID", MODE="664", GROUP="nut"

Если ваш ИБП использует для подключения RS232 (аля COM-порт), то создаем файл /lib/udev/rules.d/52_nut-serialups.rules содержащий:

# Ippon Back Power Pro 800
KERNEL=="ttyS0", GROUP="nut"

где ttyS0 — номер COM-порта к которому подключен ИБП (в данном случае COM1)

Далее для USB достаточно вынуть разъем из порта и снова воткнуть. А для COM-порта выполнить следующие команды или перезагрузить систему:

sudo udevadm control --reload_rules
sudo udevadm control trigger

3. Настройка NUT

NUT может управлять множеством ИБП в сети, но мы будем использовать простую конфигурацию для 1 компьютера. Для этого в файле /etc/nut/nut.conf выставим соответствующий режим:

MODE=standalone

В файле /etc/ups/ups.conf укажем параметры подключения к нашему ИБП:

[ippon-bpp-800]
driver = blazer_ser
port = /dev/ttyS0
desc = "Ippon Back Power Pro 800"
default.battery.voltage.high = 13.60
default.battery.voltage.low = 10.60
offdelay = 6
ondelay = 7

где

  • [ippon-800] — имя нашего ИБП в системе NUT, оно может быть любым;
  • driver — название драйвера для подключения к ИБП, смотрим его тут, для моего ИБП — blazer_ser;
  • port — имя файла порта, для USB можно просто "auto", для COM1-порта "/dev/ttyS0"
  • desc — комментарий;
  • default.battery.voltage.high — максимальное напряжение батареи при полном заряде, необходимо для расчета остаточного заряда батареи;
  • default.battery.voltage.low — минимальное напряжение батареи при полном разряде;
  • offdelay — команда ИБП перейти в режим ожидания через 6 минут

Далее в файле /etc/ups/upsd.conf мы пропишем контроль доступа:

ACL all 0.0.0.0/0
ACL localnet 192.168.1.0/24
ACL localhost 127.0.0.1/32
ACCEPT localhost localnet
REJECT all

Здесь мы разрешили подключение к службе для локального компьютера и локальной сети, и отвергли всех остальных. Кстати по умолчанию NUT слушает все интерфейсы по 3493 порту.

Далее заводим пользователей, которые могут контролировать ИБП в файле /etc/ups/upsd.users:

[имя_пользователя]
password = пароль_пользователя
allowfrom = localhost
upsmon master
actions = SET
instcmds = ALL

где

  • allowfrom — параметр определяющий источник подключения;
  • upsmon master — параметр дающий права на управление ИБП.

И последнее, осталось настроить службу мониторинга в файле /etc/ups/upsmon.conf для чего достаточно найти в начале конфига похожую строку и привести её к такому виду:

MONITOR имя_ибп@localhost 1 имя_пользователя пароль_пользователя master

Все. Теперь включив систему NUT командой:

sudo systemctl restart upsd.service

можно запросить статус ИБП командой:

upsc имя_ибп

в ответ вам система выдать примерно следующее:

battery.charge: 100
battery.voltage: 13.60
battery.voltage.high: 13.60
battery.voltage.low: 10.60
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_usb
driver.parameter.offdelay: 6
driver.parameter.ondelay: 7
driver.parameter.pollinterval: 2
driver.parameter.port: auto
input.current.nominal: 3.0
input.frequency: 49.9
input.frequency.nominal: 50
input.voltage: 246.0
input.voltage.fault: 246.0
input.voltage.nominal: 220
output.voltage: 209.5
ups.delay.shutdown: 6
ups.delay.start: 420
ups.load: 41
ups.productid: 5161
ups.status: OL TRIM
ups.temperature: 25.0
ups.type: offline / line interactive

Включить автоматический запуск службы можно так:

sudo systemctl enable upsd.service

Далее, если хочется смотреть в графике, можно установить knutclient:

sudo zypper in knutclient

После установки knutclient надо сконфигурировать
Setting -> Configure KNutClient -> UPS -> Add.
Здесь пишем

  • Имя — понятное вам имя ИБП;
  • UPS адрес — имя машины с ИБП (в данном случае localhost);
  • UPS имя — название ИБП в системе NUT;
  • Имя пользователя — пользователь в системе NUT;
  • Пароль — его пароль.

Далее выбираем необходимые вам переменные или их все (те что ИБП не поддерживает, просто не будут отображаться) и нажимаем ОК.

И немного отсебятины.

  • Парсинг температуры в терминале:
    upsc ippon-bpp-800 | grep temperature | awk '{print $2}'
  • Парсинг уровня зарядки:
    upsc ippon-bpp-800 | grep charge | awk '{print $2}'
  • Строка конфига conky:
    Ippon Back Power Pro 800 заряжен на ${exec upsc ippon-bpp-800 | grep charge | awk '{print $2}'}% T=${exec upsc ippon-bpp-800 | grep temperature | awk '{print $2}'}