[Sy] AWS IoT Device SDK for JavaScript を Mac にインストールして サンプルアプリケーションを動かす(device-example.js)
AWS IoT Device SDK for JavaScript を Mac にインストールしてサンプルアプリケーションの device-example.js を動かしてみます。
1. インストール
SDK のインストールは npm を使います。
まず適当にディレクトリを作成して移動しておきます。
$ mkdir aws-iot-test
$ cd aws-iot-test
npm
を使って aws-iot-device-sdk
をインストールします。
$ npm install aws-iot-device-sdk
$ npm ls --depth=0
/Users/utano320/Documents/Develop/aws-iot-test
└── aws-iot-device-sdk@2.2.0
2. device-example.js を動かすための準備
aws-iot-device-sdk
にはいくつかのサンプルアプリケーションがあり、それらを動かすために準備が必要です。
今回は、 device-example.js
を動かしてみますので、そのために必要な準備をしていきます。
2-1. 証明書などを配置する
AWS IoT のコンソール画面からモノの登録を行い、ダウンロードした証明書を certs ディレクトリに配置します。
モノの登録などについては、若干画面遷移などは違いますがこちらを参考に行いました。
⇒ AWS IoT の開始方法 - AWS IoTコンソール画面から証明書などをダウンロードしおきます。
次に以下のディレクトリを作成します。(別に名前はなんでも良いです)
$ mkdir certs
AWS IoT からダウンロードした証明書などを certs ディレクトリに配置します。
- 秘密鍵(privateKey) : 例)8b29044466-private.pem.key
- 証明書 (clientCert) : 例)8b29044466-certificate.pem.crt
- CAルート証明書 (caCert) : 例)VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem
証明書を配置し終わったら、ディレクトリとファイルが次のようになっていればOKです。
$ ls
certs node_modules
$ ls certs
8b29044466-certificate.pem.crt
8b29044466-private.pem.key
VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem
2-2. 設定ファイルに証明書のファイル名を記載する
サンプルアプリケーションを実行するために、今置いた証明書などのファイル名を ezamples/lib/cmdline.js
の102行目あたりに記載しておきます。
(以降の操作は、 node_modules/aws-iot-device-sdk/
のディレクトリ配下で行うので、ここで移動しておきます。)
$ cd node_modules/aws-iot-device-sdk/
$ vim examples/lib/cmdline.js
(cmdline.js 102行目あたり)
・
・
・
default: {
protocol: 'mqtts',
clientId: clientIdDefault,
privateKey: 'private.pem.key',
clientCert: 'certificate.pem.crt',
caCert: 'root-CA.crt',
testMode: 1,
/* milliseconds */
baseReconnectTimeMs: 4000,
/* seconds */
keepAlive: 300,
/* milliseconds */
delay: 4000,
Debug: false
},
・
・
・
↓ (privateKey, clientCert, caCertのところを変える)
・
・
・
privateKey: '8b29044466-private.pem.key',
clientCert: '8b29044466-certificate.pem.crt',
caCert: 'VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem',
・
・
・
2-3. エンドポイントを取得
AWS IoT のコンソール画面から、 HTTPS のエンドポイントをコピーしておきます。
(AWS IoT > 管理 > モノ > (対象のモノを選択) ⇒ 操作 ⇒ HTTPS
にあります)
2-4. aws-iot-device-sdk ディレクトリで npm install
(2018/01/05追記)
aws-iot-devicd-sdk
ディレクトリで npm install
をして必要なパッケージをインストールしておきます。
$ npm install
ここまでで準備は完了です。
3. device-example.js を実行する
ではサンプルアプリケーションの1つの、 device-example.js
を実行してみます。
サンプルアプリケーションは、ターミナルを2つ(以降、ターミナル1、ターミナル2と呼びます)立ち上げて、動作確認をしていくことになります。
まずターミナル1で以下のコマンドを実行します。
(ターミナル1)
$ node examples/device-example.js -f ../../certs --test-mode=1 -H xxxxxxxxxxxxxx.iot.ap-northeast-1.amazonaws.com
connect
-f
オプションは、証明書などを置いたディレクトリのパスを指定します。
-H
オプションには、先ほどコピーしておいたエンドポイントをセットしてください。(xxxxxxの部分は英数字、ap-northeast-1 の部分は使っているリージョンによって変わります)
「connect」と出力されていれば、成功です。もしエラーが出る場合は、ここまでの設定をもう一度見直してみてください。
続いてターミナル2では --test-mode=2
にして実行します。
(ターミナル2)
$ node examples/device-example.js -f ../../certs --test-mode=2 -H xxxxxxxxxxxxxx.iot.ap-northeast-1.amazonaws.com
connect
こちらも「connect」と出力されるはずです。
そしてちょっとだけ待っていると、ターミナル2とターミナル1に以下のような出力が一定間隔で出てきます。
(ターミナル2)
message topic_2 {"mode1Process":69}
message topic_2 {"mode1Process":70}
message topic_2 {"mode1Process":71}
(ターミナル1)
message topic_1 {"mode2Process":1}
message topic_1 {"mode2Process":2}
message topic_1 {"mode2Process":3}
出力される順番は、ターミナル2に1行出力されると、ターミナル1に1行出力される、というように交互になります。(ターミナル1とターミナル2での実行を同時に行うと、同じタイミングで出力されます)
これで動作確認は完了です。
(2018/1/4 追記)
device-example.js
のコードを読んで動きを確認しました。