growthforecastで予想気温の推移をグラフ化してみる。
Ubuntu12.04LTS にて、cpanmについては入っているものとして。
growthforecastがCPANに登録されたそうで、cpanmで入ります。
Ubuntuは、公式にあるようにapt-getで関連ツールをインストールして、cpanmで完了。(ちょっと時間かかります)
$ sudo apt-get build-dep rrdtool $ sudo cpanm install GrowthForecast
さて、growthforecastを使ってグラフ化しようにも、会社じゃないと試そうにも以下の問題が。。。
- そんなにアクセスのあるWebサーバを持っていない
- マシンリソースもあんまり使ってない
- そもそも他のブログと同じようなことを書いても仕方ない
といった問題がありまして、何をグラフ化しようかなーと。
Pythonの勉強がてら、どこかのWebAPIからデータを取ってそれを使ってみようと思い調べてみると、Livedoorさんが提供している、天気予報のAPI*1があったので、それから予想最高気温、最低気温を取得して、それをグラフ化するようにしてみました。
Pythonスクリプト作成
Pythonスクリプトでデータを取ってきて、翌日*2の予想気温をgrowthforecastに投げてます。Python勉強し始めなので、コードは良くない部分がありそうなのと、エラー処理は入ってません。
urllib3を使っているので、pip等でインストールが必要です。*3
$ sudo pip install urllib3
WebAPIの参考に、なぜか福岡県久留米市が載っていたので、地元付近ということもありそのまま使いました。
growthforecastを使ってグラフ化
まず、growthforecastを起動。(dataディレクトリは任意の場所で)
$ growthforecast.pl --data-dir=/opt/growthforecast/data
まず一度、手動でスクリプトを動かしてデータをgrowthforecastに投げて、グラフのページを作ります。
$ python kurume_temp2gf.py
すぐは何も表示されません。しばらくすると、平らなグラフがでてきます。
http://localhost:5125/list/fukuoka/kurume
複合グラフ作成
複合グラフは、growthforecastのページに行って、右上の複合グラフの追加から以下を設定します。
これもAPIでできそうな雰囲気ですが、とりあえず手動。
系列1
タイプ | 線グラフ(太線) |
データパス | tomorrow_max_temperture |
モード | 実績 |
2番目以降の系列
タイプ | 線グラフ(太線) |
データパス | tomorrow_min_temperture |
モード | 実績 |
スタック | しない |
crontabを使って定期的に気温を更新
crontab使って、1日に数回実行して登録して行きます。予報が更新される時間とかは書いてないので、適当に6,9,12,15,18の5回流します。*4
$ crontab -e 5 6,9,12,15,18 * * * python /home/user/kurume_temp2gf.py
明日あたり、ちゃんとグラフになってるかなー。できてたら貼付けます。
2013/2/12追記
1週間グラフ化した結果。
福岡県久留米市は2013/2/6あたり*5は予想気温が高めから-2℃まで動いてて、その後は同じぐらいの予想気温でした。前の日の最低気温が次の日の最高気温とか下がり過ぎですね。グラフ化するとこういった変化が見えて面白いです。
複合グラフのUPDATE_ATが前なのは何だろう?複合グラフの定義修正したときかな。各データのグラフはcrontabの時間になってる。