headAD

2018/03/17

Raspberry Pi にNUTをセットアップする

前回、UPSを取付けて停電時の電源バックアップを行う記事を書きました。

今回は、UPSのモニターを行うNUT(Network UPS Tools)をセットアップする記事です。
Web上で電源の状態を確認できるほか、UPSのバッテリーが不足(電源喪失)した時にはシャットダウンコマンドを発行します。


cpj500-raspi

[環境]
 Raspberry Pi 2B(ラズパイ)、OSはRaspbian jessieです。以下設定の内容はjessie版での記述で、他のディストリビューションやバージョンでは設定が異なる場合があるので注意してください。

ラズパイは、Webサーバーとして稼働中でルーターと接続している以外のモニタ類は接続していません。通常は別のPCからリモートでモニタリングしているのでUPSもNUTインストールしてモニタリングしようというわけです。


[ドライバーセットアップ]
 UPSとラズパイをUSBケーブルで接続し、lsusbコマンドで確認します。
CP1500AVR UPSとして認識されています。

Bus 001 Device 004: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS

次に、NUTをインストールし、その後で一連のファイルを設定します。
sudo apt-get update
sudo apt-get install nut nut-client nut-server

ここでは、NUTのドライバーテータベースから CP1500PFCLCD が標準で設定されるので続けます。
/etc/nut/ups.conf の最終行に追加します。cyberups の名前は好きに変えてください。
desc はups機器の説明を書きます。 (2018-3-24修正)

[cyberups]
        driver = usbhid-ups
        port = auto
        desc = "CyberPower CPJ500"
        pollinterval = 15

次に、ドライバサービスをスタートします。その後、ステータスを確認し active や Startup 出来ているかを見ます。
sudo systemctl start nut-driver
sudo systemctl status nut-driver
● nut-driver.service - Network UPS Tools - power device driver controller
    Loaded: loaded (/lib/systemd/system/nut-driver.service; static)
    Active: active (running) since 木 2018-03-15 07:40:59 JST; 14h ago

 ・・・省略・・・
  3月 15 07:40:57 raspi1 upsdrvctl[9641]: Using subdriver: CyberPower HID 0.3
  3月 15 07:40:57 raspi1 upsdrvctl[9641]: Network UPS Tools - Generic HID driver 0.38 (2.7.2)
  3月 15 07:40:57 raspi1 upsdrvctl[9641]: USB communication driver 0.32
  3月 15 07:40:59 raspi1 usbhid-ups[9643]: Startup successful
  3月 15 07:40:59 raspi1 upsdrvctl[9641]: Network UPS Tools - UPS driver controller 2.7.2
  3月 15 07:40:59 raspi1 systemd[1]: Started Network UPS Tools - power device driver controller.

[サーバーセットアップ]

まず、 /etc/nut/upsd.conf の中で localhost の LISTEN が # でコメントアウトされているので、# を取り除きます。ポートの3493のそのままです。
LISTEN 127.0.0.1 3493

同じファイルの中で MAXAGE を変更します。
MAXAGE = 25


次に、アカウントを設定します。 /etc/nut/upsd.users の最下行に下の内容を追記します。
ここでは、adminとmasterのユーザーを設定しています。

[admin]
        password = admin123
        actions = SET
        instcmds = ALL
[upsmon_local]
        password  = local123
        upsmon master


次に、サーバーの動作モードを設定します。UPSでバックアップされるPCは1台なので standalone を /etc/nut/nut.conf にセットします。
MODE=standalone

サーバーサービスをスタートし、そしてステータスを確認します。
sudo systemctl start nut-server
sudo systemctl status nut-server

では localhost から接続できるかテストしてみましょう。 cyberups とはドライバーセットアップで設定した名前です。
sudo upsc cyberups@localhost
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 20
battery.mfr.date: CPS
battery.runtime: 10200
battery.runtime.low: 300
battery.type: PbAcid
battery.voltage: 9.1
battery.voltage.nominal: 12
device.mfr: CPS
device.model: CPJ500
device.type: ups
driver.name: usbhid-ups
・・・省略・・・
UPSからの情報がちゃんと取れていて、device.model: CPJ500 と製品が認識されています。

[クライアントセットアップ]
システムをモニタする mastert ユーザーを /etc/nut/upsmon.conf へ追加します。
MONITOR cyberups@localhost 1 upsmon_local local123 master
同じファイルの中で DEADTIME を変更します。
DEADTIME = 25

idやパスワードを記録しているので、他から見られないようにパーミッションを設定します。
sudo chown root:nut /etc/nut/*
sudo chmod 640 /etc/nut/*

クライアントをスタートして、ステータスを確認します。
sudo systemctl start nut-monitor
sudo systemctl status nut-monitor

もう一度、localhost から情報が取れるかテストします。
sudo upsc cyberups@localhost


以上で、NUTシステムが構成されました。
このままでもいいのですが、次はWebでモニタリングする設定をしてみます。
長くなったので次の記事にします。

次の記事は予定変更して、この記事の補足を書きました。



(参考にした記事)
Network UPS Tools
Raspberry Pi UPS monitor (with Nginx web monitoring)
UPS Server on Raspberry Pi
NUT & CyberPower UPS





end.

0 件のコメント: