動的な電源制御

ちょっと前の記事の続き

[自動で待機電力をカット。]
http://d.hatena.ne.jp/earthlab/20100115/p1

実際どのように制御しているのかについて書いてみる。

#cat /root/bin/consoleauto.sh

#!/bin/sh
LANG=C

LOGPATH="/var/log/pductl.log"

echo "#---------------------------------" >> $LOGPATH 2>&1
echo `date` >> $LOGPATH 2>&1


PINGTARGET="192.168.171.66"

ping -c 5 $PINGTARGET >> $LOGPATH 2>&1

#echo $?


if [ $? = "0" ];
then
echo "PING ON" >> $LOGPATH 2>&1
echo "power-on" >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 19 1 > /tmp/pwrctl.log 2>&1

cat /tmp/pwrctl.log |grep 'outlet 19 named' >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 20 1 > /tmp/pwrctl.log 2>&1
cat /tmp/pwrctl.log |grep 'outlet 20 named' >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 24 1 > /tmp/pwrctl.log 2>&1
cat /tmp/pwrctl.log |grep 'outlet 24 named' >> $LOGPATH 2>&1


else
echo "PING NG" >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 19 2 > /tmp/pwrctl.log 2>&1
cat /tmp/pwrctl.log |grep 'outlet 19 named' >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 20 2 > /tmp/pwrctl.log 2>&1
cat /tmp/pwrctl.log |grep 'outlet 20 named' >> $LOGPATH 2>&1

pductl 192.168.170.101 username password 24 2 > /tmp/pwrctl.log 2>&1
cat /tmp/pwrctl.log |grep 'outlet 24 named' >> $LOGPATH 2>&1


fi

echo "#---------------------------------" >> $LOGPATH 2>&1

PINGTARGET="192.168.171.66" で指定したIPへPINGを行い、その結果応答があれば対象の電源をONにし、無ければOFFにするという簡単なもの。

PINGTARGET="192.168.171.66" は私の端末のワイヤレスLANのIPを指定している。


端末が、ノートパソコンなので次のような使い方になる。

  1. 端末の電源を入れる。#まだ電源制御されていないので、バッテリー駆動
  2. OSが起動して、WLANにIPが割り当てられる #DHCPで予約をかけているので、指定IPになる
  3. 上記のScriptがCronから実行されて、PING応答の判定により電源制御が行われてONになる
  4. 足元のヒーター、モニタ、周辺機器の電源がONになる

端末をOFFにしたり、WLANのスイッチを切ったりすると、逆の動きで次のCronから呼び出されるタイミングでOFFになる

本当は、LANにほとんど電気を使用しないセンサーモジュールを参加させて、人がいるかどうかで判断させたりしたいのだが、ハードウエアを準備するとなるとお金もかかるので今のところこのまま。

POEで動く、LANTRONIXシリーズのようなキットと連携させると、面白そうです。