LoginSignup
6
7

More than 5 years have passed since last update.

【myThingsハンズオン】○○が☓☓だったら、LEDを光らせよう

Last updated at Posted at 2015-12-25

この記事はmyThingsハンズオンの参考資料の一部です。

myThingsアプリ上で組み合わせを作成する

下図のように組み合わせを作成します。
アクション.png

LEDを配線する

ブレッドボード、LED、抵抗、ジャンパーワイヤーを使って、下図のように配線してください。
myThings_LED.png

LEDを配線する際は、向きに気をつけてください。付け根が折れ曲がっていたり長かったりするほうの足をアノード、もう一方の足をカソードといいます。下図の場合は両方とも左足がアノードです。
ecb947f66870049baefc.png

RaspberryPi単体でLEDを光らせる

作業用ディレクトリを作成します。

mkdir ~/mythings_node_apps
cd ~/mythings_node_apps

プログラムを作成します

sudo vi led.js
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
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アプリ上で組み合わせの手動実行を行ってください。
手動実行.png

以下のような実行結果になれば成功です。取得したデータがJSON形式になっており、payloadにmyThingsアプリで設定したIDCFチャンネルのアクションのメッセージが格納されていることが分かります。

実行結果の例
$ sudo node websocket.js
Ready
{ devices: [ '670ff362-189f-4c39-bc11-835ff5c359fc' ],
  payload: '晴れ',
  fromUuid: 'e59281d1-1052-4cab-9357-4cd2556f5c5c' }

アクションのメッセージ.png

プログラムを停止する場合はCtrl+cで停止します。

アクションからデータが取得できたらLEDを光らせる

プログラムを作成します。{action-1のuuid}、{action-1のtoken}、{IDCFのIPアドレス}の3箇所を自身の環境に合わせて置換してください。

cd ~/mythings_node_apps
sudo vi websocket-led.js
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側はなにも変更せずに自作デバイスの機能を変えることができます。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7