AppleScript : 東京電力電力供給状況APIで東京電力の需給情報 - GameSprit では、東京電力電力供給状況API のAPIを活用して、1時間毎の東京電力供給状況を表示してみました。
ところで、同じサイトで東京電力供給状況に関して「5分ごとに更新される速報データ」を取得できるAPIが公開されています。このAPIでは、http://tepco-usage-api.appspot.com/quick.txt にアクセスすると、次のようなデータが取得できます。
このデータを利用して、1時間毎の東京電力供給状況を表示するスクリプトを改良して、下記のような出力をするようにしてみます。
1時間毎の東京電力供給状況を表示するスクリプトの、出力するテキストの生成部分から削除します。
「使用率」の部分に、次の修正を加えます。
上記の削除と修正により、次のような結果が出力されるようになります。
この出力の前に、5分間隔のデータを連結します。
5分間隔のデータですが、ここでは「瞬間使用率」、「瞬間消費電力」と表現することにします。
まず、http://tepco-usage-api.appspot.com/quick.txt からデータを取得して、変数 srct に格納します。
このデータを使って、出力するテキストを生成し、1行毎に連結します。
その結果、変数 quickMsg には次のようなテキストが納められます。
このテキスト文字列を1時間毎の供給状況を納めた変数 msg の前に連結します。
変数 msg の前に変数 quickMsg を連結した結果を、変数 msg としたので、出力部分は修正不要です。
結果として、次のような出力が得られます。
さて、コードをまとめると、次の通りです。
なお、このブログに掲載されているコードは無保証です。自己責任でどうぞ。
また、コピペでも動作すると思いますが、利用にあたっては 東京電力電力供給状況API に記載されている注意事項などを理解したうえでご利用ください。
キーワード:AppleScript、節電、東京電力、電力需給、でんき予報、csv、クリップボードへのコピー、ファイルへの出力、ダイアログ出力
ところで、同じサイトで東京電力供給状況に関して「5分ごとに更新される速報データ」を取得できるAPIが公開されています。このAPIでは、http://tepco-usage-api.appspot.com/quick.txt にアクセスすると、次のようなデータが取得できます。
23:30,2520,3651
このデータを利用して、1時間毎の東京電力供給状況を表示するスクリプトを改良して、下記のような出力をするようにしてみます。
瞬間使用率 69%(23:30)
瞬間消費電力 2520万KW
使用率 74%(2012/10/14 22時台)
消費電力 2687万KW
最大供給 3651万KW
1時間毎の東京電力供給状況を表示するスクリプトの、出力するテキストの生成部分から削除します。
set msg to "時刻" & tab & tab & tyear & "/" & tmonth & "/" & tday & " " & hour & "時台"
「使用率」の部分に、次の修正を加えます。
set msg to "使用率" & tab & (ratio as text) & "%(" & tyear & "/" & tmonth & "/" & tday & " " & hour & "時台)"
上記の削除と修正により、次のような結果が出力されるようになります。
使用率 74%(2012/10/14 22時台)
消費電力 2687万KW
最大供給 3651万KW
この出力の前に、5分間隔のデータを連結します。
5分間隔のデータですが、ここでは「瞬間使用率」、「瞬間消費電力」と表現することにします。
まず、http://tepco-usage-api.appspot.com/quick.txt からデータを取得して、変数 srct に格納します。
-- 5分間隔データの取得
set srct to do shell script "curl " & "http://tepco-usage-api.appspot.com/quick.txt"
このデータを使って、出力するテキストを生成し、1行毎に連結します。
-- 出力する5分間隔データテキストの生成
set quickTime to item 1 of bunkai(srct, ",")
set quickUsage to item 2 of bunkai(srct, ",")
set quickRatio to ((quickUsage * 100) / capacity) as integer
set quickMsg to "瞬間使用率" & tab & tab & (quickRatio as text) & "%(" & quickTime & ")"
set quickMsg to quickMsg & return & "瞬間消費電力" & tab & tab & quickUsage & "万KW"
その結果、変数 quickMsg には次のようなテキストが納められます。
瞬間使用率 69%(23:30)
瞬間消費電力 2520万KW
このテキスト文字列を1時間毎の供給状況を納めた変数 msg の前に連結します。
set msg to quickMsg & return & return & msg
変数 msg の前に変数 quickMsg を連結した結果を、変数 msg としたので、出力部分は修正不要です。
結果として、次のような出力が得られます。
瞬間使用率 69%(23:30)
瞬間消費電力 2520万KW
使用率 74%(2012/10/14 22時台)
消費電力 2687万KW
最大供給 3651万KW
さて、コードをまとめると、次の通りです。
なお、このブログに掲載されているコードは無保証です。自己責任でどうぞ。
また、コピペでも動作すると思いますが、利用にあたっては 東京電力電力供給状況API に記載されている注意事項などを理解したうえでご利用ください。
-- http://tepco-usage-api.appspot.com の東京電力の電力使用状況を、JSON形式で返すAPIを利用
-- http://tepco-usage-api.appspot.com/latest.json
-- 1時間毎に集計したデータなので、頻繁にアクセスする必要はない
-- インターネット上のファイルを取得する
set srcj to do shell script "curl " & "http://tepco-usage-api.appspot.com/latest.json"
-- 取得したファイルから、項目別データを作成する
set srcjList to my bunkai(srcj, ",")
--count srcjList -- 15
set saving to (item 2 of my bunkai(item 1 of srcjList, ": "))
set hour to (item 2 of my bunkai(item 2 of srcjList, ": "))
set forecast_peak_period to (item 2 of my bunkai(item 3 of srcjList, ": "))
set capacity_updated to (item 2 of my bunkai(item 4 of srcjList, ": "))
set forecast_peak_updated to (item 2 of my bunkai(item 5 of srcjList, ": "))
set tmonth to (item 2 of my bunkai(item 6 of srcjList, ": "))
set usage_updated to (item 2 of my bunkai(item 7 of srcjList, ": "))
set entryfor to (item 2 of my bunkai(item 8 of srcjList, ": "))
set capacity_peak_period to (item 2 of my bunkai(item 9 of srcjList, ": "))
set forecast_peak_usage to (item 2 of my bunkai(item 10 of srcjList, ": "))
set tyear to (item 2 of my bunkai(item 11 of srcjList, ": "))
set usage to (item 2 of my bunkai(item 12 of srcjList, ": "))
set capacity to (item 2 of my bunkai(item 13 of srcjList, ": "))
set forecast to (item 2 of my bunkai(item 14 of srcjList, ": "))
set tday to item 1 of my bunkai((item 2 of my bunkai(item 15 of srcjList, ": ")), return) -- "14"
-- 出力するテキストの生成
-- 使用率の計算
set ratio to ((usage * 100) / capacity) as integer
set msg to "使用率" & tab & (ratio as text) & "%(" & tyear & "/" & tmonth & "/" & tday & " " & hour & "時台)"
set msg to msg & return & "消費電力" & tab & usage & "万KW"
set msg to msg & return & "最大供給" & tab & capacity & "万KW"
-- 5分間隔データの取得
set srct to do shell script "curl " & "http://tepco-usage-api.appspot.com/quick.txt"
--> "23:15,2565,3651"
-- 出力する5分間隔データテキストの生成
set quickTime to item 1 of bunkai(srct, ",")
set quickUsage to item 2 of bunkai(srct, ",")
set quickRatio to ((quickUsage * 100) / capacity) as integer
set quickMsg to "瞬間使用率" & tab & tab & (quickRatio as text) & "%(" & quickTime & ")"
set quickMsg to quickMsg & return & "瞬間消費電力" & tab & tab & quickUsage & "万KW"
set msg to quickMsg & return & return & msg
-- クリップボードへの出力
set the clipboard to msg as text
-- ファイルへの出力
do shell script "echo \"" & (msg as text) & return & "\" >> ~/Desktop/tepco.txt"
-- ダイアログ表示出力
display dialog msg as text
on bunkai(orgData, delim)
set orgDelimi to text item delimiters of AppleScript
try
set text item delimiters of AppleScript to delim
set op to {}
repeat with i from 1 to (count text item of orgData)
set the end of op to text item i of orgData
end repeat
return op
end try
set text item delimiters of AppleScript to orgDelimi
end bunkai
キーワード:AppleScript、節電、東京電力、電力需給、でんき予報、csv、クリップボードへのコピー、ファイルへの出力、ダイアログ出力