World Wide Pianoを作成する際、AWS IoTを使いました。使い方を覚えて置くために記録として残します。
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
開発環境は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"が表示されます。