之前參考了:

發信人: sailor.bbs@bbs.ee.nthu.edu.tw ( ), 看板: BSD_386
標 題: UPS – PhoenixTec 的 B600 可以用 nut
發信站: ☆清華電機☆ (Wed Jul 21 01:35:37 2004)

將自己的 飛瑞B-600 UPS,與 FreeBSD box 連接上線,達成停電 low battery 自動關機、復電自動開機(BIOS裡得設定復電自動開機)的功能。

安裝設定步驟如下…

Step 1. 用 ports 安裝 NUT (安裝前記得更新 ports,因為 NUT 2.0.0 以後才有支援 B-600)

cd /usr/ports/sysutils/nut
make install clean

Step 2. 設定 UPS driver、連接之 port
/usr/local/etc/nut/ups.conf:

[b600]
driver = blazer # B-600使用blazer driver,其他UPS請參考NUT文件
port = /dev/cuaa0 # 即 COM port 1,如果接在 COM port 2 則為 “/dev/cuaa1″。
desc = “PhoenixTec B-600″ # 這個只是 UPS 說明,隨意即可。

Step 3. 設定 UPSD
/usr/local/etc/nut/upsd.conf:

# 如果沒有要讓本機外的 upsmon 連線的話,這樣設就可以了。
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACCEPT localhost
REJECT all

Step 4. 設定 UPSD user
/usr/local/etc/nut/upsd.users:

# 設定 UPSD 允許連線 user 清單,#PASSWORD# 請改為你想用的密碼。
[upsmonuser]
password = #PASSWORD#
allowfrom = localhost
upsmon master

Step 5. 設定 UPSMon
/usr/local/etc/nut/upsmon.conf:

# 設定 ups 名稱、連線 UPSD 所使用之 user、password,及 battery low 時關機參數 (#PASSWORD# 請改為你用的密碼)。
MONITOR b600@localhost 1 upsmonuser #PASSWORD# master
SHUTDOWNCMD “/sbin/shutdown -h +0″

Step 6. 建立開機自動啟動 script

cd /usr/local/etc/rc.d
cp nut.sh.sample nut.sh
chmod +x nut.sh

Step 7. 啟動 NUT

/usr/local/etc/rc.d/nut.sh start

啟動後會看到類似的訊息:

Network UPS Tools – Blazer UPS driver 0.07 (2.0.0)
Syncing with UPS: … done
Identifying UPS: … done
Detected UPS on /dev/cuaa0
Network UPS Tools upsd 2.0.0
/usr/local/etc/nut/upsd.conf is world readable
Connected to UPS [b600]: blazer-cuaa0
/usr/local/etc/nut/upsd.users is world readable
Synchronizing…….. giving up
Network UPS Tools upsmon 2.0.0
UPS: b600@localhost (master) (power value 1)
Network UPS Tools upslog 2.0.0
logging status of b600@localhost to /var/log/ups.log (300s intervals)

可能是因為 blazer driver 對 B-600 的支援並不是很完全,所以一開始會有一些錯誤訊息,不過啟動之後的運作都還算正常。

可以使用 upsc 程式 query UPS 相關參數:

#upsc b600@localhost
battery.charge: 20.1
battery.voltage: 13.5
driver.name: blazer
driver.parameter.port: /dev/cuaa0
driver.version: 2.0.0
driver.version.internal: 0.07
input.frequency: 60.1
input.voltage: 118.5
output.voltage: 116.1
ups.load: 029
ups.mfr: Centralion
ups.model: Blazer
ups.status: OL

在 /var/log/ups.log 裡,也會有每五分鐘一次的記錄:

20040925 222000 NA NA NA [NA] NA NA
20040925 222500 20.1 118.5 029 [OL] NA 60.2
20040925 223000 20.1 118.5 029 [OL] NA 60.2
……

一開始的「NA NA…」是 nut 一開始啟動時第一次的 query,好像固定都會失敗 Orz,後面的就會正常了。

搭配 MRTG
ups.cfg example:

WorkDir: /usr/local/www/data/mrtg/ups
Options[_]: growright, bits
Language: big5
EnableIPv6: no

Target[ups]: `/usr/local/bin/upsc b600@localhost battery.voltage | /usr/bin/awk ‘{print $1*10}’ && /usr/local/bin/upsc b600@localhost input.voltage | /usr/bin/awk ‘{print $1*10}’`
MaxBytes[ups]: 1500
Options[ups]: gauge, noinfo, nopercent, growright, unknaszero
Title[ups]: UPS Status
YLegend[ups]: Volts
Legend1[ups]: Battery Voltage
Legend2[ups]: Input Voltage
YTicsFactor[ups]: 0.1
Factor[ups]: 0.1
LegendI[ups]: Battery Voltage
LegendO[ups]: Input Voltage
ShortLegend[ups]: v
PageTop[ups]: <H1>UPS Status&lt/H1&gt

圖片範例:
UPS MRTG Graph