Изначально со включенным модулем mod_cgi (в разделе server.modules файла конфигурации lighttpd) и настройками раздела CGI module такими
и такимиCode:cgi.assign = ( ".cgi" => "/opt/bin/perl" )
ничего не работало. После яростного поиска откопал где-то такую рекомендациюCode:cgi.assign = ( ".cgi" => "/bin/sh" )
- и все заработало.Code:cgi.assign = ( ".cgi" => "" )
И, конечно, в рабочей директории lighttpd (она у меня отлична от дефолтовой) сделан симлинк на директорию /opt/share/www/cgi-bin, куда кладет установщик cgi-скрипты apcupsd.
Ламерский вопрос: а как узнать, к какому порту (ttyS0 S1 ...) подключен UPS для конфигурации NUT?
Спасибо!
Last edited by Asgard; 14-05-2012 at 11:05.
Господа, пытаюсь прикрутить к rt-n16 мониторинг и управление aps smart-ups 1500 через USB.
Хочу чтобы роутер мониторил UPS и выключал железный NAS (включен всегда, когда питание падает ему больно) и
стационарный компьютер (если он включен конечно) по сети штатным функционалом apcupsd, который есть в entware.
Всё питается от одного UPS конечно.
К сожалению, модуль usbhid, по всей видимости, собран без поддержки /dev/hiddev raw HID device support.
Собственно вопросы.
1. Не могли бы вы собирать модули к прошивке с этой опцией (/dev/hiddev raw HID device support.)?
2. Не может ли кто с установленным toolchain собрать usbhid c этой опцией мне на предмет потестить?
3. http://code.google.com/p/wl500g/wiki...CustomFirmware актуально?
Достаточно ли этого, чтобы самостоятельно пересобрать модули (особенно если система amd64)?
PS. Имею madskillz в линукс но никогда не занимался кроссплатформенной разработкой, так же
катастрофически не имею времени глубоко проникать, но постараюсь справиться сам конечно.
UPD: Сам разобрался.
Last edited by Omega; 14-05-2013 at 23:18. Reason: ну так расскажите всем :) нам тоже интересно ;)
Ок, по просьбе Omega рассказываю.
Модуль usbhid собран правильно, не определялся smartups потому что в вебморде роутера было включено usb 2.0 only. После включения комбинированного режима бесперебойник определился и файл устройства в /dev создался автоматически как только ручками вставил модуль.
Делал следующее: установил через opkg apcupsd и msmtp (это чтобы события слать на гмыл, бизибоксовый sendmail слать на гмыл заставить не смог, настройку расписывать не буду, тривиально через гугль нашёл).
В /tmp/local/sbin/postmount вонзил modprobe usbhid
В /tmp/local/sbin/pre-shutdown добавил
Отрабатывает нормально, поскольку в pre-shutdown ранее флешка перемонтируется в ro. Весь скрипт выглядит так:Code:if [ -f /tmp/powerfail ]; then /opt/sbin/apcupsd --killpower fi
apcupsd.confCode:#!/bin/sh /opt/etc/init.d/rc.unslung stop sleep 10s for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do mount -o remount,ro $i done swapoff -a sleep 1s if [ -f /tmp/powerfail ]; then /opt/etc/apcupsd/apccontrol killpower fi
Далее поправил пути в /opt/etc/apcupsd/apccontrol на предмет соответствия расположения powerfail (я его запихал в /tmp как видно из конфига и скрипта pre-shutdown) и APCPID, подпилил прочие находящиеся там скриптики и apcupsd_mail.conf для работы с msmtp (расписывать не буду, тривиально).Code:UPSNAME sapc1500 UPSCABLE usb UPSTYPE usb DEVICE LOCKFILE /var/lock SCRIPTDIR /opt/etc/apcupsd PWRFAILDIR /tmp NOLOGINDIR /etc ONBATTERYDELAY 6 MINUTES 5 TIMEOUT 0 ANNOY 0 NOLOGON disable KILLDELAY 0 NETSERVER on NISIP 192.168.66.1 NISPORT 3551 EVENTSFILE /tmp/apcupsd.events EVENTSFILEMAX 10 UPSCLASS standalone UPSMODE disable STATTIME 0 LOGSTATS off DATATIME 0
Демон заводится и отрабатывает как надо, apcupsd обрубает нагрузку UPS при разгрузке роутера.
Имею двух клиентов - железный NAS WD My Book Live (он круглосуточно качает и раздаёт торренты, ему может быть очень больно когда пропадает питание) и стационарный комп. Подключены они к этому же бесперебойнику, на них установлены apcupsd в режиме клиента. Настройки почти одинаковые на обоих с учётом разницы в путях и отсутствия нужды в nologin для NAS.
Естественно никаких power cutoff бесперебойнику клиентам делать не надо, его делает роутер, так что с разгрузочными скриптами можно не мучиться.Code:UPSNAME sapc1500 UPSCABLE ether UPSTYPE net DEVICE rtn16:3551 POLLTIME 5 LOCKFILE /var/lock SCRIPTDIR /etc/apcupsd PWRFAILDIR /etc/apcupsd NOLOGINDIR /etc MINUTES 4 TIMEOUT 0 ANNOY 0 NOLOGON disable KILLDELAY 0 NETSERVER off UPSCLASS standalone UPSMODE disable STATTIME 0 LOGSTATS off DATATIME 0
Собственно как то так оно и работает.
В планах:
1. Узнать как _в точности_ работает параметр KILLDELAY в конфиге и работает ли (в man apcupcd сказано что он для тупых бесперебойников). По умолчанию сам бесперебойник даёт задержку перед выключением нагрузки в 60 сек, к сожалению конфигурируется это только через com кабель. Возможно ли увеличить это время с помощью KILLDELAY? (Доку зачитал до дыр, ничего не понял, что то про FreeBSD, какой вообще может быть regain control после shutdown, удивительно невнятно написано, видимо придётся в исходники залезть). Разобраться в разнице apcupsd --killpower и --kill-on-powerfail
2. Прикрутить cgi
PS. Вообще сама идея того, что клиент должен опрашивать сервер о столь важных событиях, как переход на батарею и исчерпание её заряда например, невыносимо отвратительна. Должно быть наоборот. Сервер должен заталкивать это клиентам. В процессе тестирования несколько раз было так, что клиент из за большого интервала опроса про...пускал событие "заряд исчерпан, выключаемся" и разгружаться не стал, а роутер шустро разгрузился и отрубил нагрузку на ИБП. В доке сказано, что после получения события "на батареях" интервал опроса клиентом становится равным 1 сек, вне зависимости от того что в POLLTIME сказано, но видимо это работает криво и не всегда. Видимо придётся лечить скриптами, ибо текущая логика работы меня не устраивает. Совершенно неграмотно, в продакшене я бы за такое убивал.
Last edited by Optimus22Prime; 15-05-2013 at 06:54.
В июльских релизах asuswrt и asuswrt-merlin 376_1071/376.45 отключена поддержка HID-устройств. Модули hid.ko и usbhid.ko будут подгружаться без каких-либо ошибок, но толку от них не будет.
Помогла пересборка прошивки с включенными HID-модулями.Code:T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 7 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=051d ProdID=0002 Rev= 0.06 S: Manufacturer=American Power Conversion S: Product=Back-UPS CS 650 FW:817.v9.I USB FW:v9 S: SerialNumber=XXXXXXXXXXX C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 6 Ivl=100ms
PS Для RT-N66U модифицированную asuswrt-merlin с модулями можно забрать здесь.
Update 29/09. Эрик включил мой pull-request для возвращения поддержки HID-устройств. Начиная с 376.48 прошивку пересобирать не придётся.
Last edited by ryzhov_al; 29-09-2014 at 17:50.
После октябрьского обновления APCUPSD-CGI перестал рисовать картинки. Никто с этим не сталкивался.
Last edited by mitrich; 11-11-2014 at 13:45.
Добрый вечер все. Прошу помоч, т.к. в Linux не силен.
Имеется dir320 под управлением tomatousb v1.28.0022 ND USB Std
есть ИПБ IPPON BLACK PRO 600VA (подключен через usb-хаб)
хочу прикрутить его к роутеру для мониторинга и управления статой
поставил apcupsd в надежде что все заработает из коробки, но как бы не так
выдаетCode:apcaccess statusError contacting apcupsd @ localhost:3551: Connection refusedвыдаетCode:apctest
я так понимаю демон даже не стартуетError contacting apcupsd @ localhost:3551: Connection refused
вывод -lsusb весьма скуден
вывод cat /proc/bus/usb/devices поширеBus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 002: ID 0409:005a NEC Corp.
Bus 001 Device 003: ID 0409:005a NEC Corp.
Bus 001 Device 004: ID 0665:5161
Bus 001 Device 005: ID 13fd:1240
логов никаких нет, .т.к. наверное нинастроено.Code:T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub S: SerialNumber=b8003000 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2 B: Alloc= 0/800 us ( 0%), #Int= 2, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.04 S: Manufacturer=Linux 2.4.37.10 ehci_hcd S: Product=PCI device 14e4:471a S: SerialNumber=00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0409 ProdID=005a Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0409 ProdID=005a Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms T: Bus=01 Lev=03 Prnt=03 Port=01 Cnt=01 Dev#= 4 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0665 ProdID=5161 Rev= 0.02 S: Manufacturer=INNO TECH S: Product=USB to Serial S: SerialNumber=20100826 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=32ms T: Bus=01 Lev=03 Prnt=03 Port=03 Cnt=02 Dev#= 5 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=13fd ProdID=1240 Rev= 2.12 S: Manufacturer=Generic S: Product=External S: SerialNumber=57442D575845323038414D30 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
кто может помочь?
Не «кто может помочь», а «что может помочь». Помочь может чтение документации к apcupsd и NUT, в них можно найти список поддерживаемых моделей. Затем определить какой ядерный модуль необходимо подгрузить для выделенного выше устройства. И уже разжившись модулем, переходить к настройке ПО.
ИБП у вас популярный, статей по его настройке навалом, в т.ч. на русском языке.