apcupsd(2)



前回の説明に追記する。
前回はシリアルケーブル接続によるapcupsdのインストールを行ったが、それからしばらく時が経ちUSBインタフェースがスタンダードとなってきた。
シリアル接続用設定のapcupsdを稼働させている場合でUSBドライバがこれに含まれていない場合は再度インストールし直す必要がある。
cd /usr/ports/sysytils/apcupsd/
make deinstall
これでapcupsdをアンインストールするが設定ファイルは消えないのでご安心を。
USBドライバ(あるいはsnmpドライバ)を設定するためのオプションを表示させる。
make config clean



後述するがsnmpドライバも入れておいた方が良いと思う。
configが出来たら
make install clean
これでいい。

なおapcupsdが求めるsnmpよりもバージョンの古いものが既に入っている場合はコンフリクトするとメッセージが出る。
この場合は古いバージョンを削除すればいいのだが、他のアプリ等でバージョン依存のあるものが動いている場合は注意を要する。

シリアル接続の場合のapcupsd.confの接続に関する部分は、
UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dec/ttyS0

USB接続の場合は
UPSCABLE usb
UPSTYPE usb
DEVICE
※DEVICE項目は空欄

snmpの場合は
UPSCABLE ether
UPSTYPE snmp
DEVICE IPアドレス 161 APC public
(IPアドレスのみ環境に合わせて変更、他はこのままでOK)
となる。

USBの場合はケーブルの問題はないが、シリアル接続の場合は専用ケーブルが必要となる。
APCでも売っているが結構高額だ。
自作すれば激安で出来る。
回路は以下の通りで964-0024Cがapc品番の結線だ。
ただしPC側のショート2カ所を外さないと私の場合はうまく行かなかった。



RS-232C接続とUSB接続で取得できるデータに差はないが、snmp接続だとバッテリ電圧などが取得できない。
なおネットワークカードを挿入したままUSB接続はすることが出来る。
ネットワークに関してはこちらをご覧頂きたい。
バッテリ電圧が取得出来ない件に関して、apcupsd-3.14.4からapcupsd-3.14.8にバージョンアップすることで改善された。
ただし電圧の誤差がある。
バッテリ電圧27.94V時にUPSが認識している電圧が27.67Vでありsnmpで取得する電圧が27.7V、しかしapcupsdでの表示は27.0Vとなる。
これはsnmpで電圧を取得する時に100mVオーダでの情報を見ずに1V分解能のデータを取得しているからではないかと思う。

apcupsdのソースを修正して100mV単位のデータを取得するようにすることは出来るのだが、その値を1/10にするスマートな方法が分からない。
この値を使っている全てのソースを修正するのは結構大変で、取得の部分で変更できないかと思ったのだが私の知識では難しかった。
テスターでバッテリ電圧を計測(テスター2台で計測したが同電圧だった)




AP9617のステータス表示画面




apcupsdのcgi画面のバッテリ電圧表示



FreeBSDのportsでは3.14.4が最新だったのでSourceをダウンロードしてコンパイル後インストールした。
portsインストールと同様にするためにconfigureオプションを書いた。

./configure --enable-ether --with-upstype=snmp --with-upscable=ether --enable-cgi --with-cgi-bin=/home/www/docs/ff/analog --sysconfdir=/usr/local/etc/apcupsd

ご覧頂ければ解ると思うが、usbの場合はオプション指定が異なる。