TwitterアカウントにON,OFF,BLINK,STOPメンションを投げてLEDを点消灯させてみます。
Raspberry Pi + Node.jsでIoTを体験しよう〈Node.jsシリーズ vol.5〉を模倣しました。
概要
- Node.js向けのTwitter API ライブラリ “twitter” を利用する。
- johnny-fiveを通してArduinoのLED(L13)の点灯制御を行う。
- 制御語は下のとおりです。
[ON] : LED点灯
[OFF] : LED消灯
[BLINK] : LED点滅
[STOP] : LED点滅停止
準備
- twitterライブラリのインストール
$ npm install twitter
- twitterアプリケーションのと登録とkeyの取得
- Twitter Application Managementを開き「Create Twitter App」をクリックします。
- アプリケーション登録操作が面に遷移するので必要事項を記述します。
- keyの取得
- config.jsファイルの作成
「Keys and Access Tokens」で取得した consumer key, consumer secret, access token key, acsess token secret を下のフォーマットにコピペしファイル名 config.js で保存します。
注意)xxxxx keyはアプリケーションのID,xxxxx secretはパスワードに相当するものです。外に漏れて悪意の第三者に渡ると登録アプリケーションを乗っ取られスパムtweet等の踏み台にされるので扱いには注意が必要です。module.exports = { consumer_key: 'your consumer key', consumer_secret: 'your consumer secret', access_token_key: 'your access token key', access_token_secret: 'your access token secret' }
- Twitter Application Managementを開き「Create Twitter App」をクリックします。
ソースコード
twitter_led.js
var twitter = require('twitter'); var five = require("johnny-five"); var board = new five.Board(); // アプリ登録時に取得したkeyを入れて初期化 var client = new twitter(require('./config.js')); board.on("ready", function() { // Create an Led on pin 13 var led = new five.Led(13); // Public APIのstatuses/filterで取得したタイムラインを、指定のアカウント名を含む文字列でフィルターする client.stream( 'statuses/filter', { track : '@your_account' }, function( stream ) { // フィルターされたデータのストリームを受け取る stream.on( 'data', function( data ) { var text = data.text; // ツイートのテキスト console.log( text ); //テキストにマッチするstringがあったら処理 if ( /\[ON\]/.test(text) ) { led.stop(); led.on(); } if ( /\[OFF\]/.test(text) ) { led.stop(); led.off(); } if ( /\[BLINK\]/.test(text) ) { led.blink(500); } if ( /\[STOP\]/.test(text) ) { led.stop(); } }); }); });
運用
- twitter_led.jsを稼働させます。
- このアプリ(twitter_led.js)のオーナー(登録者)のアカウントへ [ON] とメンションを投げるとArduinoのL13が点灯します。