Raspberry Pi と BY50S と Ready NAS の連携
Network UPS tool を使って Raspberry Pi とオムロンのUPS BY50S、そして Ready NAS を連携させます。
次のサイトを参考にさせていただきました。ありがとうございました。
- http://blog.kenjiskywalker.org/blog/2014/02/02/ups-omron-nut/
- https://blog.shadypixel.com/monitoring-a-ups-with-nut-on-debian-or-ubuntu-linux/
NUT のセットアップ
NUT をインストールして、BY50S と連携できるようにします。
$ sudo apt-get install nut
ベンダーIDとデバイスIDを確認して、ルールに追記します。
$ sudo lsusb | grep -i omron
idVendorとidProductをメモしておく
→ Bus 001 Device 005: ID 0590:0081 Omron Corp.
vi /lib/udev/rules.d/52-nut-usbups.rules
→ 以下を追記
-------
# omron UPS BY50S - blazer_usb
ATTR{idVendor}=="0590", ATTR{idProduct}=="0081", MODE="664", GROUP="nut"
-------
NUT を設定します。
$ sudo vi /etc/nut/nut.conf
→ モードを変更
-------
MODE=standalone
-------
$ sudo vi /etc/nut/ups.conf
→ 以下を追記
-------
[ups]
driver = blazer_usb
port = auto
vendorid = 0590
productid = 0081
subdriver = ippon
-------
$ sudo vi /etc/nut/upsd.users
→ ユーザとパスワードを追加
-------
[upsmon]
password = pass
upsmon master
-------
$ sudo vi /etc/nut/upsmon.conf
→ いろいろ設定がありますが、参考にさせていただいたサイトの情報をそのままコピらせていただきました m(__)m
-------
RUN_AS_USER root
MONITOR ups@localhost 1 upsmon pass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD "/etc/nut/notifycmd"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
-------
停電時に Ready NAS をシャットダウン
notifycmd で NAS にシャットダウンを指示します。
$ sudo vi /etc/nut/notifycmd
-------
#!/bin/bash
#
# NUT NOTIFYCMD script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
LANG=C
export LANG
trap "exit 0" SIGTERM
if [ "$NOTIFYTYPE" = "ONLINE" ]
then
echo $0: power restored | wall
# Cause all instances of this script to exit.
killall -s SIGTERM `basename $0`
fi
if [ "$NOTIFYTYPE" = "ONBATT" ]
then
echo $0: 5 minutes till system powers down... | wall
# Loop with one second interval to allow SIGTERM reception.
let "n = 300"
while [ $n -ne 0 ]
do
sleep 1
let "n--"
done
echo $0: nas shutdown | wall
ssh root@192.168.1.yyy shutdown -h +0
echo $0: commencing shutdown | wall
upsmon -c fsd
fi
-------
設定の反映と動作確認
ルールを再読み込みし、デバイスを再認識してもらいます。
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger
$ sudo upsdrvctl start
NUT サービスを開始します。
サーバとクライアントの両方とも。
$ sudo /etc/init.d/nut-server start
$ sudo /etc/init.d/nut-client start
UPS の状態を確認します。
次のように状態が表示できれば成功です。
$ sudo upsc ups
battery.voltage: 13.50
battery.voltage.high: -1.08
battery.voltage.low: -0.87
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: 0080
driver.parameter.subdriver: ippon
driver.parameter.vendorid: 0590
driver.version: 2.6.4
driver.version.internal: 0.08
input.frequency: 49.9
input.voltage: 99.2
input.voltage.fault: 99.2
output.voltage: 98.9
ups.beeper.status: disabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 29
ups.productid: 0080
ups.status: OL BYPASS
ups.temperature: 37.5
ups.type: offline / line interactive
ups.vendorid: 0590
$ sudo upsc ups ups.status
OL BYPASS
$ sudo upsc ups ups.load
7
ここまで出来たら、実際に UPS の電源コードをコンセントから外してスクリプトがちゃんと呼び出されるかを確認します。
お疲れ様でした!
とても有用な記事を書いていただきありがとうございます。
1点質問なのですが、停電時にネットワーク経由でラズパイ→NASのシャットダウンが行われているようですが、ルータもUPSにつないでいて自宅内NWは生きているという前提でしょうか?
私の自宅環境だとNASとルータが物理的に離れていて、ルータの電源バックアップを取ることができないので、停電時にはルータが死ぬため、自宅内NWも落ちてしまうことになります。
ラズパイとNASをUSB接続してUSB経由でシャットダウンさせようと考えているのですが、NUTツール群にそのような機能があるかどうかわかりますか??
コメントありがとうございます。
ご察しの通り、停電時もネットワークが生きている前提です。
ただ、現在は機器類や配置が変わっているため確認できないのですが、ルータから長いLANケーブルをひいて、一旦4ポートのHUBを挟み、そこからNASとラズパイを繋いでいたと思います。
UPSには、NASとラズパイ、HUBをつなげていました。(実際にはTVとかTV用のHDDとかも)
NUTツール群にUSB経由で操作する機能があるかは、すみません、わかりません。
よろしくお願いします。