日記, 自宅サーバー

計画停電にあわせて自動シャットダウンするためのWebサービス「nextteiden」

前のエントリーに書いたように、東京電力の計画停電に組み込まれた自宅は頻繁に停電するようになってしまったのでWebサーバーはさくらVPSに移動した。ただ、他にもファイルサーバーなど自宅サーバーはあるわけで、問題は自宅サーバーのシャットダウンである。いくら気を付けていても、仕事でミーティングに出てたりするとあっさり停電の直前のシャットダウンを忘れてしまう。その結果次に起動したときにRAIDのResyncなどが走り、精神衛生上よろしくないことこの上ない。UPSを検討したが2,3時間も給電するとすると結構な金額になる。しかもフレッツ・マンションタイプなので停電になったら自分だけ給電してもマンション内の電気系統は動かなくなるので自分の家だけ電源があってもダメだろう。

他にも一週間分の停電スケジュールを見てcronでシャットダウンを仕掛けるという方法も考えられるが、その日の電力使用量によって直前にあっさり停電がスキップされたりするのでこれまた難しく停電の有無は直前まで分からない。で、調べてみると計画停電カレンダーなる有り難いサイトがあるのを発見。しかも計画停電中止などの情報もタイムリーに更新されているようだ。

というわけで、まずこのGoogle カレンダーからRSSで情報を取ってきて、停電情報を提供するWebサービスを作ってGoogle Application Engineで公開してみました。ポイントはこのカレンダーに「中止」か「CANCELED」と書かれてたらキャンセルとみなしリアルタイムで反映されること。で、使い方は以下。たとえばグループ5で今後30分以内に計画停電があるかどうかはhttp://nextteiden.appspot.com/tokyo/g5/nextteiden/inminutes/30で判定することができる。

Base URL: http://nextteiden.appspot.com
■nextteiden
指定電力会社の指定グループの現時刻から次回の計画停電の開始の時刻を返す
入力:
書式: /(電力会社)/(グループ)/nextteiden
電力会社:’tokyo’`もしくは’tohoku’(現状の対応はtokyoの東京電力のみ)
グループ:g1〜g5
例: /tokyo/g1/nextteiden
出力:
plain/textにて次回の停電の開始の時刻。存在しない場合は”None”
例:’2011/03/27 14:24:46′
エラー時には”ERROR: <理由>”を返す
■nextteiden/inseconds
指定電力会社の指定グループの現時刻から指定秒数以内に計画停電が予定されているかどうかを返す
入力:
書式: /(電力会社)/(グループ)/nextteiden/inseconds/(秒数)
電力会社:’tokyo’`もしくは’tohoku’(現状の対応はtokyoの東京電力のみ)
グループ:g1〜g5
例: /tokyo/g1/nextteiden/inseconds/3600
出力:
plain/textにて指定した現時刻から秒数以内に計画停電が予定の有無を’Yes’と’No’で返す
例:Yes
エラー時には”ERROR: <理由>”を返す
■nextteiden/inminutes
上記nextteiden_insecondsと同様。指定は分単位
■nextteiden/inhours
上記nextteiden_inhoursと同様。指定は時間単位

そんでもって、10分おきに起動するシェル(teiden_shutdown.sh)を作ってみた。

#!/bin/sh

URL=’http://nextteiden.appspot.com/tokyo/g5/nextteiden/inminutes/20′
OUTFILE=/tmp/$$.teiden_shutdown.tmp
LOGFILE=/var/log/teiden_shutdown.log

wget -q -t 3 -O $OUTFILE $URL
RET=$?

if [ $RET -ne '0' ]
then
echo `date`’ FETCH ERROR’ >> $LOGFILE
exit 1
fi

echo `date`’ ‘`cat $OUTFILE` >> $LOGFILE

if [ `cat $OUTFILE` = 'Yes' ]
then
echo ‘date” SHUTDOWN NOW’ >> $LOGFILE
shutdown -h now
fi

rm $OUTFILE

今、このシェルを手持ちのVMのcronに設定して10分おきにcron起動するようにしてみた。10分おきに最大20分先の停電の有無を答えるので停電の10~20分前に自動でシャットダウンされるはずである。

というわけで計画停電の範囲でUPSもないような方で「これは使えると思った方は遠慮無く使ってくださいな。

similar posts

comment

よろしければ、コメントをどうぞ。トラックバックはこちら

このエントリーのコメントの購読

次のHTMLタグが使えます。: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

*Required Fields