このエントリで紹介しているライブラリは、2010/8月に廃止されたBASIC認証を使用しており、現在動作しません。
以後は、OAuth対応版に移行して下さい。使い方はほぼ同じです。
一つ前のエントリで紹介したArduinoの魅力の一つに、「シールド」と呼ばれる拡張ボードを載せることで簡単に様々なハードウェアを利用できることがあります。純正のEthernetシールドやXBee(無線通信)シールドなどが販売されているほか、ユーザの手によっても作品が作られているようです。純正のシールドはライブラリやサンプルもIDEに組み込まれているので、非常に簡単に使えます。
今回はスイッチサイエンスさんで純正Ethernetシールドを購入してみました。
+
Arduino Duemilanove 328 + Ethernet Shield
これを使って、TwitterにメッセージをポストするSketchを書いてみました。せっかくなので、ライブラリ化して簡単に使えるようにしてあります。
似たようなコードはこの辺りにもありますが、このライブラリではBAISC認証で必要なMIMEエンコード等の処理もライブラリ内で行えるため、より簡単に利用できるようになっています。
ライブラリのダウンロード
こちらからどうぞ。Library-Twitter.zip ※7/11バグ修正を行いました:詳細下記。
ダウンロード後、アーカイブを解凍してできるTwitterフォルダをArduino IDEのHardware/Libararyに格納すればOKです。(追記:MacのIDE 17以降では、~/Documents/Arduino/libraries フォルダ(なければ新規作成)に入れてください。)。IDEを再起動すると自動的にライブラリがビルドされます。
簡単なサンプルが用意してあり、メニューの File>Sketchbook>Examples>Twitter>SimplePost から開けます。
これを(IPアドレス等の設定の上)Arduinoにアップロードすると、"Hello, World! I'm Arduino!"というメッセージをTwitterに投稿します。
↑こんなかんじ。また、シリアルポートに接続状況等を出力します。
使い方
上記サンプルをベースに説明します。最初に、グローバル変数としてTwitterライブラリを初期化します。アカウント名:パスワード という文字列を引数に渡します。
Twitter twitter("YourID:Password");
setup()関数では、Ethernetの初期化が必要です。詳細はリファレンスを。
TwitterへのPOSTは、
twitter.post("POSTする文字列");
というメソッドで行います。Twitterへの接続が成功するとtrueが返ります。
Twitterからのレスポンスを待つためには
int status = twitter.wait();
を呼びます。このメソッドはレスポンスに含まれるHTTPステータスコードを数値で返します。
200なら投稿成功です! 401が返ってきた場合は認証エラーですので、パスワード等を見直してみてください。ほかにも短時間の間に全く同じ文字列を投稿するとエラーになるようなので注意して下さい。
追記5/13
Arduino Wikiに使い方の説明(in English)を書いたのでリンク貼っておきます。
http://www.arduino.cc/playground/Code/TwitterLibrary
フォーラムへの投稿:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1241597160