Как отключить энергосбережение ИБП с помощью NUT?

У меня установлен ИБП Proline 650 (последовательный)

Дополнительные сведения: ИБП имеет последовательное соединение с одной батареей 12 В SLA. (Он не был указан в списке совместимости NUT, но после компиляции NUT-сканера он был обнаружен для работы с драйвером blazer_ser. Кажется, он работает отлично, если я оставлю монитор ups работающим, сервер автоматически отключится, когда ИБП время работы от батареи составляло 30 секунд или минуту, или что-то в этом роде. ОС: Debian 7 Wheezy. Аппаратное обеспечение представляет собой один маломощный сервер i5 без головы с 1 3,5"жестким диском.

ПРОБЛЕМА

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

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

Такое поведение при отключении питания в документах NUT называется energy_saving (battery.energysave).

Драйвер blazer_ser, похоже, не предлагает способ отключения energy_saving. Это кажется сумасшедшим, что нет никакого способа держать выход нагрузки ИБП включенным. Как можно рекламировать ИБП как обеспечивающий x количество энергии, но преждевременно отключающий его без простого способа исправить поведение в программном обеспечении?

Это мой статус вывода

 $ upsc nutdev1@127.0.0.1
Battery.charge: 100
Батарея. Напряжение: 13.60
battery.voltage.high: 13.00
battery.voltage.low: 10.40
Battery.voltage.nominal: 12,0
device.type: ups
имя водителя: blazer_ser
driver.parameter.pollinterval: 2
driver.parameter.port: / dev / ttyS0
версия драйвера: 2.6.4
Driver.version.internal: 1,55
input.current.nominal: 3.0
input.frequency: 50,1
input.frequency.nominal: 50
входное напряжение: 221,0
input.voltage.fault: 221,0
входное напряжение номинальное: 220
выходное напряжение: 221,0
ups.beeper.status: включено
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 12
ups.status: OL
температура поднимается: 25,0
ups.type: оффлайн / линейный интерактив

Я тоже побежал upsrw -u admin -p mypass -s -l nutdev1 но не было энергосбережения или подобного варианта. Только такие вещи, как beeper.toggle (проверено, работает как положено) и другие базовые вещи. Был вариант мгновенной выгрузки. Оно работает. Была опция загрузки, я пытался вызвать ее несколько раз, надеясь задержать отсчет энергосбережения, но это не сработало. Была также опция отключения отключения, которая тоже не помогла.

Любые предложения приветствуются. Я подумал о нескольких вещах, которые мне не интересны:

  • Я пытался отключить энергосбережение, хотя этот параметр не указан upscmd -u upsadmin1 -p mypass nutdev1 battery.energysaveUnexpected response from upsd: ERR CMD-NOT-SUPPORTED
  • Попробуйте другие драйверы
  • Получите другой ИБП (без гарантии, что другие локально доступные ИБП работают хорошо с NUT)
  • Подключите больше нагрузки (тратить электричество) только ради того, чтобы считаться нагрузкой
  • Взломайте ИБП в электронном виде, чтобы обмануть обнаружение нагрузки (время, проведенное не очень хорошо)

Кажется, должно быть простое программное решение, поэтому я и спрашиваю.

================

Согласно предложению BillThor, я обновил свой файл upsmon.conf:

$ grep -v '^ #' /etc/nut/upsmon.conf
МОНИТОР nutdev1@127.0.0.1 1 foo2 bar2 master
ПРОДУКТЫ 1

SHUTDOWNCMD "/ usr / bin / logger fake shutdown"

POLLFREQ 5
POLLFREQALERT 5
ХОСТСИНЦ 15
МЕРТВ 15
POWERDOWNFLAG / etc / killpower

 NOTIFYFLAG ONLINE SYSLOG+ СТЕНЫ
 NOTIFYFLAG ONBATT  SYSLOG+WALL
 NOTIFYFLAG LOWBATT SYSLOG+WALL
 NOTIFYFLAG FSD SYSLOG+WALL
 NOTIFYFLAG COMMOK  SYSLOG+WALL
 NOTIFYFLAG COMMBAD SYSLOG+WALL
 ВЫКЛЮЧЕНИЕ УВЕДОМЛЕНИЯ SYSLOG+ СТЕНА
 NOTIFYFLAG REPLBATT SYSLOG+ WALL
 NOTIFYFLAG NOCOMM SYSLOG+ WALL
 NOTIFYFLAG NOPARENT SYSLOG+ WALL

RBWARNTIME 43200
NOCOMMWARNTIME 300

FINALDELAY 5

Я включил ИБП (без питания от сети) 3 раза подряд без зарядки. Емкость и напряжение аккумулятора не изменились. Статус LB никогда не возникал. Вот системные журналы

2 декабря 07:08:00 t upsmon[2000]: запуск прошел успешно
2 декабря 07:08:00 t upsd[1942]: пользователь Mongser1@127.0.0.1 вошел в ИБП [nutdev1]
2 декабря 07:08:30 t upsmon [2002]: UPS nutdev1@127.0.0.1 на батарее
2 декабря 07:13:34 t blazer_ser[1939]: связь с ИБП потеряна: чтение состояния не выполнено!
2 декабря 07:13:36 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер
2 декабря 07:13:40 t upsmon [2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели
2 декабря 07:13:40 t upsmon [2002]: потеря связи с UPS nutdev1@127.0.0.1
2 декабря, 07:13:45 t upsmon[2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели
2 декабря 07:13:50 t upsmon[2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели
2 декабря 07:13:55 t upsmon[2002]: сбой опроса UPS [nutdev1@127.0.0.1] - данные устарели
2 дек. 07:13:55 t upsd[1942]: Клиент Mongser1@127.0.0.1 установил FSD на ИБП [nutdev1]
2 декабря 07:13:55 t upsmon[2002]: Выполнение автоматического отключения при сбое питания
2 декабря 07:13:55 t upsmon[2002]: автоматический выход из системы и завершение работы
2 дек. 07:14:00 t logger: ложное отключение
2 декабря 07:17:31 t blazer_ser[1939]: связь с ИБП восстановлена
2 декабря, 07:17:31 t upsd[1942]: данные UPS [nutdev1] больше не устарели
2 декабря 07:22:38 t blazer_ser[1939]: связь с ИБП потеряна: ошибка чтения состояния!
2 декабря 07:22:40 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер
2 декабря 07:25:23 t blazer_ser[1939]: связь с ИБП восстановлена
2 декабря 07:25:23 t upsd[1942]: данные UPS [nutdev1] больше не устарели
2 декабря 07:29:54 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1
2 декабря 07:29:55 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана
2 декабря 07:30:17 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1
2 декабря 07:30:18 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана
2 декабря 07:30:25 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1
2 декабря 07:30:26 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана
2 декабря 07:30:31 t blazer_ser[1939]: связь с ИБП потеряна: не удалось прочитать состояние!
2 декабря 07:30:33 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер
2 декабря 07:31:32 t blazer_ser[1939]: восстановлена ​​связь с ИБП
2 декабря 07:31:32 t upsd[1942]: данные UPS [nutdev1] больше не устарели

Как вы можете видеть, я попытался очистить флаг / состояние FSD, выполнив эту команду (ту же команду, которая может успешно отключить нагрузку или переключить звуковой сигнал) upscmd -u upsadmin1 -p mypass nutdev1 shutdown.stop Но это не прояснило состояние ФСД.

Вот некоторая информация о статусе (я удалил ненужные строки)

# Я запустил это сразу после отключения питания от сети после 07:08:30
$ upsc nutdev1@127.0.0.1
battery.charge: 69
battery.voltage: 12.20
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 0
ups.status: OB

**$ date && upsc nutdev1@127.0.0.1** вт 2 дек. 07:11:29 EST 2014
battery.charge: 65 батарея. Напряжение: 12.10
ups.delay.shutdown: 30
ups.delay. начало: 180
ups.load: 0
ups.status: OB

# ни одно из этих полей не менялось все время после этого, кроме ups.status

**date && upsc nutdev1@127.0.0.1** вт 2 дек 07:12:29 EST Заряд батареи 2014 года: 65 батарей. Напряжение питания: 12,10
ups.status: OB

$ date && upsc nutdev1@127.0.0.1 Вт 2 дек. 07:18:26 EST 2014 Батарея: зарядка: 65 батарей. Напряжение: 12.10
ups.status: FSD OB
ups.teuration: 25,0 # было еще несколько, все идентичные, затем наконец ** $ date && upsc nutdev1@127.0.0.1** вт дек 2 07:30:28 EST 2014
battery.charge: 65
battery.voltage: 12.10
ups.status: FSD OB

$ date && upsc nutdev1@127.0.0.1 вт 2 дек. 07:31:11 EST 2014 Ошибка: устаревшие данные 

Это мгновенные команды, предположительно поддерживаемые моим ИБП

**upscmd -u upsadmin1 -p mypass -l nutdev1**
Мгновенные команды, поддерживаемые на ИБП [nutdev1]:

beeper.toggle - Переключатель звукового сигнала ИБП ** работает **
load.off - немедленно выключить нагрузку ** работает **
load.on - немедленно включить нагрузку ** кажется, ничего не делает **
shutdown.return - выключите нагрузку и вернитесь, когда питание вернется
shutdown.stayoff - выключить нагрузку и остаться выключенным
shutdown.stop - останавливать текущее завершение работы ** не предотвращает завершение работы или снимает флажок FSD **
test.battery.start - запустить тест батареи
test.battery.start.deep - начать глубокий тест батареи
test.battery.start.quick - начать быстрый тест батареи
test.battery.stop - остановить тест батареи

Теперь я попробовал еще больше возможностей. Я попытался запустить test.battery.start.quick, чтобы немного откалибровать батарею, с нагрузкой 35%. Он работал в течение минуты или двух от батареи, а затем снова переключился на питание от сети. Тогда у меня было еще две идеи. Я попытался отключить бипер, надеясь, что ИБП останется включенным, но он выключился как обычно через 5 минут. Тогда у меня была другая идея. Я вытащил вилку из розетки и запустил test.battery.start, надеясь, что смогу провести "тест батареи" бесконечно. Но ИБП все еще выключился через 5 минут.

В основном этот ИБП хорош для выключения, и не намного. Я собираюсь получить еще один UPS.

1 ответ

Если вы не используете команды в upssched.conf, NUT должен подождать, пока ИБП не сообщит о низком заряде батареи, прежде чем делать отключение Убедитесь, что у вас ничего не запланировано.

Как только NUT начинает отключение, ИБП запускается после истечения времени ожидания. Это необходимо для обеспечения восстановления работы сервера, если питание восстанавливается до того, как в ИБП разрядится батарея. Время указано как FINALDELAY в upsmon.conf,

Вы можете включить ведение журнала всех уведомлений для всех событий в upsmon.conf, Это может позволить вам определить, почему система закрывается так быстро. Эти настройки я использую:

NOTIFYFLAG ONBATT   SYSLOG+WALL
NOTIFYFLAG ONLINE   SYSLOG+WALL
NOTIFYFLAG FSD      SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL

NOTIFYFLAG LOWBATT  SYSLOG
NOTIFYFLAG REPLBATT SYSLOG

NOTIFYFLAG COMMOK   SYSLOG
NOTIFYFLAG COMMBAD  SYSLOG+WALL
NOTIFYFLAG NOCOMM   SYSLOG+WALL
NOTIFYFLAG NOPARENT SYSLOG+WALL

Если NUT завершает работу баз на сценарии таймера, такую ​​строку я ожидаю увидеть в журнале. Похоже, что ИБП прекращает связь через 5 минут, и NUT выполняет FSD последнего канала (принудительное отключение). Это то, что я хотел бы сделать. Пять минут должно быть достаточно, чтобы указывать на то, что питание вряд ли быстро восстановится.

Dec  2 07:13:55 t upsd[1942]: Client monuser1@127.0.0.1 set FSD on UPS [nutdev1]

Я ожидал бы, что NUT использует shutdown.return подать сигнал на отключение ИБП. Это должно вызвать перезапуск ИБП после восстановления питания и кратковременное отключение, если питание восстанавливается до завершения выключения.

Я бы ожидал ups.delay.shutdown а также ups.delay.start быть настраиваемыми для цикла перезапуска ИБП. ups.delay.shutdown должно дать серверу время для завершения цикла выключения, и может потребоваться увеличение. ups.delay.start должно быть время, необходимое для стабилизации питания после его возвращения. Это также позволяет подзарядить батареи до того, как нагрузка будет приложена.

Как правило, вы не хотите разряжать батареи до выключения. Вы хотите иметь достаточно батареи, чтобы пройти еще один или два цикла на случай, если снова произойдет сбой питания.

Многие ИБП имеют автоматическое отключение при низкой нагрузке. Если нагрузка составляет менее 10% от номинальной нагрузки ИБП, то через 5 минут он отключится. У меня та же проблема с моим ИБП Proline. Просто увеличьте нагрузку на ИБП, и он не отключится. Я знаю, это немного противоречит интуитивно, если вы пытаетесь сэкономить заряд батареи.

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

Я установил интеллектуальный переключатель sonoff на стороне нагрузки и запрограммировал его на включение 10% нагрузки на 10 секунд каждые 4 минуты. Это не элегантно, но поддерживает взлеты.

Другие вопросы по тегам