動作確認

0. はじめに

動作の確認は、次の6つのステップがあります。

  1. OpenBlocksにてプロセスの確認を行います。
  2. OpenBlocksにてログの確認を行います。
  3. Device Shadowの状態をモニターするためClassic Shadowタブを開きます。
  4. 送受されるメッセージをモニターするためメッセージ サブスクライブ用バッチファイルを起動します。
  5. 仮想シリアル・デバイス(Tera Term)を操作してDevice Shadowへメッセージが送られることを確認します。
  6. 制御メッセージ パブリッシュ用バッチファイルを用いて制御メッセージをDevice Shadowへ送り、 仮想シリアル・デバイス(Tera Term)が制御(所定のメッセージが出力)されていることを確認します。
    6-1. スイッチ OFF
    6-2. スイッチ ON

1. プロセスの確認

ダッシュボードタブのプロセス状況 (IoTデータ) ペインにてPD RepeaterPD Handler RS-SERIALのプロセスを確認します。

dashboard

  1. PD Repeater稼働中であることを確認します。
  2. PD Handler RS-SERIAL稼働中であることを確認します。

停止中である場合は、送受信設定に誤りが無いか確認します。

起動しないよくある原因として次の事項が挙げられます。

  • PD Repeater
    • 送信先ホストの設定が誤っている
    • ルート証明書、デバイス証明書、プライベートキーのパス名が誤っている。
  • PD Handler RS-SERIAL
    • Luaスクリプト ファイルのデバイス番号、デバイスファイル名の指定が誤っている。

2. ログの確認

IoTデータ⇒ログタブにて、PD Handler RS-SERIALPD Repeaterのログ出力を確認します。
上の黒いタブ列にIoTデータタブが表示されていない場合は、サービスタブにあるIoTデータのリンクをクリックして下さい。

log

2-1. PD Handler RS-SERIAL のログ

PD Handler RS-SERIALのログ出力を確認します。 ログ選択プルダウンメニューにてpd-handler-rs-serial.logを選択します。

check_log1

正常に動作している場合、デバイスからデータを受け次の様なメッセージがログに出力されます。

Oct 17 08:09:22 obsiot pd-handler-rs-serial[1200842]: [INFO] post to PD-Repeater. len = 47 message = @UPDATE {"state":{"reported":{"switchA":"on"}}}

2-2. PD Repeater のログ

PD Repeaterのログ出力を確認します。
ログ選択プルダウンメニューにてpd-repeater.logを選択します。

check_log1

正常に動作している場合、次の様に AWS IoT Core へ送信したデータ数をログに出力します。

Oct 17 08:08:46 obsiot pd_repeater[1200837]: send to awsiot(0), 0 data
Oct 17 08:09:47 obsiot pd_repeater[1200837]: send to awsiot(0), 1 data

また、AWS IoT Core よりメッセージを受信すると次の様にログに出力します。

Oct 17 08:12:03 obsiot pd_repeater[1200837]: awsiot_msgarrvd(): client_id=test_device topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=643
Oct 17 08:12:03 obsiot pd_repeater[1200837]: awsiot_msgarrvd(): client_id=test_device topic=$aws/things/SERIAL/shadow/update/delta 0 payloadlen=111
Oct 17 08:12:03 obsiot pd_repeater[1200837]: awsiot_msgarrvd(): client_id=test_device topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=135

AWS IoT Core への接続に失敗している場合は、次の様なメッセージがログに出力されます。

Oct 17 09:13:06 obsiot pd_repeater[1203464]: awsiot_main(): failed to connect to ssl://xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com:8883 for ff7e1601-2c75-4b06-bcc9-24c28a766e8f: -1

接続に失敗する原因としては、送受信設定に誤りがある場合の他に ルート証明書、デバイス証明書、プライベートキーの何れかが正しくない場合やネットワークの設定に問題がる場合もあります。

なお、ログ出力メッセージについての詳細は多義に渡るため公開されておりません。
ご不明な点がございましたらサポートに必要となるログ情報を取得 の上サポート窓口にお問い合わせ下さい。

3. Classic Shadow タブを開く

AWS IoT Device Shadowの状態をモニターするため、AWS IoT コンソールAWS IoT > 管理>モノ > SERIAL > Classic Shadowタブを開きます。

  1. AWS IoT コンソールにサインインし、 AWS IoT タブへアクセス します。
  2. 画面左メニューバーのすべてのデバイス⇒モノをクリックします。
    AWS IoT > 管理 > モノタブが表示されます。

IoT Thing List

AWS IoT > 管理 > モノタブにてSERIALを選択します。
AWS IoT > 管理 > モノ > SERIALタブが表示されます。

IoT Thing SERIAL

AWS IoT > 管理 > モノ > SERIALタブにてDevice Shadowタブを選択します。
Device Shadowペインが表示されます。

IoT Thing SERIAL

デバイス(SERIAL)が AWS IoT Core に接続されDevice Shadowメッセージを受けとるまでClassic Shadowは存在しません。
シリアル・デバイス又はApplication Clientを操作しDevice Shadowメッセージが送信された後に、 Device ShadowペインのボタンをクリックするとClassic Shadowが表示されます。

IoT Thing SERIAL

AWS IoT > 管理 > モノ > SERIALタブのDevice ShadowペインにてClassic Shadowを選択します。
AWS IoT > 管理>モノ > SERIAL > Classic Shadowタブが表示されます。

Classic Shadow initial

4. メッセージ サブスクライブ用バッチファイルの起動

送受されるメッセージをモニターするため Windows PC にてバッチファイルの準備で作成したメッセージ サブスクライブ用バッチファイルsub.batを起動します。

Microsoft Windows [Version 10.0.22000.1098]
(c) Microsoft Corporation. All rights reserved.
c:\Users\user>cd rs_serial
C:\Users\user\rs_serial>sub.bat
Client null sending CONNECT
Client null received CONNACK (0)
Client null sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 0, Options: 0x00)
Client null received SUBACK
Subscribed (mid: 1): 0
  1. Windows PC にてコマンド プロンプト(cmd.exe)を開きます。
  2. 作業用ディレクトリの作成した作業用ディレクトリC:\Users\user\rs_serialに移動します。
  3. sub.batを起動します。

5. シリアル・デバイスを操作し動作を確認

シリアル・デバイスの準備で起動したTera Termを操作し動作を確認します。

5-1. Tera Term の操作

シリアル・デバイスの準備で起動したTera Termを操作し、仮想デバイスの switchAon にします。

Tera Term receive

Tera TermのコンソールにswitchAOnと入力します。

5-2. PD Handler RS-SERIAL のログの確認

PD Handler RS-SERIAL のログを確認します。

Oct 19 08:51:39 obsiot pd-handler-rs-serial[1548851]: [INFO] post to PD-Repeater. len = 47 message = @UPDATE {"state":{"reported":{"switchA":"on"}}}

switchAonとなったことを示すreportedメッセージがPD Repeaterへ送られたことを示すログが出力されます。
ここで、@UPDATE {}Device ShadowをサポートするためにPD Repeater用意された構文です。 詳しくはAWS IoTの送信メッセージ構文をご覧下さい。

5-3. PD Repeater のログの確認

PD Repeater のログを確認します。

Oct 19 08:52:05 obsiot pd_repeater[1548846]: send to awsiot(0), 1 data
Oct 19 08:52:05 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=136
Oct 19 08:52:05 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=199

次の確認をします。

  1. メッセージ(PD Handler RS-SERIAL の reported)の送信を示すsend to awsiot(0), 1 data
  2. acceptedメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/accepted
  3. documentsメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/documents

ここでdocuments, acceptedの受信順序は不定です。

5-4. Device Shadow ドキュメント(reported)の確認

[Classic Shadow タブ]にてDevice Shadow の状態を確認します。

Classic Shadow on

"reported": { "switchA": "on" } であることを確認します。

5-5. メッセージ サブスクライブ出力の確認

メッセージ サブスクライブの出力を確認します。

Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update', ... (39 bytes))
{"state":{"reported":{"switchA":"on"}}}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/accepted', ... (136 bytes))
{"state":{"reported":{"switchA":"on"}},"metadata":{"reported":{"switchA":{"timestamp":1666137125}}},"version":43,"timestamp":1666137125}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/documents', ... (199 bytes))
{"previous":{"state":{},"metadata":{},"version":42},"current":{"state":{"reported":{"switchA":"on"}},"metadata":{"reported":{"switchA":{"timestamp":1666137125}}},"version":43},"timestamp":1666137125}

reported, accepted, documents の 3つのメッセージが確認できます。
ここで documents, accepted の受信順序は不定です。

6. Application Client を操作し動作を確認

6-1. スイッチ OFF

6-1-1. メッセージ パブリッシュによる スイッチ OFF

Windows PC にてバッチファイルの準備で作成した制御メッセージ パブリッシュ用バッチファイルpub.batを用いてシリアル・デバイスの仮想デバイスswitchAoffする制御メッセージをDevice Shadowに送ります。

Microsoft Windows [Version 10.0.22000.1098]
(c) Microsoft Corporation. All rights reserved.
c:\Users\user>cd rs_serial
C:\Users\user\rs_serial>pub.bat off.json
Client null sending CONNECT
Client null received CONNACK (0)
Client null sending PUBLISH (d0, q1, r0, m1, '$aws/things/SERIAL/shadow/update', ... (72 bytes))
Client null received PUBACK (Mid: 1, RC:0)
Client null sending DISCONNECT
  1. Windows PC にてコマンド プロンプト(cmd.exe)を開きます。
  2. 作業用ディレクトリの作成した作業用ディレクトリC:\Users\user\rs_serialに移動します。
  3. pub.bat off.jsonを実行します。

6-1-2. Device Shadow ドキュメント(desired)の確認(desired)

[Classic Shadow タブ]にてDevice Shadow の状態を確認します。

Classic Shadow on

"desired": { "switchA": "off" }"reported": { "switchA": "on" }であることを確認します。
"reported": { "switchA": "on" } はデバイスからの応答(reported)を受け取ると "reported": { "switchA": "off" }へ遷移します。

6-1-3. Tera Term コンソール出力の確認

Tera Termのコンソール出力を確認します。

Tera Term receive

仮想デバイスswitchAoffされたことを示すswitchA offが出力されます。

6-1-4. Device Shadow ドキュメント(reported)の確認

[Classic Shadow タブ]にてDevice Shadow の状態を確認します。

Classic Shadow on

"reported": { "switchA": "on" }"reported": { "switchA": "off" }へ遷移している事を確認します。

6-1-5. PD Repeater のログの確認

PD Repeater のログを確認します。

Oct 19 08:52:39 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/delta 0 payloadlen=111
Oct 19 08:52:39 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=348
Oct 19 08:52:39 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=135
Oct 19 08:53:06 obsiot pd_repeater[1548846]: send to awsiot(0), 1 data
Oct 19 08:53:06 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=424
Oct 19 08:53:06 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=137

次の確認をします。

  1. deltaメッセージの受信を示す topic=$aws/things/SERIAL/shadow/update/delta
  2. documentsメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/documents
  3. acceptedメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/accepted
  4. メッセージ(PD Handler RS-SERIAL のreported)の送信を示す send to awsiot(0), 1 data
  5. documentsメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/documents
  6. acceptedメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/accepted

ここで documents, accepted の受信順序は不定です。

6-1-6. PD Handler RS-SERIAL のログの確認

PD Handler RS-SERIAL のログを確認します。

Oct 19 08:52:40 obsiot pd-handler-rs-serial[1548851]: [INFO] post to PD-Repeater. len = 48 message = @UPDATE {"state":{"reported":{"switchA":"off"}}}

switchAoffしたことを示すreportedメッセージがPD Repeaterへ送られたことを示すログが出力されます。
ここで、@UPDATE {}Device ShadowをサポートするためにPD Repeater用意された構文です。 詳しくはAWS IoTの送信メッセージ構文をご覧下さい。

6-1-7. メッセージ サブスクライブ出力の確認

メッセージ サブスクライブの出力を確認します。

Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update', ... (72 bytes))
{
"state": {
"desired": {
"switchA": "off"
}
}
}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/delta', ... (111 bytes))
{"version":44,"timestamp":1666137159,"state":{"switchA":"off"},"metadata":{"switchA":{"timestamp":1666137159}}}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/accepted', ... (135 bytes))
{"state":{"desired":{"switchA":"off"}},"metadata":{"desired":{"switchA":{"timestamp":1666137159}}},"version":44,"timestamp":1666137159}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/documents', ... (348 bytes))
{"previous":{"state":{"reported":{"switchA":"on"}},"metadata":{"reported":{"switchA":{"timestamp":1666137125}}},"version":43},"current":{"state":{"desired":{"switchA":"off"},"reported":{"switchA":"on"}},"metadata":{"desired":{"switchA":{"timestamp":1666137159}},"reported":{"switchA":{"timestamp":1666137125}}},"version":44},"timestamp":1666137159}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update', ... (40 bytes))
{"state":{"reported":{"switchA":"off"}}}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/accepted', ... (137 bytes))
{"state":{"reported":{"switchA":"off"}},"metadata":{"reported":{"switchA":{"timestamp":1666137186}}},"version":45,"timestamp":1666137186}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/documents', ... (424 bytes))
{"previous":{"state":{"desired":{"switchA":"off"},"reported":{"switchA":"on"}},"metadata":{"desired":{"switchA":{"timestamp":1666137159}},"reported":{"switchA":{"timestamp":1666137125}}},"version":44},"current":{"state":{"desired":{"switchA":"off"},"reported":{"switchA":"off"}},"metadata":{"desired":{"switchA":{"timestamp":1666137159}},"reported":{"switchA":{"timestamp":1666137186}}},"version":45},"timestamp":1666137186}

次のメッセージが確認することができます。

  • Application Clientからのdesiredメッセージとその応答delta, accepted, documents
  • deltaに対するデバイスのreportedとその応答accepted, documents**

ここでdocuments, acceptedの受信順序は不定です。

6-2. スイッチ ON

6-2-1. メッセージ パブリッシュによる スイッチ ON

Windows PC にてバッチファイルの準備で作成した制御メッセージ パブリッシュ用バッチファイルpub.batを用いてシリアル・デバイスの仮想デバイスswitchAonする制御メッセージをDevice Shadowに送ります。

C:\Users\user\rs_serial>pub.bat on.json
Client null sending CONNECT
Client null received CONNACK (0)
Client null sending PUBLISH (d0, q1, r0, m1, '$aws/things/SERIAL/shadow/update', ... (71 bytes))
Client null received PUBACK (Mid: 1, RC:0)
Client null sending DISCONNECT
  1. 6-1-1項で開いたコマンド プロンプト(cmd.exe)にフォーカスします。
  2. pub.bat off.jsonを実行します。

6-2-2. Device Shadow ドキュメント(desired)の確認(desired)

[Classic Shadow タブ]にてDevice Shadow の状態を確認します。

Classic Shadow on

"desired": { "switchA": "on" }"reported": { "switchA": "off" }であることを確認します。
"reported": { "switchA": "off" } はデバイスからの応答(reported)を受け取ると "reported": { "switchA": "on" }へ遷移します。

6-2-3. Tera Term コンソール出力の確認

Tera Termのコンソール出力を確認します。

Tera Term receive

仮想デバイスswitchAonされたことを示すswitchA onが出力されます。

6-2-4. Device Shadow ドキュメント(reported)の確認

[Classic Shadow タブ]にてDevice Shadow の状態を確認します。

Classic Shadow on

"reported": { "switchA": "off" }"reported": { "switchA": "on" }へ遷移している事を確認します。

6-2-5. PD Repeater のログの確認

PD Repeater のログを確認します。

Oct 19 08:54:22 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/delta 0 payloadlen=110
Oct 19 08:54:22 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=134
Oct 19 08:54:22 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=424
Oct 19 08:55:08 obsiot pd_repeater[1548846]: send to awsiot(0), 1 data
Oct 19 08:55:08 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/accepted 0 payloadlen=136
Oct 19 08:55:08 obsiot pd_repeater[1548846]: awsiot_msgarrvd(): client_id=3e235a7d-81d2-4529-872e-6eb84a49931f topic=$aws/things/SERIAL/shadow/update/documents 0 payloadlen=422

次の確認をします。

  1. deltaメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/delta
  2. documentsメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/documents
  3. acceptedメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/accepted
  4. メッセージ(PD Handler RS-SERIAL のreported)の送信を示す send to awsiot(0), 1 data
  5. documentsメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/documents
  6. acceptedメッセージの受信を示すtopic=$aws/things/SERIAL/shadow/update/accepted

ここでdocuments, acceptedの受信順序は不定です。

6-2-6. PD Handler RS-SERIAL のログの確認

PD Handler RS-SERIAL のログを確認します。

Oct 19 08:54:23 obsiot pd-handler-rs-serial[1548851]: [INFO] post to PD-Repeater. len = 47 message = @UPDATE {"state":{"reported":{"switchA":"on"}}}

switchAonしたことを示すreportedメッセージがPD Repeaterへ送られたことを示すログが出力されます。
ここで、@UPDATE {}Device ShadowをサポートするためにPD Repeater用意された構文です。 詳しくはAWS IoTの送信メッセージ構文をご覧下さい。

6-2-7. メッセージ サブスクライブ出力の確認

メッセージ サブスクライブの出力を確認します。

Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update', ... (71 bytes))
{
"state": {
"desired": {
"switchA": "on"
}
}
}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/delta', ... (110 bytes))
{"version":46,"timestamp":1666137262,"state":{"switchA":"on"},"metadata":{"switchA":{"timestamp":1666137262}}}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/accepted', ... (134 bytes))
{"state":{"desired":{"switchA":"on"}},"metadata":{"desired":{"switchA":{"timestamp":1666137262}}},"version":46,"timestamp":1666137262}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/documents', ... (424 bytes))
{"previous":{"state":{"desired":{"switchA":"off"},"reported":{"switchA":"off"}},"metadata":{"desired":{"switchA":{"timestamp":1666137159}},"reported":{"switchA":{"timestamp":1666137186}}},"version":45},"current":{"state":{"desired":{"switchA":"on"},"reported":{"switchA":"off"}},"metadata":{"desired":{"switchA":{"timestamp":1666137262}},"reported":{"switchA":{"timestamp":1666137186}}},"version":46},"timestamp":1666137262}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update', ... (39 bytes))
{"state":{"reported":{"switchA":"on"}}}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/accepted', ... (136 bytes))
{"state":{"reported":{"switchA":"on"}},"metadata":{"reported":{"switchA":{"timestamp":1666137308}}},"version":47,"timestamp":1666137308}
Client null received PUBLISH (d0, q0, r0, m0, '$aws/things/SERIAL/shadow/update/documents', ... (422 bytes))
{"previous":{"state":{"desired":{"switchA":"on"},"reported":{"switchA":"off"}},"metadata":{"desired":{"switchA":{"timestamp":1666137262}},"reported":{"switchA":{"timestamp":1666137186}}},"version":46},"current":{"state":{"desired":{"switchA":"on"},"reported":{"switchA":"on"}},"metadata":{"desired":{"switchA":{"timestamp":1666137262}},"reported":{"switchA":{"timestamp":1666137308}}},"version":47},"timestamp":1666137308}

次のメッセージが確認することができます。

  • Application Clientからのdesiredメッセージとその応答delta, accepted, documents
  • deltaに対するデバイスのreportedとその応答accepted, documents

ここで documents, accepted の受信順序は不定です。