Апр 02

Взял я недавно себе UPS Ippon Smart Winner в замен много лет служившего PowerCom, мощности которого стало не хватать для обеспечения работы нового компа при плохих условиях в сети.

В Windows с любыми вариациями штатного ПО сие "чудо"  по USB заставить работать мне так и не удалось, однако нашлись альтернативные программы, которые смогли с ним работать. Странно, что с этим у производителя возникли такие сложности, т.к. протокол "Megatec", по которому работает данная железка достаточно распространенный и очень простой. Также мне не понятно, зачем имея у ИБП нативный COM-порт нужно было делать параллельно USB-порт, работающий как USB-HID. Гораздо логичнее было бы представлять его как USB-COM адаптер. Анализ форумов показал, что такие проблемы не только у меня одного, а в мануалах вообще указано, что если ИБП с протоколом Megatec имеет сразу оба порта (USB+COM), то в Linux он будет работать только через COM. С Linux  (поставил все-таки Debian Lenny на mini-ITX, об этом я еще может напишу) родное ПО тоже не заработало, но альтернативное решение было найдено. Немножко удивляет беспечность производителей железа. У меня сложилось мнение, что ИБП от APC без проблем работают с Windows/*nix, а вот остальные производители на это забили и в лучшем случае отдали на откуп сторонним программистам, которые на это тоже забили...

Из заработавших у меня программ под Windows мне понравились следующие:

UPS Assistant

Достаточно продвинутая программа, имеет встроенный WebGUI, может управлять УПС-ом, умеет выключать компьютер.

upsassistantsmall

USBUPSMon

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

Linux

С Linux все оказалось намного веселее. Во-первых, единого мануала по настройке ИБП такого типа я не нашел и по частям пришлось восстанавливать процесс подключения, который в конечном итоге оказался очень простым, за исключеним того, что я не один вечер потратил на попытки заставить его заработать через USB, что так и не удалось (массовое явление, кстати). Зато через COM-порт он потом подключилось очень быстро (т.к. пришлось поправить только пару строчек в конфиге). Итого, для Debian Lenny процесс настройки UPS Ippon для работы с NUT (Network UPS Tool) можно осуществить так (предполагаем, что эти действия делаются от root):

  • установить пакет NUT
apt-get install nut
  • скопировать исходные файлы конфигурации из /share/doc/nut/examples в /etc/nut/
  • откорректировать файл /etc/nut/ups.conf, сделав  в нем секцию следующего вида (ttyS0 - COM1). Здесь battvolts указывает на номинальное:минимальное напряжение батареи. Если не указать, то будет неправильно выдаваться заряд в процентах. Точные значения проще узнать опытным путем, сняв значение напряжения батареи при полном заряде, и в момент ее отключения при полном разряде.
[myups]
driver = megatec
port = /dev/ttyS0
desc = "Ippon Smart Winner"
battvolts = 53:39
mfr = "Ippon"
model = "Smart Winner"
  • откорректировать файл  /etc/nut/upsd.conf, сделав  в нем секцию похожего вида (разрешен доступ для  ЭВМ внутренней сети, локально на данной машине; запрещен остальной доступ. Порт 3493).
ACL all 0.0.0.0/0
ACL lan 192.168.1.1/32
ACL localhost 127.0.0.1/32
ACL myhost 192.168.1.2/32
ACCEPT localhost lan myhost
REJECT all
LISTEN 0.0.0.0 3493
  • в файле /etc/nut/upsd.users создать учетную запись пользователя и настроить мониторинг ИБП.
[monuser]
password  = пароль
allowfrom = all
upsmon master
instcmds = ALL
actions = SET MONITOR
myups@localhost 1 monuser пароль master
  • в файле /etc/nut/upsmon.conf можно произвести настройку мониторинга и возможных действий по разным событиям, например, выключение станции.
MONITOR myups@localhost 1 monuser пароль master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/sbin/shutdown -h now"
  • Выставляем права на доступ к последовательному порту (считаем, что это COM1): создаем файл /etc/udev/rules.d/99_nut-serialups.rules с содержимым
KERNEL=="ttyS0", GROUP="nut"
  • применяем новые правила:
udevadm control --reload_rules
udevadm trigger
  • можно защитить файлы конфигурации NUT:
chown root:nut /etc/nut/*
chmod 640 /etc/nut/*
  • Устанавливаем автоматический запуск служб, включив в файле /etc/default/nut следующие переменные:
START_UPSD=yes
START_UPSMON=yes
  • Перегружаем ПК и пробуем получить информацию от UPS командой upsc myups@localhost. Если в ответ получена информация о UPS, значит вся настройка прошла корректно и встроенный клиент видит устройство:
# upsc myups
battery.charge: 91.8
battery.voltage: 53.40
battery.voltage.nominal: 48.0
driver.name: megatec
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.2.2
driver.version.internal: 1.5.14
input.frequency: 50.0
input.frequency.nominal: 50.0
input.voltage: 204.1
input.voltage.fault: 204.1
input.voltage.maximum: 229.0
input.voltage.minimum: 196.5
input.voltage.nominal: 230.0
output.voltage: 235.1
ups.beeper.status: enabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 26.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL BOOST
ups.temperature: 65.8
ups.type: standby

Сервис работает, переходим к "удобствам".

В качестве графического клиента для Linux я поставил knutclient.

screenshot-knutclient

Для настройки надо добавить UPS со следующими параметрами:

knutclent_setupups

Установите галочку в строке “Хранить NUT пароль в конфигурационном файле” для того, чтобы каждый раз его не пришлось вводить вручную. В полях “UPS переменные” можно указать датчики, которые должны отображаться в графическом виде на панели программы. У меня работают только те, которые указаны на скришноте. Хотя сам драйвер ИБП выдает намного большее число параметров, программа даже не предлагает отображать их в виде индикаторов, но этом их видит:

knutclient_vars

KNutClient - список команд

Также она может управлять UPS-ом:

KNutClient - управление UPS

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

WinNutClient

Программа, позволяющая из Windows наблюдать за работой ИПБ, подключенного к *nix-машине с помощью NUT. Имеет неприятное ограничение -  в ней невозможно задать учетную запись для доступа к УПС и она работает только в режиме просмотра (видимо, вызвано древность программы и заброшенностью оной автором еще в 2007г.). Также, она знает не все параметры, которые может выдать upsc, но все необходимое есть. Еще она умеет выключать компьютер при разряде батареи, но не умеет сворачиваться в трей. Радует, что можно задать номинальное напряжение батареи, т.к. мой ИБП немножко нетиповой и у него оно 54В (4х13.5).

win_nut_client

Индикатор "UPS On Battery", горящий желтым светом, вовсе не сигнализирует о том, что ИБП работает от батарей. Здесь он сигнализирует об работе блока AVR, работающего в режиме повышения или понижения входного напряжения.

WinNUT

Программа для подключения из Windows к удаленному NUT-серверу, сделанная без GUI с возможностью работы как сервис. Имеет поддержку авторизации на NUT. Удобна для использования в качестве службы, автоматически выключающей Windows-ПК при неполадках электропитания, информацию о которых она получает по сети. Конфиг у нее текстовый и максимально унифицирован с конфигами NUT. В конфиге нужно не забыть исправить пути к программе AlertPopup.exe, т.к. инсталлятор их сам не правит.

WinNUT

В итоге получаем конфигурацию, когда УПС подключен к постоянно функционирующему мини-серверу, и при этом со стационарного компа можно наблюдать за его состоянием, управлять им и т.д.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Автор: Vasiliy \\ Метки: , , , ,


14 комментариев к “Подключение UPS Ippon в Linux и Windows. NUT+Windows”

  1. 1. dluciv пишет:

    Слушай, не по теме: какую файловую систему в итоге заюзал?

    Ответить

    vasiliy Reply:

    Я про ФС давно уже думал опус выдать, материалу и мыслей достаточно нобралось. В результате потестив несколько ФС, изучив это (http://software.intel.com/en-us/articles/windows-client-cifs-behavior-can-slow-linux-nas-performance/), и вспомнив, что дефрагментировать все равно надо будет я для раздела с закачками применил XFS, т.к. ее можно дефрагментировать, а потеря их или сбои мне не важны (к тому же есть HASH для торрентов и можно докачать побившийся кусок). Систему поставил на ЕХТ3, а диск с музыкой у меня был на NTFS, там и оставил, т.к. ее поднять в случае чего можно, в отличие от юниксовых ФС, в особенности XFS. Скорости получились странные, особенно в связке с samba. Как в итоге работает кеширование я не понял. Итоговая потеря в скорости от Windows 7 (см предыдущие замеры) составила 1.5-2 раза на больших файлах, но все равно намного быстрее FreeBSD. До кучи заметил, что залитый через самбу на пустой XFS раздел 40Гб файл оказывается уже сильно фрагментируемым, да и сам дефрагментатор, имхо, в зачаточном состоянии по функционалу.

    Ответить

    dluciv Reply:

    Я бы на клиент багрепорт всё же написал. Раз уж работает под юниксами, то пускай учится писать в файлы, например, единицы, а не нули…

    Ответить

    vasiliy Reply:

    Тогда и на дефрагер тоже надо писать:
    там таймер таймаута не прерывает процесс, если он занят обработкой файла. Таймер опрашивается в период между окончанием одного и началом другого файла. Если файл 40Гб, то вместо 10-минутного временного интервала, разрешенного программе для работы, можно ждать пару часов и более.

    Ответить

  2. 2. Аноним пишет:

    Спасибо за пост. Подкину свои 5 копеек для следующих гостей из гугла, если такие будут.
    В линуксе еще неплохо работают MGE, во всяком случае Evolution'ы, проверено на версии tower 850. Сначала поставил psp (personal solution pack) с офсайта, потом сам psp снес, а nut поставил из репа дистра (fedora 8 x64, потом 11-я). Работает по юсб нормально, правда раз в пару часов отваливается на несколько секунд с «communication lost» и строчками в dmesg типа
    «hub 2-0:1.0: port 1 disabled by hub (EMI?), re-enabling…
    usb 2-1: USB disconnect, address 9
    Data for UPS [mgeups] is stale — check driver
    drivers/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
    UPS [mgeups] data is no longer stale»
    Хотя на работоспособность не влияет. Может из-за того, что шнурок длинный (>6м), хз.
    Настраивающим в первый раз есть смысл попробовать сначала заюзать psp, посмотреть, что она там надетектит и напишет в конфиги, потому как с нуля разбираться будет небыстро. Если не будет коннектиться, может помочь добавление «upsd: 127.0.0.1 @nut» в hosts.allow (упоминание есть в каком-то из манов nut).

    Ответить

  3. 3. neptune пишет:

    Пробую тоже настроить Smart Winner 3000. Драйвер megatec не видит иппона 🙁 Возможно у вас другая модель была

    sudo /lib/nut/megatec -D -a ippon
    Network UPS Tools 2.2.1- — Megatec protocol driver 1.5.13 [megatec]
    Carlos Rodrigues (c) 2003-2007

    debug level is ‘1’
    Starting UPS detection process…
    5 out of 5 detection attempts failed (minimum failures: 2).
    Megatec protocol UPS not detected.

    Ответить

  4. 4. Vasiliy пишет:

    От модели в данном случае ничего не зависит, протокол у них всех стандартный. По USB мне завести так и не удалось, а с последовательным портом никаких проблем быть не должно. У вас какое подключение ИБП к ПК?

    Ответить

    neptune Reply:

    У меня тоже ttyS0 подключение, с USB даже не стал заморачиваться, начитавшись отзывов. Порт виден, драйвер его открывает, но обмена информацией нет 🙁 Провод из комплектации иппона. Сам не пойму в чем проблема, уже теряюсь в догадках. А у вас /lib/nut/megatec -D -a нормально отрабатывает? (Вобще должно, раз работает)
    А версия у Вас такая же?

    Ответить

    Vasiliy Reply:

    Результат отработки команды:
    Network UPS Tools 2.2.2- – Megatec protocol driver 1.5.14 [megatec]
    Carlos Rodrigues (c) 2003-2008

    debug level is ‘1′
    /dev/ttyS0 is locked by another process

    PS: версия у меня новее, но может просто из репозитария апдейт скачался. Для исключения аппаратной проблемы логично проверить под другой ОС с какой-нибудь из комплектных программ.

    Ответить

    neptune Reply:

    а если сделать /etc/init.d/nut stop; /lib/nut/megatec -D -a device; /etc/init.d/nut start ?
    Да, я тоже не думаю что проблема с версией драйвера. Попробую как смогу на другой машине тогда…

    Ответить

    Vasiliy Reply:

    Цепляет с первой попытки.

    Ответить

  5. 5. ze6ra пишет:

    Для работы с Ippon лучше использовать blazer_usb он вроде учитывает кривость реализации протокола megatec через usb рядом производителей. Но и у него был не большой глюк, не отрабатывалась команда отключения UPS c последующим включением через таймаут, хотя это устранилось правкой парой строк в драйвере. Сейчас возможно уже исправили не проверял, а так работает хорошо для техники подобного класса.

    Ответить

  6. 6. matperez пишет:

    Прикупил подобный. Настроил NUT с одним мастером и несколькими слейвами. ИБП мощный, хватает пока на 30 мин. работы после выключения питания. Вопрос в следующем: по сигналу от ИБП сервера уходят в halt, т.е. завершают все процессы, но не выключаются. Таким образом, если питание ИБП получит раньше, чем закончится заряд батарей, то сервера так и не включатся самостоятельно. Пытались ли вы подобную проблему обойти?

    Ответить

    vasiliy Reply:

    У меня такой именно проблемы нет, отправляется уведомление на почту, дальше я всегда смогу включить удаленно с помощью WOL.
    Если в BIOS стоит автовключение при подаче питания, ОС выключила систему а питание так и не пропало, то можно оставить хотя бы один рабочий комп, который будет WOL-пакеты для остальных слать если сеть восстановится, а если не восстановится, то тогда первая ранее выключенная группа при своем включении также пошлет WOL-пакеты и включет тот самый комп.

    Ответить

Оставьте комментарий или два