雑記帳

ちょっとした文章とかメモ書きとか。

東京電力電力供給状況API-part2

以前のエントリー(http://wp.me/p16r0I-9i)でRubyから値だけ取得してみた訳ですが、
今回はそれをもう少し見やすい形に出力してみようと思います。

で、出来上がったのが以下のRubyのソース。
$gem install json
としてjsonパーサーライブラリをインストールしておきます。

Windowsの場合はjsonライブラリのビルドが必要なのでMSYS上かCygwin上で
>gem install json
としてください。

require "open-uri"
require "rubygems"
require "json"
require "time"

src = ''
open("http://tepco-usage-api.appspot.com/latest.json"){|file|
src = file.read
}

#jsonパーサーを使う
json = JSON.parser.new(src)

#突っ込むためのハッシュ作成
h = Hash.new
h = json.parse()

#電力使用量の計算と返って来た日付をパースする
use_elec = ''
use_elec = h["usage"].to_f / h["capacity"].to_f * 100
t = Time.parse(h["entryfor"])

print "日付 :", t.year,"/", t.month, "/", t.day, "\n"
printf("使用率 : %.2f %\n", use_elec)
print "消費電力 :", h["usage"], "万kW\n"
print "供給可能最大電力 :", h["capacity"], "万kW\n"
print "計画停電 :", h["saving"]?  "実施有り" : "実施無し", "\n"

このような感じになりました。

実行例は、

日付 :2011/3/30
使用率 : 82.13 %
消費電力 :3121万kW
供給可能最大電力 :3800万kW
計画停電 :実施無し

となりました。(2011/3/30 午後3時半頃。)

#ところで日付のパースが日で止まっていますが、これはAPIが返してくる日付がUTCなのでJSTに直せなかったからですorz
この場合のJSTへの変換ってどうやるんでしょう・・?

RubyではこのAPIのjsonをパースして生成したハッシュは以下のように値を取り出せます。(APIの仕様書より)
ハッシュの各値の取り出し方

#ハッシュの値を一つずつ取り出す例
p h["usage"] # この時間帯の消費電力(万kW)
p h["month"] # 月
p h["capacity_updated"] # 供給可能最大電力が決定された日時(UTCなので注意)
p h["hour"] # 月
p h["entryfor"] # この時刻の文字列(UTCなので注意)
p h["day"] # 日
p h["saving"] # この時間帯に計画停電が実施されていればtrue
p h["year"] # 年
p h["capacity"] # 供給可能最大電力(万kW)
p h["capacity_peak_period"]
=begin 最大の供給能力を発揮する予定の時刻(24時間制、日本時間)。 つまり、揚水発電を使って一時的に最大能力を発揮する時刻です。 過去のデータでは、この値が存在しないため「null」です。
=end
p h["usage_updated"] # この消費電力のデータが更新された日時(UTCなので注意)
#ハッシュを全てイテレーターで出力する例
h.each{|key,value|
print "#{key}: #{value}\n"
}

と取り出せます。

このコードはLGPLでもRubyライセンスでも修正BSDライセンスでもご自由にどうぞ。

では。

Githubに上げました。こちらのソースを使う場合は修正BSDライセンスを適用します。
https://github.com/cosmo0920/tepco_api_ruby

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。