Hatena::ブログ(Diary)

Okiraku Programming RSSフィード Twitter

2009-05-05 ArduinoからTwitterにPOSTするライブラリ

ArduinoからTwitterにPOSTするライブラリ


このエントリで紹介しているライブラリは、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 IDEHardware/Libararyに格納すればOKです。(追記:MacIDE 17以降では、~/Documents/Arduino/libraries フォルダ(なければ新規作成)に入れてください。)。IDE再起動すると自動的にライブラリビルドされます。

簡単なサンプルが用意してあり、メニューの File>Sketchbook>Examples>Twitter>SimplePost から開けます。

これを(IPアドレス等の設定の上)Arduinoアップロードすると、"Hello, World! I'm Arduino!"というメッセージTwitterに投稿します。

f:id:NeoCat:20090505050636p:image:w350

↑こんなかんじ。また、シリアルポートに接続状況等を出力します。

使い方

上記サンプルをベースに説明します。最初に、グローバル変数としてTwitterライブラリ初期化します。アカウント名:パスワード という文字列引数に渡します。

Twitter twitter("YourID:Password");

setup()関数では、Ethernet初期化が必要です。詳細はリファレンスを。


TwitterへのPOSTは、

    twitter.post("POSTする文字列");

というメソッドで行います。Twitterへの接続が成功するとtrueが返ります。


Twitterからのレスポンスを待つためには

    int status = twitter.wait();

を呼びます。このメソッドはレスポンスに含まれるHTTPステータスコードを数値で返します。

200なら投稿成功です! 401が返ってきた場合は認証エラーですので、パスワード等を見直してみてください。ほかにも短時間の間に全く同じ文字列を投稿するとエラーになるようなので注意して下さい。

応用

これを使えば、いろんなセンサからTwitterにPOSTできる「実世界bot」がArduino単独で簡単に作れるはず。植木鉢とかキャットドアとか、いろいろbot化してみると良いんじゃないかな?

追記5/13

Arduino Wikiに使い方の説明(in English)を書いたのでリンク貼っておきます。

http://www.arduino.cc/playground/Code/TwitterLibrary

フォーラムへの投稿:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1241597160

追記7/11

複数回のPOSTがうまくいかないというバグがありましたので、修正しました。

また、Arduinoシリアルポートターミナルソフト等で接続してTwitterにPOSTするというサンプルスケッチをExamplesに追加しました。

旧バージョンをダウンロードされた方は、上記のリンク先から再ダウンロードをお願いします。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。