FreeBSD で OMRON UPS を監視する
OMRON の BN75S という UPS を使用していますが、OMRON の公式ソフトウェアでは FreeBSD は対応していません。
USB なのでなんとかならないかなといろいろ調べてみたところ、うまく認識できましたのでご紹介します。
USB の確認
USB ケーブルでつなぎ、dmesg コマンドで ugen として認識していることとその番号を確認します。
ここでは仮に ugen0.2 として認識していたとして話を進めます。
以下のコマンドで Vendor ID と Product ID を確認します。
usbconfig -d ugen0.2 dump_device_desc
また後述する UPS を管理するソフトウェア Network UPS Tools(NUT) でアクセス出来るよう、パーミッションを変更します。
chmod 0666 /dev/ugen0.2
また起動時や USB 挿抜時にパーミッションが戻ってしまうので、/etc/devfs.conf に以下のように記述すると良いようです。
こちらは私は未検証ですが……。
perm ugen0.2 0666
Network UPS Tools の設定
Network UPS Tools は ports/pkg からインストールできます。
sysutils/nut です。
インストールが終わったら、/usr/local/etc/nut 以下に設定ファイルを書いていきます。
nut.conf
MODE=standalone
ups.conf
[BN75S]
driver = blazer_usb
port = auto
desc = "OMRON BN75S"
vendorid = 0590
productid = 006f
subdriver = ippon
ここでの vendorid と productid は、先ほど usbconfig コマンドで確認したものを記述して下さい。
upsd.conf
空のファイルを用意して下さい。
upsd.users
[upsuser]
password = upspass
upsmon master
モニタリングの為のユーザ情報です。
upsuser と upspass の部分は、後述する upsmon.conf に書くものと一致させます。
upsmon.conf
RUN_AS_USER root
MONITOR BN75S@localhost 1 upsuser upspass master
SHUTDOWNCMD "/sbin/shutdown -p now"
NOTIFYCMD /usr/local/etc/nut/notify.sh
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced"
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
モニタリングに関する設定です。
NOTIFYFLAG に EXEC が入ると、NOTIFYCMD で指定したコマンドに NOTIFYMSG を引数として渡して実行されます。
メール送信による通知に使っています。
upssched.conf
CMDSCRIPT /usr/local/bin/upssched-cmd
notify.sh
#!/bin/sh
DATE=`date +"%Y-%m-%d %H:%M:%S"`
### Notification from UPS
/usr/sbin/sendmail -t <<_EOF_
From: [email protected]
To: [email protected]
Subject: [UPS_alert] $1
*** Alert from Network UPS Tools ***
date: ${DATE}
mess: $1
_EOF_
こんな感じでメールを送信するスクリプトを置いておきます。
置く場所は upsmon.conf の NOTIFYCMD で記述された場所です。
パーミッションも設定しておいて下さい。
これらの設定で通信できるか以下の要領で確認します。
/usr/local/libexec/nut/blazer_usb -u root -a BN75S -DDDD
さてここまで設定したら rc.conf で以下のように有効にします。
ちなみに upslog は /var/log/ups.log に状態を記録するものです。
nut_enable="YES"
nut_upslog_enable="YES"
nut_upslog_ups="BN75S@localhost"
nut_upsmon_enable="YES"
以下のようにデーモンを起動します。
/usr/local/etc/rc.d/nut start
/usr/local/etc/rc.d/nut_upslog start
/usr/local/etc/rc.d/nut_upsmon start
ここまで来れば実際の値などは以下で取得できますので、
出力結果を加工すれば munin などでグラフも書けますね。
upsc BN75S
ディスカッション
コメント一覧
まだ、コメントがありません