スポンサーリンク

バッテリー残量計測

Windowsでは便利なソフトがあるようだ。
Linuxでは聞いたことがないので、apmを利用したシェルスクリプトを書いた。
以下はapmコマンドで1分ごとにバッテリー残量%を取得して、power.txtに出力するスクリプトだ。

バッテリー残量が5%を切ったらシェルスクリプトを抜ける。

#!/bin/sh
#
#Battery Info
tmp=`apm | cut -d " " -f 1,5,6 |sed 's/(//'|sed 's/)//'|sed 's/%//'`
#Battery status
status=`echo $tmp |cut -d " " -f 1`
percent=`echo $tmp |cut -d " " -f 2`
#min
rtime=0
#Colors
RED="ESC[1;31m"
GREEN="ESC[1;32m"
YELLOW="ESC[1;33m"
NORMAL="ESC[0;39m"
if [ -e power.txt ]; then
echo "${YELLOW}power.txt exists!!${NORMAL}"
exit 1
fi
if [ "$status" != "Off-line," ]; then
echo "${GREEN}On-line!!${NORMAL}"
exit 1
fi
while [ $percent -ge 5 ]; do
if [ "$status" = "Off-line," ]; then
tmp=`apm | cut -d " " -f 5,6 |sed 's/(//'|sed 's/)//'|sed 's/%//'`
echo "$rtime $tmp" >> power.txt
percent=`echo $tmp |cut -d " " -f 1`
echo "$rtime $tmp"
rtime=`expr $rtime + 1`
sleep 60
else
echo "${GREEN}Now On-line!!${NORMAL}"
exit 1
fi
done
echo "${RED}BATTERY IS VERY LOW!!!!!!!!!!!!${NORMAL}"
exit 0

#Colorsで使われているESCはここでは文字化けしそうなので仮にESCとしている。
本当はviで"CTRL+v CTRL+["か"CTRL+v CTRL+ESC"と入力する。
正常終了ならexit 0,異常終了ならexit 1。

注意した点は#Colorsで最後をYELLOW="ESC[1;33m"などのNORMAL以外にすると、
catやlessをした時にその色が反映されてしまう。
なので最後は必ずNORMAL="ESC[0;39m"にしておく。

グラフの作成
出力されたpower.txtからグラフを作成する。
power.txtをDSLにインストールされているsaig spredsheetにcsvとして読み込む。
この時フィールドセパレーターを半角スペースにして読み込む。
DSLにインストールされているsaig spreadsheetではグラフを作成できない。
グラフ作成にgnuplotを使うのだがインストールされていないためだ。
MyDSLからgnuplotをダウンロード&インストールしてグラフ作成ボタンを押すとグラフが表示される。
横軸が時間(分)縦軸がバッテリー残量%
結果としては最初からFMV-5233MC2/Wに付属していたbattery1のみがまともで、
追加購入したbattery2,3,4は全く駄目だった。
殻割をしてbatteryを入れ替えなければ駄目なようだ。

最後に、gnuplotがあるのならばシェルスクリプトからgnuplotを呼び出せば、
ひとつのシェルスクリプトでグラフ作成まで完結できるかもしれない。