BluemixでIoT　温湿度、気圧を収集・蓄積・可視化＋LED制御 その６

##０．はじめに
[前回](http://qiita.com/hino9966/items/7db8fa6e9c2f45d0b4b2)の続きです。今回はBluemixとRaspberryPiを設定し、MQTTの接続確認を行います。

##１．必要なもの（今回準備したもの）
|項目|数量|メモ|
|---|:---:|---|

##２．参考にさせていただいたところ
[Nodejs & raspberry pi でLEDをチカチカさせる](http://qiita.com/glostuan/items/f8e96564473f8e35a084)
[IBM Internet of Things Foundation (Node.js クライアント・ライブラリー)](https://docs.internetofthings.ibmcloud.com/ja/nodejs/node-js_intro.html)

##１．(Bluemix側)Node-REDによるMQTTの設定
**①ダッシュボード画面から下図の赤枠部分にあるリンクをクリックする。**
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/f2ec0850-f199-c564-9843-c94b7755d367.png)

**②下図の ``Go to your Node-RED flow editor`` をクリックする。**
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/c61bcfed-a0ff-0d80-5aad-a93728174efd.png)

クリックすると、Node-REDが起動します。（初期時点では、下図のようなノードが配置されています。）
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/f667a9b0-eb29-e441-4db5-f2db15e3abc4.png)

**③下図のように範囲指定して”Delキー”を押すことで、今回は使用しないノードを削除する。**
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/03e27673-e56f-fcee-b58d-b478b6dac7a9.png)

**④ IBM IoT App In ノードをダブルクリックして、プロパティを表示する。**
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/47db6796-1d6a-64e7-f279-dfb4f85e4907.png)

**⑤下図の赤枠部分を変更する。**
　Authentication項目では、 "Bluemix Service"　を指定する。
　Device ID項目では、前回のInternet of Things Platformで設定した "sensor001"　を入力する。
　Name項目では、今回は　"センサ情報取得"としました。
　その他は、デフォルトのままとして、OKボタンをクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/20481cb3-5a00-144f-6958-d4cb6823fce1.png)

**⑥Node-REDの変更をデプロイ（設定反映）する。**
　画面の右上にある"Deploy"ボタンをクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/4625f240-5c4e-a1d6-3e2b-931cb8a543a8.png)

　エラーが無く正常に反映できると、次のメッセージが出力されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/248926f0-6f25-a739-30e0-3a1b4882469c.png)

##２．(Raspberry Pi側)Node.jsのインストール
**①Node.js導入ファイルをダウンロードする。**

```text:コマンド
pi@raspberrypi ~ $ wget https://s3-eu-west-1.amazonaws.com/conoroneill.net/wp-content/uploads/2015/02/node-v0.12.0-linux-arm-pi.tar.gz
```
**②ダウンロードしたファイルを解凍する。**

```text:コマンド
pi@raspberrypi ~ $ tar zxvf node-v0.12.0-linux-arm-pi.tar.gz
```

**③解凍したファイルを/usr/localにコピーする。**

```text:コマンド
pi@raspberrypi ~ $ sudo cp -pR node-v0.12.0-linux-arm-pi/* /usr/local/
```

**④nodeコマンドが動作するか確認する。**
 v0.12.0が表示されれば動作しています。

```text:コマンド
pi@raspberrypi ~ $ node -v
v0.12.0
```

**⑤node.js用のパッケージを追加する。**
今回作成するプログラムで必要になるnode.js用パッケージを追加する。

```text:コマンド
pi@raspberrypi ~ $ npm install moment ibmiotf onoff i2c async
```

##３．MQTT接続用プログラムの作成＆接続確認
**①MQTT接続サンプルプログラムを作成する。**

```js:mqtt.js
var moment = require('moment');
var Client = require("ibmiotf").IotfDevice;

var config = {
   "org" : "XXXX",        //前回のIBM Internet of Things Foundation画面で表示された組織IDを設定
   "id"  : "sensor001",   //前回のIBM Internet of Things Foundation画面で指定したsensor001を設定
   "type": "raspi01",     //前回のIBM Internet of Things Foundation画面で指定したraspi01を設定
   "auth-method" : "token",
   "auth-token" : "XXXXX"//前回のIBM Internet of Things Foundation画面で表示された認証トークンを設定
};

var client = new Client (config);

client.connect();

client.on("connect", function () {
    var nowtime = moment().format("YYYY-MM-DD HH:mm:ss.SSS");
    var temp_v =  25.0
    var humid_v = 40.0
    var press_v = 1000.0
    payload = JSON.stringify({d : { timestamp : nowtime, temp : temp_v, humid : humid_v, press : press_v }});
    client.publish ("eid", "json", payload);
});
```

**②MQTT接続サンプルプログラムを実行する。**

```text:コマンド
pi@raspberrypi ~ $ node mqtt.js
```

**④Node-RED側で受信していることを確認する。**
下記の赤枠のようにJSON形式のデータが受信できていれば、成功です。
![image](https://qiita-image-store.s3.amazonaws.com/0/113879/1ac5f197-fbba-b3c7-50ca-433c2f35c254.png)

**⑤MQTT接続サンプルプログラムを停止する。**
　node mqtt.jsが実行中となっているため、Ctrlキーと "C"を同時押しして、強制終了させます。


以上で、MQTTの接続確認は完了です。

次回([その７](http://qiita.com/hino9966/items/2ff8b224c64a2570d68e))は、MongoDBにデータを蓄積する部分を実装します。