воскресенье, 4 сентября 2011 г.

Ippon Back Power Pro 800 и Ubuntu Lininux

Я давно использую 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, оно может быть любым;
driver - имя драйвера для подключения к ИБП, смотрим его тут http://www.networkupstools.org/stable-hcl.html, для моего ИБП это blazer_usb и blazer_serial в зависимости от порта подключения;
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; Пароль - его пароль. Далее выбираем необходимые вам переменные или их все (те что ИБП не поддерживает, просто не будут отображаться) и нажимаем ОК.


Комментариев нет: