Miscellaneous‎ > ‎

Apcupsd smart sleep (delayed wakeup) patch [日本語情報]


注意

このパッチは「クイックハック」に類するもので、十分にテストされていません。ですからこのパッチを使う際には十分留意してください。また、USBシグナリングについては現在サポートされていません

ニュース

  • 2011/03/28 - 本家 Apcupsd users ML にこのパッチを ポスト しました。

ビルドや使用するために必要なもの

  • Smart UPS ( シリアルインターフェイスをもち、'@nnn' コマンドを受け付けることが必要です  )
  • Smart Signaling ケーブル ( APC Part# 940-0024C, # 940-0024D, 940-1524(black cable) or Interface Kit C (AP9824LJ) )
  • Apcupsd が動作するOS環境
  • Apcupsd ビルド環境 ( もちろんビルド時のみ必要です )

ダウンロード

このパッチについて

このパッチは apcupsd に新しい sleep ( -s / --sleep ) オプションを追加するものです。 直ちにハイバネーションモードに以降するkillpower ( -k / --killpower ) の代わりに使うことで、UPSに '@nnn' コマンドを発行します。

# ./apcupsd --help
usage: apcupsd [options]
  Options are as follows:
  -b,                           don't go into background
  -d, --debug <level>           set debug level (>0)
  -f, --config-file <file>      load specified config file
  -k, --killpower, --hibernate  put UPS into hibernation mode [*]
  -o, --power-off               turn off UPS completely [*]
  -P, --pid-file                specify name of PID file
  -p, --kill-on-powerfail       hibernate UPS on powerfail
  -R,                           put SmartUPS into dumb mode
  -s, --sleep <minutes>         put UPS into hibernation mode and
                                awake after <minutes> minutes[*]
  -t, --term-on-powerfail       terminate when battery power fails
  -T                            send debug to ./apcupsd.trace
  -V, --version                 display version info
  -h, --help                    display this help

  [*] Only one parameter of this kind and apcupsd must not already be running.

Copyright (C) 2004-2009 Adam Kropelin
Copyright (C) 1999-2005 Kern Sibbald
Copyright (C) 1996-1999 Andre Hedrick
Copyright (C) 1999-2001 Riccardo Facchetti
apcupsd is free software and comes with ABSOLUTELY NO WARRANTY
under the terms of the GNU General Public License

Report bugs to apcupsd Support Center:
  apcupsd-users@lists.sourceforge.net

'@nnn' コマンドは「6分を単位として nnn 待機した後に再び起動する」 コマンドで、 sleep オプションの引数に対して実際には指定された分数に対して6分単位で切り上げてコマンドを発行します。実際の引数とコマンドの対応は下表の通りです。

 ( -s / --sleep ) 引数 '@nnn' コマンド
 0 (受け付けません)
 1 - 6 @001
 7 - 12 @002
 ... ...
 5989 - 5994 @999
 5995 - (受け付けません)

通常の運用では、rc0 といった shutdown の最終局面で実行されるスクリプトの最後に以下のような記述を行い、指定した時間だけ UPS を sleep させるような運用を行うことを想定しています。

if [ -f /path/to/sleep_minutes -a -x /path/to/apcupsd ] ; then
        SLEEP_MINUTES=`cat /path/to/sleep_minutes`
        echo
        echo "APCUPSD make UPS asleep ${SLEEP_MINUTES} minutes..."
        echo
        /path/to/apcupsd --sleep ${SLEEP_MINUTES}
        rm -f /path/to/sleep_minutes
fi

インストール

  • オリジナルの apcupsd ソースアーカイブを以下のように展開し
$ gzip -dc apcupsd-3.18.tar.gz | tar xf -
  • パッチの適用を行います
$ cd apc-upsd-3.18 ; gzip -dc /path/to/apcupsd-3.14.18-smsleep_01.patch.gz | patch -p 1 
  • あとは通常と同じようにコンパイル・インストールします。
configure , make , make install etc...

変更履歴

  • 2011/03/28 - 本家 Apcupsd users ML にこのパッチを ポスト しました。

参考資料

パッチ著者

Hiroshi Chonan - chonan at pid0 dot org

ライセンス

このパッチはオリジナルの apcupsd のライセンスポリシーに準じることとします。ですので GPL version 2 が適用ライセンスとなります。

ċ
apcupsd-3.14.8-smsleep_01.patch.gz
(3k)
Hiroshi Chonan,
Mar 30, 2011, 8:58 PM