この記事はmyThingsハンズオンの参考資料の一部です。
myThingsアプリ上で組み合わせを作成する
LEDを配線する
ブレッドボード、LED、抵抗、ジャンパーワイヤーを使って、下図のように配線してください。
LEDを配線する際は、向きに気をつけてください。付け根が折れ曲がっていたり長かったりするほうの足をアノード、もう一方の足をカソードといいます。下図の場合は両方とも左足がアノードです。
RaspberryPi単体でLEDを光らせる
作業用ディレクトリを作成します。
mkdir ~/mythings_node_apps
cd ~/mythings_node_apps
プログラムを作成します
sudo vi led.js
var fs = require('fs');
fs.writeFileSync('/sys/class/gpio/export', 25);
fs.writeFileSync('/sys/class/gpio/gpio25/direction', 'out');
fs.writeFileSync('/sys/class/gpio/gpio25/value', 1);
setTimeout(function(){
fs.writeFileSync('/sys/class/gpio/gpio25/value', 0);
fs.writeFileSync('/sys/class/gpio/unexport', 25);
}, 2000);
プログラムを実行します。
sudo node led.js
2秒間LEDが点灯したら成功です。
アクションからデータを取得する
必要なライブラリをインストールします。
cd ~/mythings_node_apps
sudo npm install meshblu@1.18
sudo npm install request
プログラムを作成します。{action-1のuuid}、{action-1のtoken}、{IDCFのIPアドレス}の3箇所を自身の環境に合わせて置換してください。
sudo vi websocket.js
var meshblu = require('meshblu');
var request = require('request');
var conn = meshblu.createConnection({
"uuid": "{action-1のuuid}",
"token": "{action-1のtoken}",
"server": "{IDCFのIPアドレス}",
"port": 80
});
conn.on('ready', function(data){
console.log('Ready');
conn.on('message', function(data){
console.log(data);
});
});
プログラムを実行します。
sudo node websocket.js
コンソール上にReadyと表示されたのを確認したら、myThingsアプリ上で組み合わせの手動実行を行ってください。
以下のような実行結果になれば成功です。取得したデータがJSON形式になっており、payloadにmyThingsアプリで設定したIDCFチャンネルのアクションのメッセージが格納されていることが分かります。
$ sudo node websocket.js
Ready
{ devices: [ '670ff362-189f-4c39-bc11-835ff5c359fc' ],
payload: '晴れ',
fromUuid: 'e59281d1-1052-4cab-9357-4cd2556f5c5c' }
プログラムを停止する場合はCtrl+cで停止します。
アクションからデータが取得できたらLEDを光らせる
プログラムを作成します。{action-1のuuid}、{action-1のtoken}、{IDCFのIPアドレス}の3箇所を自身の環境に合わせて置換してください。
cd ~/mythings_node_apps
sudo vi websocket-led.js
var meshblu = require('meshblu');
var request = require('request');
var conn = meshblu.createConnection({
"uuid": "{action-1のuuid}",
"token": "{action-1のtoken}",
"server": "{IDCFのIPアドレス}",
"port": 80
});
conn.on('ready', function(data){
console.log('Ready');
conn.on('message', function(data){
var fs = require('fs');
fs.writeFileSync('/sys/class/gpio/export', 25);
fs.writeFileSync('/sys/class/gpio/gpio25/direction', 'out');
fs.writeFileSync('/sys/class/gpio/gpio25/value', 1);
setTimeout(function(){
fs.writeFileSync('/sys/class/gpio/gpio25/value', 0);
fs.writeFileSync('/sys/class/gpio/unexport', 25);
}, 2000);
});
});
プログラムを実行します。
sudo node websocket-led.js
コンソール上にReadyと表示されたのを確認したら、myThingsアプリ上で組み合わせの手動実行を行ってください。2秒間LEDが点灯したら成功です。
プログラムを停止する場合はCtrl+cで停止します。
課題
myThingsアプリで作成した組み合わせのトリガーを他のチャンネルのものに変更してみましょう。
(例えばTwitterチャンネルの検索条件にあうツイートがあったらトリガーなど)
組み合わせの設定変更だけで、RaspberryPi側はなにも変更せずに自作デバイスの機能を変えることができます。