Я давно использую Linux в качестве основной системы на своем десктопе, а поскольку все *nix'ы очень не любят спонтанные отключения питания (в отличии от местных электриков), то с начала года в доме давно тихо мирно живет ИБП Ippon Back Power Pro 800.
Но прикрутить его к Linux так руки и не доходили. И вот на днях я все-таки решился. А чтобы не забыть в очередной раз алгоритм этой процедуры опишу тут.
Итак исходные данные:
ИБП Ippon Back Power Pro 800,
Ubuntu Linux 10.04 (да я сторонник LTS-версий).
Для начала пред подключением ИБП к компьютеру по средствам USB даем команду:
lsusb
потом подключаем ИБП и снова повторяем команду, чтобы выявить идентификаторы устройства. Например из строки "Bus 002 Device 005: ID 0665:5161 Cypress Semiconductor USB to Serial" можно узнать, что VendorID = 0665 ProductID = 5161 для моего ИБП.
1. Установка ===========================================
Далее установим NUT:
sudo apt-get install 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/nut/ups.conf укажем параметры подключения к нашему ИБП:
[ippon-800]
driver = blazer_usb
port = auto
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, оно может быть любым;
port - имя файла порта, для USB можно просто "auto", для COM1-порта "/dev/ttyS0"
desc - комментарий;
default.battery.voltage.high - максимальное напряжение батареи при полном заряде, необходимо для расчета остаточного заряда батареи;
default.battery.voltage.low - минимальное напряжение батареи при полном разряде;
offdelay - команда ИБП перейти в режим ожидания через 6 минут
Далее в файле /etc/nut/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/upsd.users:
[имя_пользователя]
password = пароль_пользователя
allowfrom = localnet
upsmon master
actions = SET
instcmds = ALL
где
allowfrom - параметр определяющий источник подключения;
upsmon master - параметр дающий права на управление ИБП.
И последнее, осталось настроить службу мониторинга в файле /etc/nut/upsmon.conf пишем:
RUN_AS_USER nut
MONITOR имя_ибп@localhost 1 имя_пользователя пароль_пользователя master
MINSUPPLIES 1
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "sbin/shutdown -Ph +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
где SHUTDOWNCMD "sbin/shutdown -Ph +0" - команда на завершение работы компьютера.
Все. Теперь включив систему NUT командой:
sudo service nut start
можно запросить статус ИБП командой:
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
Далее если хочется смотреть в графике можно установить knutclient:
sudo apt-get install knutclient
После установки knutclient надо сконфигурировать Setting->Configure KNutClient->UPS->Add. Здесь пишем Имя - понятное вам имя ИБП; UPS адрес - имя машины с ИБП (в данном случае localhost); UPS имя - название ИБП в системе NUT; Имя пользователя - пользователь в системе NUT; Пароль - его пароль. Далее выбираем необходимые вам переменные или их все (те что ИБП не поддерживает, просто не будут отображаться) и нажимаем ОК.