Application Clientの準備

0. はじめに

Application Clientの準備では、Windows PC にてDevice Shadowへデバイスを操作する制御メッセージを送るための準備を行います。
Application Clientの準備には、次の3つの作業があります。

  1. Windows PC にMQTTブローカーEclipse Mosquittoをインストールします。
  2. 作業用ディレクトリを準備します。
  3. Device Shadowへ制御メッセージを送るためのバッチファイルとメッセージを確認するするためのバッチファイルを作成します。
    3-1. 制御メッセージ パブリッシュ用バッチファイル
    3-2. メッセージ サブスクライブ用バッチファイル

1. Eclipse Mosquitto のインストール

Windows PC にてEclipse Mosquittoダウンロード ページよりバイナリパッケージ (mosquitto-2.0.15 Windows 64bit版)をダウンロードしインストールして下さい。

パッケージには、MQTTブローカー(サーバ mosquitto.exe)とMQTTパブリッシュ(受信用)クライアント(mosquitto_pub.exe)並びにMQTTサブスクライブ(送信用)クライアント(mosquitto_sub.exe)が含まれていますが、 チュートリアルではMQTTブローカーは使用せず mosquitto_pub.exe と mosquitto_sub.exe を使用します。

なお、バイナリパッケージには64bit版32bit版がありますが、チュートリアルでは64bit版がデフォルトのインストール先にインストールされていることを前提に説明します。

2. 作業用ディレクトリの準備

2-1. 作業用ディレクトリの作成

Windows PC にてコマンド プロンプト(cmd.exe)を開き作業用ディレクトリの準備をします。

Microsoft Windows [Version 10.0.22000.1098]
(c) Microsoft Corporation. All rights reserved.
c:\Users\user>mkdir rs_serial
c:\Users\user>cd rs_serial
  1. コマンド プロンプト(cmd.exe)を開きます。
  2. 適当な作業用ディレクトを作ります。 チュートリアルではrs_serial としています。
  3. 作業用ディレクトリに移ります。

2-2. 証明書のコピー

mosquitto_pub.exemosquitto_sub.exe が接続認証に用いる証明書を用意します。
証明書のダウンロードでダウンロードした次のファイルを作業用ディレクトリにコピーします。

  • デバイス証明書 (<32bitのハッシュコード>-certificate.pem.crt)
  • プライベートキー (<32bitのハッシュコード>-private.pem.key)
  • ルート CA 証明書 (AmazonRootCA1.pem)

ここで <32bitのハッシュコード>とは64文字の16進数です。(e.g. f308184f4d6216a23003b517d60a3ab439f6f3607fe4ebee4cec14677a3f5098)

C:\Users\user\rs_serial>copy c:\Users\user\Downloads\AmazonRootCA1.pem .
1 個のファイルをコピーしました。
C:\Users\user\rs_serial>copy c:\Users\user\Downloads\<32bitのハッシュコード>-certificate.pem.crt .
1 個のファイルをコピーしました。
C:\Users\user\rs_serial>copy c:\Users\user\Downloads\<32bitのハッシュコード>-private.pem.key .
1 個のファイルをコピーしました。
  1. ダウンロードディレクトリよりAmazonRootCA1.pemを作業用ディレクトリにコピーします。
  2. ダウンロードディレクトリより <32bitのハッシュコード>-certificate.pem.crtを作業用ディレクトリにコピーします。
  3. ダウンロードディレクトリより <32bitのハッシュコード>-private.pem.keyを作業用ディレクトリにコピーします。

3. バッチファイルの準備

mosquitto_pub.exemosquitto_sub.exe はコマンドの引数が多いためバッチファイルを作成しておきます。

  1. pub.bat 制御メッセージ パブリッシュ用バッチファイル
    on.json 制御メッセージ ファイル(スイッチ・オン)
    off.json 制御メッセージ ファイル(スイッチ・オフ)
  2. sub.bat メッセージ サブスクライブ用バッチファイル

3-1. 制御メッセージ パブリッシュ用バッチファイル

mosquitto_pub.exeを用いるためのバッチファイルpub.batを作成します。
notepad.exepub.batを開きます。

C:\Users\user\rs_serial>notepad pub.bat

次のスクリプトをpub.batにコピーし保存して下さい。

pub.bat
@echo off
setlocal
path %path%;C:\"Program Files"\mosquitto\
set endpoint=XXXXXXXX-ats.iot.ap-northeast-1.amazonaws.com
set rootCA=AmazonRootCA1.pem
set cert=<32bitのハッシュコード>-certificate.pem.crt
set key=<32bitのハッシュコード>-private.pem.key
set topic=$aws/things/SERIAL/shadow/update
mosquitto_pub --cafile %rootCA% --cert %cert% --key %key% -h %endpoint% -p 8883 -q 1 -d -t %topic% -f %1
endlocal

ここで <32bitのハッシュコード>とは64文字の16進数です。(e.g. f308184f4d6216a23003b517d60a3ab439f6f3607fe4ebee4cec14677a3f5098)
取得した証明書のハッシュコード(ファイル名)に書き換えて下さい。
XXXXXXXX-ats.iot.ap-northeast-1.amazonaws.com は、デバイスデータエンドポイントの取得で取得したエンドポイントに書き換えて下さい。

64bit版の代わりに 32bit版を用いる場合はパス名を**C:\"Program Files"\mosquitto**からC:\"Program Files (x86)"\mosquitto**に変更して下さい。

3-1-1. 制御メッセージ ファイル

mosquitto_sub.exe の引く数 -f に与える制御(送信)メッセージを記載したファイル on.jsonoff.json を作成します。

on.json の作成

notepad.exeon.jsonを開きます。

C:\Users\user\rs_serial>notepad on.json

次のJSON文字列をon.jsonにコピーし保存して下さい。

{
"state": {
"desired": {
"switchA": "on"
}
}
}

off.json の作成

notepad.exeoff.jsonを開きます。

C:\Users\user\rs_serial>notepad off.json

次のJSON文字列をoff.jsonにコピーし保存して下さい。

{
"state": {
"desired": {
"switchA": "off"
}
}
}

3-2. メッセージ サブスクライブ用バッチファイル

mosquitto_sub.exeを用いるためのバッチファイルsub.batを作成します。
notepad.exesub.batを開きます。

C:\Users\user\rs_serial>notepad sub.bat

次のスクリプトをsub.batにコピーし保存して下さい。

sub.bat
@echo off
setlocal
path %path%;C:\"Program Files"\mosquitto\
set endpoint=XXXXXXXX-ats.iot.ap-northeast-1.amazonaws.com
set rootCA=AmazonRootCA1.pem
set cert=<32bitのハッシュコード>-certificate.pem.crt
set key=<32bitのハッシュコード>-private.pem.key
set topic=#
mosquitto_sub --cafile %rootCA% --cert %cert% --key %key% -h %endpoint% -p 8883 -t %topic% -d
endlocal

ここで <32bitのハッシュコード>とは64文字の16進数です。(e.g. f308184f4d6216a23003b517d60a3ab439f6f3607fe4ebee4cec14677a3f5098)
取得した証明書のハッシュコード(ファイル名)に書き換えて下さい。
XXXXXXXX-ats.iot.ap-northeast-1.amazonaws.com は、デバイスデータエンドポイントの取得で取得したエンドポイントに書き換えて下さい。

64bit版の代わりに 32bit版を用いる場合はパス名を**C:\"Program Files"\mosquitto**からC:\"Program Files (x86)"\mosquitto**に変更して下さい。