apcupsdに関するページです。

apcupsdとは

APC社製のUPSを用いて電源監視するためのツールである。本家サイトSourceForge.net

SMT モデルの対応

APC は Smart UPS シリーズに新しい SMT モデルを追加し、こちらにシフトしている。このタイプの UPS は Microlink という非公開の新たなプロトコルを利用していて、apcupsd ではその機能を制御することはできなかった。しかし、APC はファームウェアのバージョンアップにより MODBUS と呼ばれるプロトコルもサポートするようポリシーを変更し、このプロトコルに関するドキュメントを公開したので、2014年1月31日に公開された 3.14.11 で多くの SMT モデルに対応できるようになった。現在のところ、RS-232Cのみのサポートされているが、将来的には USB も使えるようになるだろう。

Debian GNU/Linux 3.1 (sarge) でのインストール

パッケージ化されているので、apt-get installするだけ。

# apt-get install apcupsd apcupsd-cgi apcupsd-doc

以下のパッケージが新たにインストールされる。

apcupsd apcupsd-cgi apcupsd-doc libsnmp-base libsnmp4.2

インストール中に

Setting up apcupsd (3.10.17-2) ...
Please check your configuration  ISCONFIGURED in /etc/default/apcupsd

と表示されるが、これは/etc/default/apcupsdファイル中のISCONFIGURED が yes になっていないとデーモンが起動しないようになっているためである。

設定ファイルの変更

/etc/apcupsd/apcupsd.conf

変更点(USB接続のAPC CS500の場合)

UPSCABLE smart    → UPSCABLE usb
UPSTYPE smartups  → UPSTYPE usb
DEVICE /dev/ttyS0 → DEVICE
TIMEOUT 0         → TIMEOUT 300

/etc/default/apcupsd

ISCONFIGURED=no   → ISCONFIGURED=yes

テスト

apcupsdが起動していない状態で、apctestを実行する。

# apctest

起動

# /etc/init.d/apcupsd start

UPSの状態の確認

# apcaccess status

3.10.17

APC      : 001,038,0915
DATE     : Tue May 23 19:42:32 JST 2006
HOSTNAME : athlon
RELEASE  : 3.10.17
VERSION  : 3.10.17 (18 March 2005) debian
UPSNAME  : athlon
CABLE    : USB Cable
MODEL    : APC CS 500
UPSMODE  : Stand Alone
STARTTIME: Tue May 23 19:30:40 JST 2006
STATUS   : ONLINE
LINEV    : 000.0 Volts
LOADPCT  :  31.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  32.8 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 300 Seconds
OUTPUTV  : 100.0 Volts
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 000.0 Volts
HITRANS  : 000.0 Volts
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 13.6 Volts
LINEFREQ : 60.0 Hz
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x02000008 Status Flag
SERIALNO : AB0539125949
BATTDATE : 2005-09-24
NOMBATTV :  12.0
FIRMWARE : 8.h10.A USB FW:h10
APCMODEL : APC CS 500
END APC  : Tue May 23 19:43:00 JST 2006

USB接続タイプの場合、AC側電圧が取得できないようだ。

3.12.4

APC      : 001,040,0971
DATE     : Mon Dec 25 18:28:39 JST 2006
HOSTNAME : hglan300
RELEASE  : 3.12.4
VERSION  : 3.12.4 (19 August 2006) debian
UPSNAME  : hglan300
CABLE    : USB Cable
MODEL    : APC CS 500
UPSMODE  : Stand Alone
STARTTIME: Mon Dec 25 17:29:55 JST 2006
STATUS   : ONLINE
LINEV    : 099.0 Volts
LOADPCT  :   9.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  97.8 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 300 Seconds
OUTPUTV  : 100.0 Volts
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 090.0 Volts
HITRANS  : 110.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 13.6 Volts
LINEFREQ : 60.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : AB0539125949
BATTDATE : 2005-09-24
NOMBATTV :  12.0
FIRMWARE : 8.h10.A USB FW:h10
APCMODEL : APC CS 500
END APC  : Mon Dec 25 18:28:52 JST 2006

USB接続タイプでもAC側電圧が取得できるようになっている。

3.14.2

APC      : 001,052,1237
DATE     : Sat Jul 19 09:08:02 JST 2008
HOSTNAME : dobokuPc4
RELEASE  : 3.14.2
VERSION  : 3.14.2 (15 September 2007) debian
UPSNAME  : UPS_IDEN
CABLE    : APC Cable 940-0024C
MODEL    : SMART-UPS 700
UPSMODE  : Stand Alone
STARTTIME: Fri Jul 18 18:24:25 JST 2008
STATUS   : ONLINE
LINEV    : 101.4 Volts
LOADPCT  :  16.1 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  80.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
MAXLINEV : 101.4 Volts
MINLINEV : 100.1 Volts
OUTPUTV  : 101.4 Volts
SENSE    : Low
DWAKE    : 000 Seconds
DSHUTD   : 020 Seconds
DLOWBATT : 02 Minutes
LOTRANS  : 090.0 Volts
HITRANS  : 110.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 40.5 C Internal
ALARMDEL : 5 seconds
BATTV    : 27.7 Volts
LINEFREQ : 60.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI   : 336
STATFLAG : 0x07000008 Status Flag
DIPSW    : 0x00 Dip Switch
REG1     : 0x00 Register 1
REG2     : 0x00 Register 2
REG3     : 0x00 Register 3
MANDATE  : 11/10/99
SERIALNO : NS9946130847
BATTDATE : 18/07/08
NOMOUTV  : 100
NOMBATTV :  24.0
EXTBATTS : 0
FIRMWARE : 50.12S.A
APCMODEL : GWA
END APC  : Sat Jul 19 09:09:00 JST 2008

Windows7 64bit での利用

Microsoft は Vista から電子署名のないドライバが 64bit 版では使えないようにポリシーを変更した。そのため、署名のない apcupsd のドライバは 64bit 版の Windows7 では使えないため、サービスがエラーコード 1067 を吐いて立ち上がってこない。

Jernej Simončič-3 氏が署名付きのドライバを作成してくれたので、ありがたくそれを使わせてもらう。

デバイスマネージャのバッテリの項目に「American Power Conversion USB UPS (Apcupsd)」が現れればOK。

apcupsd-windriver.jpg

(2014-07-31: 3.14.11 で Windows 用の USB ドライバがデジタル署名されたので、この問題は解決された???)

CGIによるモニタリング

multimon.cgiを使う。Debianの場合、/usr/lib/cgi-bin/apcupsdディレクトリ以下にインストールされるので、

http://ホストのIPアドレス or ホスト名/cgi-bin/apcupsd/multimon.cgi

にアクセスすればよい。

/etc/apache2/conf.d/apcupsd に以下の内容を記述して、

ScriptAlias /apcupsd/ /usr/lib/cgi-bin/apcupsd/
<Directory "/usr/lib/cgi-bin/apcupsd/">
	Options ExecCGI
	Order deny,allow
	Deny from all
	Allow from 127.0.0.1
	Allow from aa.bb.cc.dd      ←アクセスを許可するマシンのIPアドレス or ネットワーク
	Allow from ee.ff.gg.hh/ii   ←アクセスを許可するマシンのネットワーク
</Directory>

apache2 を再起動すれば、以下のURLでもアクセスできる。

http://ホストのIPアドレス or ホスト名/apcupsd/multimon.cgi

バッテリの交換

ジャンクで購入したAPC SmartUPS700のバッテリが死んでいたので、秋月電子で代替用のバッテリを購入して、入れ換えた。(参考:jlb APC SU700J のバッテリ交換)元のバッテリは、交換作業の際に引き出しやすいように前面底にテープが着けられていた。それを真似て、取り出し用テープを着けた。

(2008-06-26 追記) 研究室に転がっていたAPC SmartUPS1400もバッテリ交換した。元のバッテリは既に膨張していて、引き出すのに苦労した。電圧を測ると2個とも1V以下だったので、完全に液漏れしていたようだ。秋月電子の完全密封型鉛蓄電池 (12V 20Ah)長寿命タイプ [WP20-12IE]と入れ替えた。端子の位置がオリジナルとかなり異なるので、ヒューズや プラグは位置を変えて再利用した。詳しくは、ここを参照のこと。

Compatibility List

メモ。互換品との交換はもちろん自己責任で。

型番規格オリジナル秋月互換品備考
Smart-UPS 3000RM 2U (SUA3000RMJ2UB)12V 5.3Ah x 8B.B. Battery HR5.8-12Long WP5-12メールで報告あり
Smart-UPS SU1400J12V 17Ah x 2Panasonic LC-VD1217PWP20-12E or WP22-12 or WP20-12
Smart-UPS SU1000J12V 12Ah x 2B.B. Battery BP12-12WP12-12
Smart-UPS SU700J12V 7.2Ah x 2Panasonic LC-P127R2P1PXL12072 or WP8-12
Smart-UPS SU500J12V 5Ah x 2Panasonic LC-V125P1PXL12050 or WP5-12
ES50012V 7.2Ah x 1GS PXL12072PXL12072(同一) or WP8-12

Tips/Hardware/APC - 福岡大学奥村研究室 - okkun-lab Pukiwiki!によると、

  • 外すときはマイナスを外してプラスを外す、
  • 付けるときはプラスを付けてマイナスを付ける、の順。

だそうだ。

また、バッテリ交換後、バッテリが十分に充電されたら、「Testボタンを長押しして、赤ランプを消す」(メールで報告あり。今まで自分は電源を切った状態でバッテリを交換していたので、気が付かなかった。)
2013-11-13追記:Smart-UPS 1400 のバッテリが故障したが、何台もこのUPSにぶら下がっていたので、それらの電源を落とすのが面倒だったので実際にやってみたが、うまくできた。

参考:

バッテリ交換日の更新

ところで、バッテリを交換しただけでは、EEPROM上のバッテリ交換日の情報までは更新されない。上記サイトに掲載された情報にしたがい、バッテリ交換日を更新しておく。

Ubuntu 6.10ではapcupsdはUniverseに含まれるので、レポジトリにUniverseを追加してインストールした。2007/02/26の時点では3.12.3がインストールされたが、本家サイトには、最新のStable版として3.14.0がアップロードされていた。どこが変わったのか興味のあるところだ。

Smart-UPS SU1400J の場合

$ sudo /etc/init.d/apcupsd stop
$ sudo apctest

2007-02-26 14:02:41 apctest 3.12.3 (26 April 2006) debian
Checking configuration ...
Attached to driver: apcsmart
sharenet.type = DISABLE
cable.type = CUSTOM_SMART

You are using a SMART cable type, so I'm entering SMART test mode
Unknown mode.type: 11
Setting up the port ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing Smart UPSes.
Please select the function you want to perform.

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
7) Quit

Select function number: 5

This is the EEPROM programming section of apctest.
Please select the function you want to perform.

 1) Print EEPROM values
 2) Change Battery date
 3) Change UPS name
 4) Change sensitivity
 5) Change alarm delay
 6) Change low battery warning delay
 7) Change wakeup delay
 8) Change shutdown delay
 9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
15) Quit

Select function number: 2


Enter new battery date -- DD/MM/YY: 02/26/07  ←MM/DD/YYが正しいようだ。

Attempting to update UPS battery date ...
The old UPS battery date is: 04/26/00
The new UPS battery date is: 02/26/07

 1) Print EEPROM values
 2) Change Battery date
 3) Change UPS name
 4) Change sensitivity
 5) Change alarm delay
 6) Change low battery warning delay
 7) Change wakeup delay
 8) Change shutdown delay
 9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
15) Quit

Select function number: 15

2007-02-26 14:07:06 End EEPROM programming.

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
7) Quit

Select function number: 7

2007-02-26 14:07:09 End apctest.

ES500 の場合

$ sudo apctest


2012-02-20 13:47:02 apctest 3.14.6 (16 May 2009) debian
Checking configuration ...
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE

You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.

Getting UPS capabilities...SUCCESS

Please select the function you want to perform.

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

Select function number: 5

Current battery date: 11/23/2004

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

Select function number: 4

Current battery date: 11/23/2004
Enter new battery date (MM/DD/YYYY): 02/20/2012

Writing new date...SUCCESS
Waiting for change to take effect...SUCCESS
Current battery date: 02/20/2012

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

Select function number: 11

2012-02-20 13:48:29 End apctest.

apctest の "View battery date" ではバッテリ更新日が変更後の値になっているが、apcaccess status には反映されていなかった。(2012-02-20 Ubuntu Lucid の 3.14.6 では修正されていた。)

ビープ音が鳴らないようにする

娘の下宿にも ES500 を設置したが、ある時電圧が下がったのかバッティモードになってしまい、ビープ音が止まらなかったらしい。UPSの落とし方を教えていなかったのでパニックになったそうだ。気になって調べてみたら、apctest コマンドで簡単にできることが分かった。

/etc/apcupsd/apcupsd.conf の BEEPSTATE で設定できそうな感じであるが、残念ながらできないようである。

ES500 の場合

$ sudo apctest
[Snip]
Please select the function you want to perform.

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

Select function number: 6

Current alarm setting: ENABLED
Press...
 E to Enable alarms
 D to Disable alarms
 Q to Quit with no changes
Your choice: Select function: D

New alarm setting: DISABLED

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

Select function number: Q

$ sudo apcaccess status
[Snip]
ALARMDEL : No alarm
[Snip]

SmartUPS-1400 の場合

$ sudo apcaccess status
[Snip]  
MODEL    : SMART-UPS 1400
[Snip]
ALARMDEL : 5 seconds

$ sudo service apcupsd stop
$ sudo apctest
[Snip]
1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
Q) Quit

Select function number: 1
[Snip]
Alarm status: 0
[Snip]

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
Q) Quit

Select function number: 5

This is the EEPROM programming section of apctest.
Please select the function you want to perform.

 1) Print EEPROM values
 2) Change Battery date
 3) Change UPS name
 4) Change sensitivity
 5) Change alarm delay
 6) Change low battery warning delay
 7) Change wakeup delay
 8) Change shutdown delay
 9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
 Q) Quit

Select function number: 1

Doing prep_device() ...

Valid EEPROM values for the APC Smart UPS (any)

                         Config        Current  Permitted
Description              Directive     Value    Values
===================================================================
Upper transfer voltage   HITRANSFER    110      110 112 114 108 
Lower transfer voltage   LOTRANSFER    90       090 092 081 085 
Return threshold         RETURNCHARGE  0        00 15 50 90 
Sensitivity              SENSITIVITY   L        H M L L 
Low battery warning      LOWBATT       2        02 05 07 10 
Shutdown grace delay     SLEEP         20       020 180 300 600 
Alarm delay              BEEPSTATE     0        0 T L N 
Wakeup delay             WAKEUP        0        000 060 180 300 
Self test interval       SELFTEST      336      336 168 ON  OFF 
===================================================================
Battery date: 08/01/12
UPS Name    : UPS_IDEN


 1) Print EEPROM values
 2) Change Battery date
 3) Change UPS name
 4) Change sensitivity
 5) Change alarm delay
 6) Change low battery warning delay
 7) Change wakeup delay
 8) Change shutdown delay
 9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
 Q) Quit

Select function number: 5

Enter new alarm delay: N

The old UPS alarm status is: 0
The new UPS alarm status is: N

 1) Print EEPROM values
 2) Change Battery date
 3) Change UPS name
 4) Change sensitivity
 5) Change alarm delay
 6) Change low battery warning delay
 7) Change wakeup delay
 8) Change shutdown delay
 9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
 Q) Quit

Select function number: Q

2013-09-18 13:27:36 End EEPROM programming.

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
Q) Quit

Select function number: Q

$ sudo service apcupsd start
$ sudo apcaccess status
[Snip]
ALARMDEL : No alarm	変更が反映されている。
[Snip]

情報:Users - Is it possible to disable beeping?

リンク


添付ファイル: fileMPAO-98KJ7F_R0_EN.pdf 2941件 [詳細] fileapcupsd-windriver.jpg 1604件 [詳細] fileapcupsd-usb-driver-signed.zip 666件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-01 (金) 12:26:51 (2028d)