長年 APC の UPS を使ってきたけど、ちょっと変えてみようということで Omron の BY50S を買ってみた。
おおむね有難い先人の情報で事足りるのだけど……
しかし、日本語の情報はみんなudevの設定が微妙だ。
というわけでDebian stretch での設定を記録しておく。
UPS 監視デーモンを入れる
$ sudo apt install nut
udev の設定
udev を設定して USB を挿した時に nut デーモンから読めるよう設定する。このパートが書きたかった事の殆ど全てである。
ポイントは2つ
- 自分の設定ファイルは /etc の下に置こう
- SYMLINK を使ってデバイスのパスを固定しよう
みんなが罠にはまっているけど、パッケージで用意される /lib/udev/rules.d/62-nut-usbups.rules を直接編集するのはやめよう。アップデート時に上書きされて後日泣くことになる。あと、分離できなくなるので自分の設定ファイルを /lib/udev 以下に置くのもやめよう。
というわけで自分のファイルは用意されている /etc/udev/rules.d 以下に置く。/etc/udev/rules.d/90-omron-ups.rules とかの名前にしておこう。
中身はこうだ
# Omron BY50S - blazer_usb
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
ATTRS{idVendor}=="0590", ATTRS{idProduct}=="0081", \
MODE="0664", GROUP="nut", SYMLINK+="ups"
ここでもう一つのポイントとして SYMLINK+="ups"
を使おう。これで 常に /dev/ups というパスでアクセスできる。どこのポートに挿しても、同じクラスのデバイスの何番目に指してもOKだ。USB のバス番号を調べる必要もない。
設定が終わったらルールをリロードする。
$ sudo udevadm control --reload
この後 USB を抜き差ししてみて、/dev/ups と言う symlink が作られる事を確認しよう。
監視デーモン nut の設定
後は先人の情報通り設定ファイルを編集する。
/etc/nut/nut.conf
MODE=standalone
/etc/nut/ups.conf
[by50s]
driver = blazer_usb
port = /dev/ups
desc = "Omron UPS BY50S"
vendorid = 0590
productid = 0081
subdriver = ippon
default.battery.voltage.high = 13.5
default.battery.voltage.low = 11.5
default.battery.charge.low = 30
ondelay = 0
port に先程の /dev/ups
を指定する。
default.battery.voltage の high /low に関しては情報通りの値を使わせして貰った。こちらでも上手く動いている。
/etc/nut/upsmon.conf
MONITOR by50s@localhost 1 upsmon upspass master
/etc/nut/upsd.users
[upsmon]
password = upspass
upsmon master
設定のチェック
ここまで設定したら以下のコマンドでチェックする。
$ sudo -u nut /lib/nut/blazer_usb -a by50s -DDD
read: の行でそれらしき値が出てくるならOK. Ctrl+C で止める。
設定の適用
systemctl でやっても良いんだけど面倒くさいので init script で……
$ sudo /etc/init.d/nut-server restart
$ sudo /etc/init.d/nut-client restart
状態の確認
upsc で見られる
$ upsc by50s
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 30
battery.voltage: 13.50
battery.voltage.high: 13.5
battery.voltage.low: 11
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ups
driver.parameter.productid: 0081
driver.parameter.subdriver: ippon
driver.parameter.synchronous: no
driver.parameter.vendorid: 0590
driver.version: 2.7.4
driver.version.internal: 0.12
input.frequency: 49.9
input.voltage: 102.5
input.voltage.fault: 0.0
output.voltage: 102.1
ups.beeper.status: disabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 13
ups.productid: 0081
ups.status: OL BYPASS
ups.temperature: 47.7
ups.type: offline / line interactive
ups.vendorid: 0590