2011/04/28 13:54:57
@ssci 東京電力電力供給状況APIを使ってThinkPadのピークシフト機能を東京電力のピークタイムに連動させるWindowsアプリ、TPTPコネクトをリリースしました。 http://bit.ly/fibisi 機種限定で非公式ですが、よろしければ紹介いただければ幸いです。

TPTPコネクトのツイートをみて「お、JSONで提供されるのか、なら簡単に実装できるかも?」とおもって久しぶりに突貫工事で作ってみた。

ターゲットはデスクトップとしても使っているFreeBSD。ThinkPadとちがってバッテリはもってないので電力を抑えるだけでピークシフトではないが、ピーク時の電力を抑えることでピーク時間帯以外の計算負荷が上がると考えれば、消極的ピークシフトといえないこともない。使える言語はC/C++/shなので、JSONをパースするライブラリは仕事でも使ったことがあるpicojsonの一択で、電力制御をするpowerdをいじるにはshがいいよなと考えて、

  1. fetchで東京電力電力供給状況APIをたたいてデータ取得(JSON)
  2. JSONをshスクリプトの代入文に変換 (picojsonをつかったjson2sh)
  3. 周波数を落とすかどうか判定
    1. ピーク時間帯なら最小電力消費に
    2. そうでなければほどほどに
    3. 計画停電がなさそうなら普段通りに (いいのか?)
  4. /etc/rc.conf.d/powerdに設定を書く
  5. /usr/sbin/service powerd restartで変更反映

こんな感じのshスクリプトをでっち上げた。これを10分おきとかそのくらいでcronでたたけばok。

ちなみに名前のTEPSはTokyo Electric Power Saverの略ってことで。

2011/04/29 02:56:01
jsonを読み込んでshスクリプトに変換するプログラムと、TPTPコネクトもどきforFreeBSDをつくってみた。

https://bitbucket.org/koie/json2

https://sites.google.com/site/tptpconnect/

TPTPの作者さんからツイートをいただいたので、仕様で理解できなかったところを聞いてみた。

2011/04/29 07:27:44
仕事早すぎ!です。 RT @koie jsonを読み込んでshスクリプトに変換するプログラムと、TPTPコネクトもどきforFreeBSDをつくってみた。 https://bitbucket.org/koie/json2

2011/04/29 11:26:50
@emomon8 TPTPコネクトはとても参考にさせていただきました。saving=trueのときだけピークシフトするようにしてみました。つくったのは「常に当日をベースとして」だけなのですが「自動設定1」と「過去」で過去の情報を使う意図がよくわからなかったです。

2011/04/29 11:47:05
.@koie なるほど、savingにも着目するのはありですね。過去のデータを使う意味は、当日の東電のデータにあるピークタイムに完全に頼っていいか分からなかったからです。後から見た実績とは必ずしも一致しませんし。であれば、前日の実績から判断するのもありではないかと。(続く)

2011/04/29 11:56:05
.@koie (続き)で、前日のデータを見るようすると、休日明けの平日に休日のデータを見るのもおかしいので、その前の平日を見に行くようにしたと。実際、当日のデータを使う日と過去のデータを使う日をどういう風に組むかとパターンは幾らでもあると思います。(続く)

2011/04/29 12:04:45
.@koie (続き)あの自動設定1と2はそのパターンに対する自分なりの提案です。まあ実用上は当日だけでいいのでは、と思わないでもないです。自分も初めはそのつもりでしたから。後は、設定の自由度をどれだけ持たせるかという話ですね。自由度が大きい方がうれしいですから。