MacBookAirのバッテリー容量を黙々と記録するスクリプトを作った

バッテリーがどういう減り方してるのかが気になるわけですよ.
重い処理させずにディスプレイの輝度も低めにしとけば結構持つのはわかったんだけど.


と,いうわけでバッテリーの状態を黙々とcsvファイルに記録するためのRubyスクリプトを書いた.
参考にしたのはこちら.

mac bookのバッテリー状態をはてなグラフに記録してみよう - mac 日記
http://d.hatena.ne.jp/yao3/20091207/1260204647

#!/usr/bin/ruby
class BatteryLog

  def run
    logging
  end

  def logging
    info = get_status
    _logging(Time.new,info)
  end

  def _logging(time, info)
    begin
##### ログを保存するディレクトリをフルパスで.
      Dir::chdir("/Users/tokyoster/Documents/ruby/BatteryLogs")
    rescue
      Dir::mkdir("/Users/tokyoster/Documents/ruby/BatteryLogs")
      Dir::chDir
    end

##### Capacity,Current,Cycle Count
    log_str = time.strftime("%y/%m/%d %H:%M") + "," + info["Capacity"].to_s + "," + info["Current"].to_s + "," + info["Cycle Count"].to_s
    log_file_name = "BatteryLog" + time.strftime("%y%m%d") + ".csv"
    
    log_file = File.open(log_file_name,"a+")
    log_file.puts(log_str)
    log_file.close
  end

  def get_status
    info = eval(`/usr/sbin/ioreg -w0 -n "AppleSmartBattery" | grep LegacyBatteryInfo`.gsub(/=/, '=>').gsub(/^.*\{/, '{'))
    return info
  end
end
  
BatteryLog.new.run

こいつをCronに登録するときには

crontab -e

* * * * * ruby /Users/tokyoster/Documents/ruby/battery_log.rb

てな感じですね.
これで一分ごとにバッテリー容量とバッテリー残量とサイクルカウント(何回充電サイクルが繰り返されたか)が記録されるようになりました.
あとはこれを黙々とグラフ化して表示してくれるガジェットみたいのがあったらいいですよねー,