AWS IoT

World Wide Pianoを作成する際、AWS IoTを使いました。使い方を覚えて置くために記録として残します。

start.ps1を起動する
開発環境
  • Windows 10 32ビット
  • node バージョン 2.16.1
  • PowerShell
PS C:\Users\user> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.628
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.628
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

(2017.08,17)

開発環境はWindows7 32ビットです。nodeのバージョンは 5.6.0 です。6.4.0ではnpmでエラーが出て先へ進めませんでした。 ダウンロードした、connect_device_package.zipの中にあるstart.ps1のバッチファ イルを動作させるには、PowerShellが必要となります。コマンドプロンプトを管理者として実行します。コマンドラインで

>PowerShell

と入力します。以下のコマンドでバージョンを確認します。

PS > $PSVersionTable
PS > PSVersion    2.0

だとこの後進められないので、3.0にバージョンアップします。バージョンアップす るには、Windows Management Framework 3.0をインストールします。 インストールは ここ(http://www.microsoft.com/en-us/download/details.aspx?id=34595)からできます。

PowerShell Ver3.0 を導入した結果を下に示します。

Name                           Value                                           
----                           -----                                           
PSVersion                      3.0                                             
WSManStackVersion              3.0                                             
SerializationVersion           1.1.0.1                                         
CLRVersion                     4.0.30319.42000                                 
BuildVersion                   6.2.9200.22198                                  
PSCompatibleVersions           {1.0, 2.0, 3.0}                                 
PSRemotingProtocolVersion      2.2                                             

こちらのページでダウンロードした、connect_device_package.zipを解凍します。 connect_device_packageフォルダーには4つのファイルが入っています。

Otoshimono.cert.pem
Otoshimono.private.key
Otoshimono.public.key
root-CA.crt
start.ps1

コマンドプロンプトを開き、connect_device_packageのフォルダーへ移動します。 Powershellを起動します。

PS > .\start.ps1 

を実行します。 実行権限を追加します。

PS > Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

node_modulesをダウンロードした後、

node .\node_modules\aws-iot-device-sdk\examples\device-example.js

が実行され、connect で止まります。 こちらのコマンドプロンプトをプロンプトAとしておきます。



ここで、もう一つコマンドプロンプトを開きます。 一台のPCで2つのコマンドプロンプトを使って3年前は動作させることができたの ですが、今日試すとできなかったので、別なPCを用意し、connect_device_package フォルダーをコピーしておきます。Powershellと、start.ps1の実行は同じです。 ここで、Control+"C"を押してコマンドプロンプトへ戻ります。こちらをプロンプトB とします。

次のコマンドを打ち込みます。このコマンドは、start.ps1をエディタで開くと一番 下"`nRunning pub/sub sample application..." に記載されています。これをコピーして最後に、"-t 2"を追加します。 (以下参照して下さい。\とリターンは消してください)

node .\node_modules\aws-iot-device-sdk\examples\device-example.js \
--host-name abcdefghijklmg.iot.us-west-2.amazonaws.com \
--private-key .\Otoshimono.private.key \
--client-certificate .\Otoshimono.cert.pem \
--ca-certificate .\root-CA.crt \
--client-id=sdk-nodejs-xxxxxxxa-axxx-xxdx-bxxb-cxaefxxxxxxx \
--t 2

を動作させます。プロンプトBには



とtopic_2が表示されます。また、プロンプトAには

とtopic_1が表示されます。これは、二つのプロンプトがコマンドを投げ合っている
ことを示しています。

AWS IoTサービスにて、それぞれのプロンプトが何を投げているかを調べます。左のメニューからテストを選択します。トピックのサブスクリプションに"topic_1"を記入し「トピックへのサブスクライブ」をクリックします。もう一度、左のメニューから「トピックへのサブスクライブする」をクリックし、トピックのサブスクリプションに"topic_2"を記入し「トピックへのサブスクライブ」をクリックします。左のメニューにtopic_1とtopic_2から選べるようになります。

topic_1を選択し、

node .\node_modules\aws-iot-device-sdk\examples\device-example.js \
...
...
--t 2

をコマンドプロンプトで実行すると、topic_1へ投げているイベントを見ることができます。

topic_2を選択し、

node .\node_modules\aws-iot-device-sdk\examples\device-example.js \
...
...
--t 1

をコマンドプロンプトで実行すると、topic_2へ投げているイベントを見ることができます。

反対に、AWS側からtopic_1に対してコマンドを送る時には、以下の画面にて「トピッ
クに発行」をクリックします。



node .\node_modules\aws-iot-device-sdk\examples\device-example.js \
...
...
--t 1

のプロンプトに、"message": "Hello from AWS IoT console"が表示されます。