更新履歴
UPS のページに書きましたが、このUPS のRS-232C の出力はUPS 側にドライバーを持っていると思っていたのですが
PC 側の制御線の出力を接点で返すだけのようだと言うことが分かりました。
詳細は参考にしたページを参照して下さい。
PC:自作 PC/AT 互換機 350W 電源
OS:Vine Linux 3.2
UPS:Soundhouse UPS500
こちらからいただいてきました。最新バージョンは1.0.2 です。 # と言ってもタイムスタンプは古い。
環境に合わせて.h ファイルを直さなくてはいけないのですがgentest でUPS の挙動を知る必要がありますので取り敢えず展開してmake します。(各修正箇所は後で説明します。)
$ make
ケーブルはCOM2 に接続しましたので/dev/ttyS1 を指定します。
引数の -r -d はどちらの制御線を使用するかの指定です。
-r : RTS をHigh Level <-- このUPS ではRTS で反応した
-d : DTR をHigh Level <-- 反応無し
$ ./gentest -r /dev/ttyS1
--------------- 起動直後 DTR = Cleared RTS = Set CAR = Low ( ) CTS = Low ( ) DSR = Low ( ) RNG = Low ( ) --------------- ノーマル状態 DTR = Cleared RTS = Set CAR = High (*) CTS = High (*) DSR = Low ( ) RNG = Low ( ) --------------- コンセントを抜く DTR = Cleared RTS = Set CAR = High ( ) CTS = Low (*) DSR = Low ( ) RNG = Low ( ) --------------- コンセントを挿す DTR = Cleared RTS = Set CAR = High ( ) CTS = High (*) DSR = Low ( ) RNG = Low ( )
CTS が反応していることが分かります。ここまで分かればこっちのもの! 勝ったも同然
また、確認はしてないですが、CAR がバッテリーALARM 、DSR RNG は使用せずと推定して genpowerd.h を書き直します。
各ファイルパス等は Vine Linux 2.6r1 に合わせています。
/* Feb/05/2001 Tripplite Omnismart 450 PNP
Jhon H. Caicedo O.S.S.O */
{6, "omnismart-pnp", {TIOCM_RTS,1}, {TIOCM_RTS,1}, 5, {TIOCM_CTS,0}, {TIOCM_CAR,0}, {0,0}},
:::
/* Classic Pro */ <-- 追加
{7, "classic-pro", {TIOCM_RTS,0}, {0,0}, 5, {TIOCM_CTS,0}, {TIOCM_CAR,0}, {0,0}}, <-- 追加
:::
{-1, NULL}
};
わたしの 編集したファイルはこちら
もしかして出来るのかも知れませんが、UPS のKILL は出来ないようでしたので殺してあります。
オリジナルでは /etc/ になってますが、/var/run の方がきれいなような気がしますので直しました。
#define PWRSTAT "/var/run/powerstatus" #define UPSSTAT "/var/run/upsstatus"
どうでもいいことですが、man のパスが合っていなかったので修正
MANDIR = /usr/share/man/man8
パスを修正
statpath="/var/run/upsstatus" spidpath="/var/run/shutdown.pid"
はまった点
オリジナルでは
spidpath="/var/run/shutdownpid"
Vine 2.6 は
spidpath="/var/run/shutdown.pid" ( . があることに注意)
です。genpowerd を起動した時、いきなりshutdown が走ったのでちょっとだけ悩みました。
スクリプト中の
shutdown -r を shutdown -h に変更
時間などはお好で修正して下さい。
私のが変更して使用している使っているファイルはこれ
CABLE) *) は shutdown しないようにしてあります。
$ make clean
$ make all
$ sudo make install
default のpf 行とpr 行を # でコメントアウト
# When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. #pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" (コメントアウト) # If power was restored before the shutdown kicked in, cancel it. #pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" (コメントアウト)
以下の行を追加
# genpower setting May 9 2003 pf::powerwait:/etc/genpowerfail start pr:12345:powerokwait:/etc/genpowerfail stop
直したら kill -hup 1 等して INIT process を再起動しておいて下さい。
root になって
# /sbin/genpoerd /dev/ttyS1 classic-pro
で genpowed を起動します。
コンセントを抜いてみましょう。shutdown が走りますか?
コンセントを挿してみましょう。shutdown がキャンセルされますか?
動作がOK ならちゃんとした起動スクリプトを用意します。
このまま rc.local などで
/sbin/genpowerd /dev/ttyS1 classic-pro を書いておいてもいいですが
こちらのページに*1スクリプトがありましたのでいただいてきました。
先頭を環境に合わせて直してください。
enabled=1 upsport=/dev/ttyS1 upstype=classic-pro
わたしのは これ
起動時に走ってくれるように
ln -s /etc/rc.d/init.d/genpower /etc/rc.d/rc3.d/S99genpower
ln -s /etc/rc.d/init.d/genpower /etc/rc.d/rc5.d/S99genpower
とでもしておきましょう。
この文書は無保証です。自己責任にて使用ください。
また、参考にさせて頂いた参照ページの皆様ありがとうございました。
ご意見 ご感想 お問い合わせは kojima_s@sheltie.ddo.jp まで
UPS Top に戻る
*1 出典を忘れてしまいました