Monitorowanie UPS
Ostatnia zmiana: 2013-11-26 18:43

Program apcupsd przeznaczony jest do monitorowania bardzo popularnych zasilaczy awaryjnych firmy APC (American Power Conversion Corp.). Wiele typów UPS posiada interfejs komunikacyjny, albo w postaci złącza DB9 (gniazdo takie jak przy interfejsie RS232C), wymagające jednak specjalnego kabla (i najczęściej różnego w zależności od typu UPS), albo w postaci zwykłego złącza USB - w nowszych modelach. Zasilacze awaryjne doskonale spełniają swoją funkcję, ale dobrze by było czasami wiedzieć jakie parametry (w szczególności pozostały czas) ma nasz UPS.
W tym poradniku zastosowano zasilacz APC Back-UPS ES 700 (z kablem USB) oraz OpenWrt w wersji 12.09.

Instalacja oprogramowania



    # opkg update
    # opkg install apcupsd

Dla połączenia USB trzeba zainstalować jeszcze jeden pakiet z zależnościami:


    # opkg install kmod-usb-hid

Zasilacze podłączane do USB widoczne są zwykle jako urządzenia HID, stąd też potrzeba zastosowania takiego sterownika. Po podłączeniu zasilacza można sprawdzić czy jest on widoczny - poleceniem cat /proc/bus/usb/devices:


T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  4 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= 1.06
S:  Manufacturer=APC
S:  Product=Back-UPS ES 700 FW:829.D2.I USB FW:D2
S:  SerialNumber=5B0710U03272  
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   6 Ivl=10ms

W przypadku połączeń szeregowych nie ma potrzeby instalacji niczego więcej.

Konfiguracja

Plik konfiguracyjny znajduje się w katalogu /etc/apcupsd pod nazwą apcupsd.conf. Na początku należy w nim zmienić trzy zmienne, odpowiadające za typ zastosowanego kabla, typ UPS oraz port do komunikacji, zapisane w odpowiednich zmiennych.

Kabel USB

Dotyczy to kabla USB który bezpośrednio podłączony jest do UPSa (np. typu 940-0127E):


    UPSCABLE usb
    UPSTYPE usb
    DEVICE

Kabel szeregowy

Dotyczy to kabla (np. typu 940-0024B lub 940-0024C) podłączonego do złącza RS232C w routerze:


    UPSCABLE 940-0024C
    UPSTYPE apcsmart
    DEVICE /dev/ttyS0

Kabel szeregowy podłączony przez przejściówkę USB<->serial

Niektóre kable szeregowe (np. wspomniane 940-0024B lub 940-0024C) działają także z przejściówką USB <-> serial. Przy takim połączeniu nadal należy wskazać typ kabla jako 940-0024C (smart) ale należy ustawić właściwe urządzenie szeregowe:


    UPSCABLE 940-0024C
    UPSTYPE apcsmart
    DEVICE /dev/ttyUSB0

Uruchomienie



    # /etc/init.d/apcupsd enable
    # /etc/init.d/apcupsd start

Odczytanie danych o UPS

Postać tekstowa



    # apcaccess 
APC      : 001,035,0884
DATE     : Mon May 27 20:06:26 CEST 2013
HOSTNAME : Gargoyle
VERSION  : 3.14.7 (1 August 2009) unknown
UPSNAME  : ups1
CABLE    : USB Cable
MODEL    : Back-UPS ES 700 
UPSMODE  : Stand Alone
STARTTIME: Mon May 27 20:06:24 CEST 2013
STATUS   : ONLINE 
LINEV    : 230.0 Volts
LOADPCT  :   0.0 Percent Load Capacity
BCHARGE  : 087.0 Percent
TIMELEFT :  48.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 180.0 Volts
HITRANS  : 266.0 Volts
ALARMDEL : Always
BATTV    : 13.6 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x07000008 Status Flag
MANDATE  : 2007-03-06
SERIALNO : 5B0710U03272  
BATTDATE : 2007-03-06
NOMINV   : 230 Volts
NOMBATTV :  12.0 Volts
FIRMWARE : 829.D2.I USB FW:D2
APCMODEL : Back-UPS ES 700 
END APC  : Mon May 27 20:06:30 CEST 2013

W ten sposób dostajemy komplet informacji o UPS - czas pracy, naładowanie, numery seryjne czy sam typ UPS. Lista parametrów różni się w zależności od modelu UPS.

Strona WWW

Dane te można przedstawić także w postaci czytelnej strony WWW, co umożliwia "zdalne" monitorowanie zasilacza. Niezbędna jest instalacja następnego pakietu apcupsd-cgi (dostępny jest u mnie w repozytorium) oraz serwera www obsługującego CGI:


    # opkg install apcupsd-cgi uhttpd
    # /etc/init.d/uhttpd enable
    # /etc/init.d/uhttpd start

(w przypadku zdanego dostępu należy pamiętać o odblokowaniu portu 80 na wanie). Paczka zawiera zbiór programów które komunikują się z demonem apcupsd i umożliwiają prezentację parametrów w trochę bardziej czytelnej postaci. Wywołanie sprowadza się do wpisania w przeglądarce adresu http://192.168.1.1/cgi-bin/multimon.cgi, co przedstawi nam informację w następującej postaci:



Wybierając "All data" dostaniemy wszystkie informacje w postaci tekstowej:



Natomiast "Local Host" (nazwa konfigurowana jest w pliku hosts.conf w katalogu /etc/apcupsd) dostaniemy ładne wykresy m.in. pozostałego czasu:



Jeżeli zasilacz pracuje na baterii, to zostanie to od razu wyróżnione odpowiednim kolorem.



Testy UPS

W zestawie dostaniemy także program apctest, który pozwala na uruchomienie kilku testów diagnostycznych oraz wyświetlanie dodatkowych statusów. Poszczególne operacje dostępne są w postaci menu tekstowego.


1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  Change battery date
5)  View battery date
6)  View manufacturing date
7)  Set alarm behavior
8)  Set sensitivity
9)  Set low transfer voltage
10) Set high transfer voltage
11) Quit

Zakończenie

Program apcupsd ma kilka ciekawych możliwości np. wysyłanie mejla w odpowiednich momentach (dostarcza nawet swój prosty program smtp).