[Sy] AWS IoT Device SDK for JavaScript を使って MQTTS で publish するサンプル
これまで AWS IoT Device SDK for JavaScript に付属しているサンプル・アプリケーションを使って動作確認をしてきましたが、今回は MQTTS で publish する簡単なコードを書いてみます。
前回までの流れはこちらを。
⇒ [Sy] AWS IoT Device SDK for JavaScript を Mac にインストールして サンプルアプリケーションを動かす(device-example.js) ⇒ [Sy] AWS IoT Device SDK for JavaScript のサンプルアプリケーションの処理を理解する(device-example.js) ⇒ [Sy] AWS IoT Device SDK for JavaScript のサンプルアプリケーション(device-example.js)のメッセージを管理コンソール上で subscribe する1. aws-iot-device-sdk をインストールする
まずは作業用のディレクトリを作って、 aws-iot-device-sdk
を npm
でインストールします。
$ mkdir aws-iot-test
$ cd aws-iot-test
$ npm install aws-iot-device-sdk
$ cd aws-iot-device-sdk
$ npm install
$ cd ..
2. 証明書などを配置する
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
3. publish するためのコードを書く
publish.js
という名前(もちろん任意でOK)で以下のコードを保存します。
$ vim publish.js
(publish.js)
var awsIot = require('aws-iot-device-sdk');
var device = awsIot.device({
keyPath: './certs/8b29044466-private.pem.key',
certPath: './certs/8b29044466-certificate.pem.crt',
caPath: './certs/VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem',
clientId: 'nouser' + (Math.floor((Math.random() * 100000) + 1)),
host: 'xxxxxxxxxxxxxx.iot.ap-northeast-1.amazonaws.com'
});
device.on('connect', function() {
console.log('connect');
setInterval(function() {
device.publish('test', JSON.stringify({ value: Math.random() * 100}));
}, 5000);
});
コード中の host
や証明書などのファイル名は環境に合わせて変更してください。
このコードでやっていることは、 「test
トピックに5秒ごとにランダムな数値を publish (送信)する」というシンプルなものです。
これで必要なファイルはすべて揃いました。
ディレクトリ・ファイルの構成はこうなっています。
aws-iot-test/
├ certs/
│ ├ 8b29044466-certificate.pem.crt
│ ├ 8b29044466-private.pem.key
│ └ VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem
├ node_modules/
│ ├ ・
│ ├ ・
│ ├ aws-iot-device-sdk/
│ ├ ・
│ └ ・
└ publish.js
4. 実行&管理コンソール上で確認
publish.js
を実行する前に、 AWS IoT
の管理コンソールを開いて、 test
トピックを subscribe (受信) してメッセージを画面上で確認できるようにしておきます。
ブラウザは横に置いといて、ターミナルで publish.js
を実行します。
$ node publish.js
connect
ターミナルでは connect
しか表示されませんが、5秒ごとにメッセージを publish しています。
そして管理コンソール上で、以下のようにメッセージが5秒おきに表示されれば成功です。
(2018/01/14 追記)
今回 publish したメッセージを subscribe するサンプルはこちら。
⇒ [Sy] AWS IoT Device SDK for JavaScript を使って MQTTS で subscribe するサンプル