気象観測装置を設置してみる その5 -気象観測値のTwitter Botの作成-


since:2013-1-20
last update:2013-1-20
目次へ   前のページへ


5、気象観測値のTwitter Botの作成

 Raspberry Pi上で観測値をインターネット上のサイトにupするという常時運用できましたので、次に流行を取り入れるという意味で、 これらの観測値をTwitterで自動的につぶやかせてみたいと思います。いわゆるTwitter Botというものです。
 TwitterはOAuthに対応しており、このような機械的投稿も比較的安全に実現が可能です

 まずTwitterのアカウントを取得します。個人のアカウントと併用しても良いのですが、 今回はBot専用のアカウントを取得します。


次に認証用の鍵を入手するため、Twitter用の開発者用ページ https://dev.twitter.com/apps へ行き、 ユーザー登録後、鍵を入手します。
このあたりはインターネット上に詳しいサイトがいくつかあります。 私は http://www.sdn-project.net/labo/oauth.html を参考にさせていただきました。


 次に情報の流れを検討します。
 値はweewxから出力されたものを利用しますが、自宅にあるRapberry Piから 直接つぶやきをPOSTする方法と、VPS上にupした情報を元にVPSからつぶやきをPOSTする 方法が考えられます。

今回は青い矢印のルートを選択

 Raspberry Piの負荷も今のところ高くなく、どのみちRaspberry PiからデータをVPSにアップしないと 新しい情報をつぶやけないので、Raspberry Piから直接つぶやく方法にすることにしました。

 Weewxのtemplateを使えば、各種形式(テキストベースですが)での情報出力が可能です。 今回は処理を簡単に行いたかったので、単純にカンマ区切りのテキストで出力させることにしました。(いわゆるCSVです)。
今回出力するテキスト(CSV)ファイル用のtemplateファイルを作成します。

#errorCatcher Echo
#encoding UTF-8
dateTime,$current.dateTime
outTemp,$current.outTemp
heatindex,$current.heatindex
outHumidity,$current.outHumidity
barometer,$current.barometer
barometerTrend,$trend.barometer
rainRate,$current.rainRate
rain,$current.rain
今回作ったtemplateファイルの中身

 skin.confの[FileGenerator]-[[ToDate]]セクションにこのtemplateファイル名を追加します。
runreports.py 等を実行してみて、追加したtemplateファイルに対応するファイルが出力されていればOKです。

 次にプログラムの実装ですが、Rapberry Pi上で処理を行うのであれば、言語的にはPythonが向いていると思いますが、 残念ながらPythonはあまり使ったことが無いのでPHPのCLI版を利用することにしました。

 apt-getでPHPをインストール後、PHPのtwitteroauthライブラリを使用して、適当に実装します。 処理的にはweewxから出力したテキスト(CSV)ファイルをパースして、これらを適当に調整してTwitter側にPOSTするだけです。 TwitterへのPOSTの実装方法は先ほど参考にしたページにも記載があります。
 書いたプログラムをテストしてみて、最後にcronに登録して出来上がりです。
 一応うまく動きました。 今のところ6時間おきにつぶやいていますが、もう少し頻度が短くても良いかもしれません。

@NishinomiyaTenk からのツイート




前のページ  [1] [2] [3] [4] [5]  目次へ