本文へジャンプします。

ニフクラ ユーザーガイド

クラウド トップ>ユーザーガイド>IoTデバイスハブ>IoTデバイスハブにRaspberry Pi2を接続する

IoTデバイスハブにRaspberry Pi2を接続する

IoTデバイスハブにRaspberry Pi2を接続するためのドキュメントです。
簡単な回路設計に関する知識も必要となりますが、画像付きで簡潔に紹介するため、デバイスの初期セットアップが可能な方であれば、どなたでも実施できるドキュメントとなっています。

事前準備

機材の準備
品名 数量
Raspberry Pi 2 Model B 1台
microSDカード 1個
USB電源(2A以上) 1個
LED発光素子 1個
抵抗 1個
ジャンパーワイヤー(オス−メス) 2本
ブレッドボードミニ 1個
Raspberry Pi 2 Model Bの環境設定

エディター、タイムゾーン、ネットワークなどの初期セットアップをすべてすませてください。
本ドキュメントでは、エディターとしてRaspberry Pi2の標準エディターである「nanoエディター」を使用しています。

IoTデバイスハブでの設定

下記ページを参考にプロジェクトを作成してください。

下記ページを参考にデバイスクラスとインスタンスを作成し、デバイスIDとAPIキーをメモしておいてください。(後ほど設定します)

開発環境セットアップ

Node.jsのインストール

Raspberry Piにログインし、Node.jsをインストールしてください。

以下の内容は、Node.jsの公式サイトからv6.3.0のソースコードをダウンロード・インストールした場合のコマンド例です。
(お手元のRaspberry PiやNode.jsのバージョンによっては、同じ手順でインストールできない場合があります。)

$ wget https://nodejs.org/dist/v6.3.0/node-v6.3.0-linux-armv7l.tar.xz
$ tar Jxvf node-v6.3.0-linux-armv7l.tar.xz
$ cd node-v6.3.0-linux-armv7l/
$ sudo cp -R * /usr/local/
$ node -v
v6.3.0
LEDコントローラコードをインストール

下記のコマンドを実行してください。

mkdir LedSample
cd LedSample
wget http://dev.tinkermode.com/docs/raspberry_pi/app.js
wget http://dev.tinkermode.com/docs/raspberry_pi/package.json
apt-get install gcc-4.8 g++-4.8
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
npm install

設定

サンプルコードの設定

先ほど取得したapp.jsを開いてください。

cd LedSample
nano app.js

まずは、「DEVICE_ID」と「API_KEY」を、事前準備でメモしたデバイスIDとAPIキーに置き換えてください。
次に、setApiHostメソッドでIoTデバイスハブのエンドポイントを指定します。

コード例
var ModeDevice = require('mode-device');
var gpio = require('onoff').Gpio;
var led = new gpio(4, 'out');

//
// デバイスの設定を行います。
// デバイスIDとAPIキーをセットしてください。
//
var DEVICE_ID = _DEVICE_ID_;
var API_KEY = '_API_KEY_';

//
// Output debug message
//
ModeDevice.debug = true;

var device = new ModeDevice(DEVICE_ID, API_KEY);

//
//ここで、IoTデバイスハブのAPI接続先を指定しています。
//
device.setApiHost('iot-device.jp-east-1.api.cloud.nifty.com');

device.triggerEvent('first_event', {'eventItem': 1});

device.commandCallback = function(msg, flags) {
    if (msg['action'] == 'light') {
    var v = msg['parameters']['switch'] ? 1 : 0;
    led.writeSync(v);
    }
}

device.listenCommands();
デバイスをクレームモードに切り替える。

cURLプログラムが無ければ下記の通りインストールします。

apt-get install curl

APIをリクエストしてクレームモードに切り替えます。(下記の例だと、認証可能時間300秒)
「DEVICE_ID」と「YOUR_API_KEY」は事前準備でメモしたデバイスIDとAPIキーに置き換えてください。

curl -i -N -H "Authorization: ModeCloud _YOUR_API_KEY_" --data "deviceId=_DEVICE_ID_&claimable=1&duration=300" https://iot-device.jp-east-1.api.cloud.nifty.com/deviceRegistration

応答メッセージにclaimExpirationTimeが含まれていれば正常。

{"claimExpirationTime":"2016-07-07T15:25:47.125866599+09:00"}

APIリクエストの仕様について詳しくは下記ページをご覧ください。

イベント発信テスト

IoTデバイスハブへの接続を確認します。先ほど設定したapp.jsを実行してください。

cd LedSample
node app.js

正常に接続した場合の出力結果は以下の通りです。

Triggering event #1
Reconnect websocket in 0 seconds
Socket is allocated to event #1
Reconnecting websocket
Connecting to wss://iot-device.jp-east-1.api.cloud.nifty.com:443/devices/1/command
Event #1 triggered
Websocket client is connected

ブレットボード上での回路実装

LED素子の足が長いほうが「プラス」です。ご注意ください。

ブレットボード

コマンド受信テスト

Raspberry Pi 2 Model Bに、アプリシミュレーターからコマンドを送ります。
まずは、先ほど設定したapp.jsを開いてください。

cd LedSample
node app.js

アプリシミュレーター上で、下記のコマンドを送信します。

Action:light
Parameter:switch:1

ブレッドボードのライトが正常に点いたことを確認します。

アプリシミュレーター上で、下記のコマンドを送信し、ライトが正常に消えたことを確認します。

Action:light
Parameters:switch:0

まとめ

本ドキュメントの内容を実施することで、簡単にIoTデバイスハブにIoTデバイス(Raspberry Pi2)を接続できることができました。
上記のデモを発展させ、より高度な実装を行う場合は、APIリファレンスをご覧ください。

推奨画面サイズ 1024×768 以上