Raptor/BNT + NUT = нет отключения UPS + двойной бип-сигнал

Обсуждение программы по управления питанием ИБП POWERCOM

Moderators: AlexS, artyom, tanych

Post Reply
Message
Author
osnwt
Posts: 2
Joined: 22:42, 03 Jan 2016

Raptor/BNT + NUT = нет отключения UPS + двойной бип-сигнал

#1 Post by osnwt » 00:09, 12 Jan 2016

Добрый день!

Несколько лет назад покупал BNT-1500AP (S/N:40189511206, USB HID Battery), который работал с десктопом без ПО. Сейчас решил его задействовать для системы умного дома на базе ARM Linux с управлением от NUT. И возникла проблема, которая обсуждалась очень много где, но я так и не нашел нигде ее решения.

После получения команды FSD UPS начинает издавать двойной звуковой сигнал, но не отключается сам и не отключает нагрузку через заданное время (20 секунд по умолчанию). При этом в UPS Status показан флаг FSD, считает таймер ups.timer.shutdown в сторону уменьшения. Но когда он доходит до нуля (с учетом частоты опроса UPS я этого нуля не вижу), он продолжает считать вниз опять с примерно 3000.

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

Вариант использовать UPSMon не годится - тяжелый (java), не сетевой. Удивило, что NUT до сих пор не работает нормально при том, что родной UPSMon на Windows успешно всё гасит. Если BNT достаточно старый, то Raptor относительно свежий, но результаты идентичны.

upsc report:

Code: Select all

battery.charge: 99
battery.charge.low: 10
battery.charge.warning: 30
battery.date: 2010/12/20
battery.runtime: 784
battery.type: PbAc
device.mfr: POWERCOM Co.,LTD
device.model: HID UPS Battery
device.serial: 004-0D9F-000
device.type: ups
driver.flag.pollonly: enabled
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.7.1
driver.version.data: PowerCOM HID 0.4
driver.version.internal: 0.38
input.frequency: 50.0
input.voltage: 208.0
input.voltage.nominal: 220
output.frequency: 50.0
output.voltage: 208.0
output.voltage.nominal: 220
ups.beeper.status: enabled
ups.date: 2010/12/20
ups.delay.shutdown: 20
ups.delay.start: 60
ups.load: 0
ups.mfr: POWERCOM Co.,LTD
ups.model: HID UPS Battery
ups.productid: 0004
ups.serial: 004-0D9F-000
ups.status: OL CHRG
ups.test.result: Done and passed
ups.timer.shutdown: 0
ups.timer.start: 0
ups.vendorid: 0d9f

freddyb
Posts: 5
Joined: 13:11, 19 Oct 2015

Re: Raptor/BNT + NUT = нет отключения UPS + двойной бип-сигн

#2 Post by freddyb » 13:51, 04 May 2016

У меня SMK-2500A-RM-LCD с USB-подключением на драйвере usbhid-ups тоже ИБП не отключается. С подключением по СОМ-порту (у моего ИБП есть и СОМ-порт) на драйвере blazer_ser всё работает: ИБП отключается когда положено. Тем, у кого нет СОМ-порта, придётся положиться на режим Green Mode.

osnwt
Posts: 2
Joined: 22:42, 03 Jan 2016

Re: Raptor/BNT + NUT = нет отключения UPS + двойной бип-сигн

#3 Post by osnwt » 17:44, 17 May 2016

Судя по всему, надежнее положиться на другого производителя, так как при давно известной проблеме поддержка - нулевая.

GlobalWhite
Posts: 1
Joined: 18:58, 16 Feb 2018

Re: Raptor/BNT + NUT = нет отключения UPS + двойной бип-сигн

#4 Post by GlobalWhite » 20:01, 16 Feb 2018

Похоже, действительно надо было положиться на другого производителя.
Наверное, я победил эту проблему.
После подачи FSD - бесперебойник действительно пикает пару раз, и... продолжает работать. %) Как вылечил:
1. upsmon.conf - SHUTDOWNCMD "true"
Не надо, чтобы upsmon -c fsd глушил систему. Это ключевой момент, если тут оставить глушение - ничего не сработает, бесперебойник продолжит работу.
2. ups.conf - offdelay, ondelay - не работают. Время включения бесперебойника после получения питания - похоже захардкожено внутри, жестко 30 секунд, и изменить его никак нельзя. Время отключения - в этом месте переменная тоже никакого значения не имела.
3. upssched.conf - CMDSCRIPT. Вот в этом скрипте - и есть вся магия. Сами настройки шедулера такие:
AT ONBATT * START-TIMER shutdownnow 300
AT ONLINE * CANCEL-TIMER shutdownnow
300 - это время в секундах. Т.е. через 300 секунд - дернуть CMDSCRIPT с параметром shutdownnow. И уже внутри этого cmdscript на параметр shutdownnow выполняем след. последовательность:
upsmon -c fsd
upscmd -u <user> -p <pass> [email protected] shutdown.return 660
sudo /sbin/shutdown -h +0

Тада! Команду шатдаун.ретурн надо подавать ПОСЛЕ fsd. тогда бесперебойник продолжает пищать и вырубается по расписанию, после отключения сервера.
Почему 660? А вот это вообще феерично! Методом научного тыка, была определена следующая логика этого числа:
Если передать значение:
0-59 - это выключит пищалку, и отменит принудительное отключение бесперебойника (похоже, кстати, демон и посылает после fsd - shutdown.return без параметров. В случае с поверкомом - это как раз отключает пищалку и отменяет процедуру выключения).
60-599 - это количество десятых секунд. :D Т.е. 590 - ибп принудительно отрубится через 59 секунд. 550 - через 55 секунд. 60 - через 6 секунд. При этом, добавляется поправка - либо FINALDELAY, либо просто около 5 секунд. Т.е. передаем 60 - отключение идет примерно через 11 секунд. Передаем 550 - отключение примерно через 60-61 секунду. передаем 590 - отключение примерно через 64 секунды.
А дальше - похоже, логику делал наркоман. Если передать в shutdown.return значение 600 - то бесперебойник отрубится через 2 минуты. :D Не через 60 секунд, как можно было бы подумать.
Если передать значение 660 - то отрубится через 3 минуты. :D Т.е. все, что больше 600 - уже считается как 2 минуты + секунды, превышающие 600.

Это все просто феерично. Хотелось бы посмотреть на человека, который разрабатывал логику работы ИБП, и особенно придумывал принцип работы shutdown.return.

P.S. Все это тестировалось и настраивалось на Powercom Raptor RPT-2000AP.
P.P.S. Надо не забыть, что по-умолчанию, CMDSCRIPT выполняется от пользователя nut, у которого нет прав на шатдаун системы. Т.е. скрипт будет возвращать ошибку, пока не дать этому пользователю прав на шатдаун. Один из способов - в /etc/sudoers прописать: nut ALL=(ALL) NOPASSWD: /sbin/shutdown
и в скрипте запускать sudo /sbin/shutdown -h +0

Post Reply