作業日記@HatenaBlog

各種の作業メモ

USB-Serial ケーブルを利用した UPS 制御

USB-Serial ケーブル

FreeBSD 8.0 に接続

本体正面側の USB ポートに UC-SGT を接続すると、次のメッセージが表示された。

ugen3.2:  at usbus3
uplcom0:  on usbus3

USB-Serial ケーブルを使用するには、uplcom と ucom ドライバが必要。

# man 4 uplcom
uplcom -- USB support for Prolific PL-2303/2303X/2303HX serial adapters driver
 
# man 4 ucom
ucom -- USB tty support

上記 man から、/boot/loader.conf に次を記述。

uplcom_load="YES"
ucom_load="YES"

バイスは次のとおり

# cd /dev
# ls -l | grep cua
crw-rw----  1 uucp    dialer      0,  89 Feb  3 22:22 cuaU0
crw-rw----  1 uucp    dialer      0,  89 Feb  3 22:22 cuaU0.init
crw-rw----  1 uucp    dialer      0,  89 Feb  3 22:22 cuaU0.lock

UPS 制御

APC 社製 Smart-UPS 1500 を用意。
USB-Serial ケーブルを使って UPS の制御を試みる。
ports のインストール

# portinstall sysutils/apcupsd

次の画面が表示された。

[X] IPV6           Build with IPv6 support
[X] MFD_REWRITES   Build with 64-bit Interface Counters
[X] PERL           Install additional perl modules
[X] PERL_EMBEDDED  Build embedded perl
[ ] TKMIB          Install graphical MIB browser
[X] DUMMY          Enable dummy values as placeholders
[ ] DMALLOC        Enable dmalloc debug memory allocator

FreeBSD 8.0-RELEASE-p2 amd64 版なので、たぶん 64-bit 関係が必要だろうと推測し、赤×をチェックして OK とする。
さらにコンパイルが進むと次のオプション選択画面が表示される。

Options for apcupsd 3.14.5_1
[X] APCSMART_DRV  Compile APC SmartUPS serial driver
[X] APCDUMB_DRV   Compile dumb UPS driver
[ ] CLIENT_ONLY   Only NIS client (no network server or drivers)
[X] CGI           Compile with CGI programms to show status
[X] PCNET_DRV     Compile PowerChute Network Shutdown driver
[X] USB           Compile with USB Support driver
[X] SNMP_DRV      Compile with SNMP driver
[X] TCP_WRAPPERS  Compile with TCP_WRAPPERS support
[ ] TEST_DRV      Compile TEST driver
[ ] GAPCMON       Build GTK GUI front-end

将来的に CGI で状態表示をさせたいので、赤×をチェックして OK とする。

設定ファイル編集

コンパイル、インストールが完了したので、念のため rehash する。

# rehash

続いて apcupsd の設定ファイルを編集する。

# cd /usr/local/etc/apcupsd/
# cp apcupsd.conf apcupsd.conf.orig
# vi apcupsd.conf

設定項目は次のとおり。

UPSNAME S-UPS1500  ※任意
UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dev/ttyU0  ※USB-Serial に対応?
LOCKFILE /var/spool/lock
SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run
NOLOGINDIR /var/run
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 5
TIMEOUT 30
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 90
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

rc.conf を編集

# vi /etc/rc.conf
apcupsd_enable="YES"
apcupsd_program="/usr/local/sbin/apcupsd"

ステータスを確認 (1)

# /usr/local/etc/rc.d/apcupsd.sh status
apcupsd is running as pid nnnnn.

ステータスを確認 (2)

# apcaccess status
APC      : 001,051,1229
DATE     : Wed Feb 03 23:32:31 JST 2010
HOSTNAME : foo.bar.com
RELEASE  : 3.14.5
VERSION  : 3.14.5 (10 January 2009) freebsd
UPSNAME  : S-UPS1500
CABLE    : Custom Cable Smart
MODEL    : Smart-UPS 1500
UPSMODE  : Stand Alone
STARTTIME: Wed Feb 03 23:29:09 JST 2010
STATUS   : ONLINE
LINEV    : 102.9 Volts
LOADPCT  :   0.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT : 335.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 5 Minutes
MAXTIME  : 30 Seconds
MAXLINEV : 103.6 Volts
MINLINEV : 102.2 Volts
OUTPUTV  : 102.9 Volts
SENSE    : High
DWAKE    : 000 Seconds
DSHUTD   : 090 Seconds
DLOWBATT : 02 Minutes
LOTRANS  : 092.0 Volts
HITRANS  : 108.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 23.4 C Internal
ALARMDEL : 5 seconds
BATTV    : 27.7 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : OK
STESTI   : 336
STATFLAG : 0x07000008 Status Flag
REG1     : 0x00 Register 1
REG2     : 0x00 Register 2
REG3     : 0x00 Register 3
MANDATE  : 09/19/09
SERIALNO : ASxxxxxxxxxx
BATDATE  : 09/19/09
NOMOUTV  : 100 Volts
NOMBATTV :  24.0 Volts
EXTBATTS : 0
FIRMWARE : 601.18.A
APCMODEL : FWA
END APC  : Wed Feb 03 23:32:46 JST 2010