停電時にPCをシャットダウンさせるapcupsdの設定(Ubuntu+Smart-UPS)

スポンサーリンク

Ubuntu+Smart-UPS 使用時の、apcupsd の設定方法です。

準備

BIOS設定

本記事の設定でUPS使用時に、停電になった際はPCが自動的にシャットダウンされます。その後、復電した際にPCが自動的に起動してくるように、BIOSの設定を行います。

PC側のBIOS設定の電源項目(After Power Failure や Power Failure Recovery 等)で、Power ON や AlwaysON を選択してください。

PCのシャットダウン時間計測

PCでシャットダウンを実行し、電源が切れるまでの時間を計測しておいてください。
計測した時間は、後で設定の際に参考にします。

apcupsdインストール・USBケーブル接続確認

UPSとPCをUSBケーブルで接続しておきます。

apcupsdをインストールします。

apt install apcupsd

/etc/apcupsd/apcupsd.conf で UPSCABLE、UPSTYPE 、DEVICE を以下のようにします。

UPSCABLE usb
UPSTYPE usb

#DEVICE /dev/ttyS0

apcupsdを再起動します。

/etc/init.d/apcupsd restart

次を実行します。

/sbin/apcaccess status

表示結果で、STATUS : ONLINE と出ていたら、UPSとPCの接続はOKです。

STATUS : COMMLOST と出ていたら、apcupsd.conf でDEVICE の行をコメントアウトしていないか、ケーブルが認識されていません。
接続OKの場合は、/var/log/syslog に、次のように usb-0000:00:1d.0-1.3/input0 のような内容が出力されているはずです。(数値は環境により異なります)
これが出ていない場合は、USBケーブルの接続を物理的にPCが認識していません。ケーブルがちゃんと刺さっているか確認してください。

Dec 16 14:45:33 test-pc kernel: [519026.318326] hid-generic 0003:051D:0003.0001: hiddev0,hidraw0: USB HID v1.00 Device [American Power Conversion  Smart-UPS 750 FW:UPS 09.3 / ID=18] on usb-0000:00:1d.0-1.3/input0

設定

/etc/apcupsd/apcupsd.conf で ONBATTERYDELAY、TIMEOUT、BATTERYLEVEL、MINUTES のパラメータを設定します。

停電からPCシャットダウンまでの流れ

UPS使用時は、次のような流れで停電時にPCシャットダウン、復電時に起動がなされます。
太字の部分が、apcupsd.conf で設定するパラメータです。

[通常時動作]
  ↓
[停電発生]
  |
  |ONBATTERYDELAY(秒)経過
  |(経過前に復電したら、[通常時動作]に戻る)
  ↓
apcupsdは電源障害と判断
  |
  | TIMEOUT(秒)経過
  | または バッテリー残量 が BATTERYLEVEL(%)以下になる
  | または バッテリー残量 が MINUTES(分)以下になる
  ↓
apcupsd は /etc/apcupsd/apccontrol doshutdown を実行(shutdown -h now が実行される)
  ↓
PCの電源が切れる
  ↓
UPS本体で60秒のカウントダウン開始
  |
  | 60秒経過
  ↓
UPSの電源が切れる
  ↓
 [復電]
  ↓
UPS電源ON
  ↓
PCの電源がONになる
  ↓
[通常時動作]に戻る

TIMEOUT、BATTERYLEVEL、MINUTES の設定

TIMEOUT、BATTERYLEVEL、MINUTES の設定を行います。
なお、値を変更した後は、apcupsdを再起動してください。

/etc/init.d/apcupsd restart

ONBATTERYDELAY
停電発生から、apcupsdが実際に電源障害と判断するまでの時間を秒単位で指定します。
この時間が短いと、瞬停などの短期間の停電でも、UPSの処理が走ってPCがシャットダウンされてしまいます。
逆に長いと、PCのシャットダウン完了までにUPSのバッテリーがもたなくなる可能性があります。
日本では電源事情は安定していますので、5秒の指定で大丈夫だと思います。

TIMEOUTBATTERYLEVELMINUTES
apcupsdが電源障害と判断してから、実際にPCのシャットダウンを開始するまでの条件を指定します。
TIMEOUTは指定時間が経過した場合、BATTERYLEVELはバッテリー残量 が指定%以下になった場合、MINUTESはバッテリー残量 が指定時間(分)以下になった場合を指定します。
いずれかの条件が満たされれば、PCのシャットダウンを開始します。

TIMEOUT、BATTERYLEVEL、MINUTES、いずれもシャットダウン開始までの時間が長くなるように設定してしまうと、UPSのバッテリーが消費されてしまいます。
停電が繰り返し起こるような状況だと、続けて起こった2回目の停電でUPSのバッテリーがもたずに、正常にPCがシャットダウンできなくなる、といったことも起こりえますので、あまりぎりぎりにした設定にしないようにします。

MINUTES は、少なくとも、先の手順「PCのシャットダウン時間計測」での時間以上になるように値を指定しておいてください。
また、BATTERYLEVEL、MINUTES のバッテリー残量は予測ベースで、UPSのバッテリーの劣化状況でも変動しますので、わたしは余裕を持った値を設定しています。

UPSに接続する機器や、UPSの電源容量にもよりますが、わたしは次のように設定しています。

ONBATTERYDELAY 5
TIMEOUT 60
BATTERYLEVEL 30
MINUTES 10

動作が変わらなかったパラメータ

次のパラメータは、変えても動作に変化が見られませんでした。
(Ubuntu+Smart UPS 750)

KILLDELAY
SLEEP
WAKEUP
BEEPSTATE

KILLDELAYについては、以下のサイトでも「KILLDELAYはubuntu 16.04では設定してもUPSを切ることはできなかった」とのことなので、やはり効かないパラメータのようです。

無停電電源装置(UPS)Ubuntu 16.04 商用電源復帰後の自動再起動 | なんでもDIY

なお、BEEPSTATE については下記記事の方法でアラーム音を消すことができます。

apcupsdで停電時のアラーム音を消す(Ubuntu+Smart-UPS) | パソコン鳥のブログ

また、停電時にUPSの電源が切れるまでにUPS本体でカウントダウンする60秒の時間について、これを変更するパラメータは無いようです。

動作確認

apcupsd.conf を設定したら、動作確認を行います。

UPSの電源ケーブルを抜きます。(UPSにつながっている機器のケーブルではないですよ)

ONBATTERYDELAY秒経過前に、UPSの電源ケーブルをコンセントに差し戻します。
PCのシャットダウンなどが行われないことを確認します。

再度UPSの電源ケーブルを抜きます。

ONBATTERYDELAY秒が経過し、さらに TIMEOUT(秒)経過、またはバッテリー残量がBATTERYLEVEL (%)以下、またはMINUTES(分)以下になったら、PCがシャットダウンされることを確認します。

UPS本体での60秒のカウントダウン後に、UPSの電源が切れることを確認します。
(LCDの表示が無くなります)

この状態で、UPSの電源ケーブルをコンセントに挿すと、UPSの電源が入り、さらにPCが起動してくることを確認します。

これで設定完了です。

参考

apcupsd.conf(5): apcupsd config file – Linux man page
apcupsd – PukiWiki
apcupsd のパラメーター – りんごを食う
スティックPCにapcupsdを導入。 – ダンデライオン
復電した時およびスケジュール運転による起動時に、コンピュータも自動的に起動したい。|FAQ/よくあるご質問|OMRON 無停電電源装置(UPS)

コメント

タイトルとURLをコピーしました