柴田 尚明@福岡
shibata@opost1.netspace.or.jp
Linuxでのshutdown時に自動でPCの電源を落とし、また、外部からの電話着信で自動的にPCの電源が入るものを作りはじめました。
ある程度動いてますので、公開してご意見を伺い、もうちょっと改良したいと思っておりますm(_|_)m。
ご意見は、fj.os.linuxなどの関連NewsGroupかメールでお願いします。
メールの方が圧倒的にレスポンスがいいはずです(^^)尚、本ドキュメントは全文丸ごとであればどこへでも転載可能/リンク可能です(^^)


1996/11/6 Ver. 0.2
ATX機が自動で電源を落とせる話を聞いたり、某社のPCではモデムに着信があると電源を入れることができるという話を聞くたびに、良いなぁ〜と思っておりました。
また、会社から家に仕事のファイルを持ち帰って作業をして(^^;、そのまま忘れて会社に来たりしたことがあり、カミサンにPCの電源を入れてもらってダイヤルインしたりすることもありました(^^;;;;;;が、そうそう毎度は頼めません(^^;。
うちのサーバ機はCRTがついていないので、カミサンにはshutdown時の電源OFFのタイミングがわかりにくいという話もあります。そういう時は普通ATX機を買うのかもしれませんが、そんなお金はないです(T_T)し、ATXのマザーと電源の相性問題(?)もまだまだあると聞いてますので、買うにしてもしばらく待ちたいところです。
#ま、目標は、あくまで目標(^^;
ATXの電源制御仕様ってどこかに落ちてないでしょうか?
www.teleport.com/~atx/からたどっても、ろくなものは見つけられませんでした(T_T)
リモート電源制御の回路図に関しては下記をご覧ください。
#なお、このメインボードの回路が二つ分入ったものが4cm x 5cm程度のコンパクトな基板となり市販のキットとして1800円で販売されてます。私は、上記のメインボードと、パワーボード(3端子レギュレータとパイロットLED付き)とACアダプタを分解して(^^;取り出したトランス込みで、3.5"FDが10枚入るアクリルケースに詰め込んでます。そのうち写真もお見せしますね(^^;
大阪日本橋の「ワンダーキット」と言う会社のものです。
問い合わせ先は〒556大阪市浪速区日本橋4-4-1
TEL(06)644-4447 FAX(06)644-4448です。
私は福岡の「カホパーツセンター」で購入しました。注意する点として、このキットにはVcc(電源電圧)が5Vのものと12Vのものがあることです。私は回路図でお分かりのように5V版を使用しました。
#線材とかパイロットLED+LED用抵抗などは省略してますm(_|_)m
| Main | Name | Counts | Memo |
| 1 | HD414013 | 1 | CMOS-SSI |
| 2 | 2SC945 | 1 | Tr |
| 3 | 1S1588 | 3 | Diode |
| 4 | 1μF | 1 | Condenser |
| 5 | 10μF | 1 | Condenser |
| 6 | 4.7kΩ | 4 | Resister |
| 7 | 47kΩ | 3 | Resister |
| 8 | 100kΩ | 1 | Resister |
| 9 | G6C-1117 | 1 | Relay |
| 10 | Universal board | 1 | 5cm x 4cm |
| Power | Name | Counts | Memo |
| 1 | AC/DC Conv. | 1 | DC5V output |
| 2 | Switch | 1 | on-off-on toggle |
| 3 | Universal board | 1 | 3cm x 2cm |
| Set | Name | Counts | Memo |
| 1 | 9pin RS-232-C Conn. female | 1 | board mount type |
| 2 | 9pin RS-232-C Conn. male | 1 | board mount type |
| 3 | TLP521-1 | 1 | Photo-coupler |
| 4 | 470Ω | 1 | Resister |
| 5 | Universal board | 1 | 4cm x 3cm |
| Reset | Name | Counts | Memo |
| 1 | 9pin RS-232-C Conn. female | 1 | board mount type |
| 2 | TLP521-1 | 1 | Photo-coupler |
| 3 | 470Ω | 1 | Resister |
| 4 | Universal board | 1 | 4cm x 3cm |
以下のppp設定fileを作ります。(on-demand pppの設定で既に書いてますので、関連する記述のみ示します。)
4.1 /etc/ppp/ip-up
# cat /etc/ppp/ip-up #!/bin/sh#ファイルの先頭行にこれを書いて、なおかつ実行可能フラグを立てないと #うまく行きません。これのせいでずっとハマッてました(^^;echo UP `date` >> /tmp/PPP-LOG#ダイヤルアップ開始時間を記録します
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
if [ -f /tmp/request-up ]; then #家庭内LANからのダイアルアップならば
/bin/rm -f /tmp/request-up
echo DOWN `date` >> /tmp/PPP-LOG #コネクションを切った時間をlogに取る。
else #外部からのダイヤルインによるpppの起動のときは。
sync
sync
sync #転ばぬ先のsync三回(^^;
/sbin/shutdown -r now #おもむろにshutdownを動かす。
sleep 60
exit 1 #正常にshutdownが動いていれば、ここには来ないはず。
fi
#if [ `w|wc -l` -lt 3 ]; then #外部からのダイヤルイン判定の残骸
# sync
# sync
# sync
# /sbin/shutdown -r now
#fi
# cat /sbin/request-route #! /bin/sh LOCK=/tmp/request-route UP=/tmp/request-up PATH=/usr/sbin:$PATH #for ppp-2.2* export PATH pppd echo `date` > $UP#家庭内LANからのon-demandダイヤルアップであることの足跡を残してます。外部からのダイヤルインではこのファイルができないはずで、それによって制御を変えるようにしてますsleep 60 &#この値はいろいろとチューニングの余地があるようですsleepid=$! echo $sleepid > $LOCK wait $sleepid rm -f $LOCK
# tail -15 /etc/rc.d/rc.6
# See if this is a powerfail situation.
if [ -f /etc/power_is_failing ]; then
echo "Turning off UPS, bye."
/sbin/powerd -q
exit 1
fi
sleep 15 ;echo off >/dev/cua0
echo "$message"
[ ! -f /etc/fastboot ] && echo "On the next boot fsck will be FORCED."
$command -f
動作したものを示します
何と言ってもISDNでの自宅へのダイヤルアップIP接続です。 TAがオフフックしていないようなのでいかんともし難いです。情報をお待ちしています。
まお、今回の電源制御は基本的にすべてRS-232-Cで行ってます。このあたりの情報はFA-NET-MLの皆さんと、alm-hokkaiの藪中さんから頂いております。
ありがとうございます。m(_|_)m
以上







柴田(ひ)アンテナ