【DSW Gallery】How to submit ElasticBatch tasks on DLC

1. 背景
IoT の開発において、デバイスのデバッグが難しい場合があります。そのような場合は、ネットワークパケットキャプチャツールの Wireshark を使用して、デバイスの動作分析や問題の特定を行うことができます。ここでは、簡単な事例を使って、Wireshark でデバイスと Alibaba Cloud IoT Platform 間の通信を分析するプロセスを説明します。

2. 準備
2.1:デバイスの作成
Alibaba Cloud IoT Platform でプロダクトを作成し、デバイスを登録して、三元組(productKey、deviceName、deviceSecret)を取得します。

2.2:デバイスシミュレーションプログラム
Node.js を使用してデバイスシミュレーションプログラムを作成し、接続の確立、サブスクライブ、パブリッシュ、切断を実行します。

/**
* node aliyun-iot-device.js
*/
const mqtt = require('aliyun-iot-mqtt');
//デバイスの認証三元組 + リージョン
const options = {
"productKey": "Device PK",
"deviceName": "Device DN",
"deviceSecret": "Device Secret",
"regionId": "cn-shanghai"
};

//1. 接続の確立
const client = mqtt.getAliyunIotMqttClient(options);
//2. トピックのサブスクライブ
setTimeout(function() {
client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`)
}, 3 * 1000);
//3. メッセージのパブリッシュ
setTimeout(function() {
client.publish(`/${options.productKey}/${options.deviceName}/user/update`, getPostData(),{qos:1});
}, 5 * 1000);
//4. 接続の切断
setTimeout(function() {
client.end();
}, 8 * 1000);


function getPostData() {
const payloadJson = {
temperature: Math. floor((Math. random() * 20) + 10),
humidity: Math. floor((Math. random() * 20) + 10)
}
console.log("payloadJson " + JSON.stringify(payloadJson))
return JSON. stringify(payloadJson);
}

2.3:Wireshark を使用したネットワークパケットキャプチャ
IoT Platform は MQTT プロトコルを使用して通信するため、以下のルールを設定するだけでパケットをキャプチャできます。
tcp and port 1883


2.4:シミュレーションプログラムの起動


3. ネットワークパケットキャプチャの分析
シミュレーションスクリプトの実行後、Wireshark に MQTT の完全なネットワークインタラクションプロセスがキャプチャされます。
便宜上、デバイスの IP を device と表記します。今回の Alibaba Cloud IoT に接続した IP は変更されません。


3.1:TCP の 3 ウェイハンドシェイク

上記のスクリーンショットの赤枠は TCP の 3 ウェイハンドシェイクの動作です。デバイス側から開始され、デバイスが使用したポートは 56150 です。

3.2:MQTT の CONNECT 動作
下図は MQTT の CONNECT の動作を示しています。
CONNECT のレコードをクリックすると、下部に詳細なメッセージが表示されます。その中には、client ID、ユーザー名、パスワードが含まれており、これらはこの CONNECT でデバイスの正当性を認証するために使用される認証情報です。詳細については、こちらをクリックしてください。

認証が完了すると、IoT Platform は CONNECT の応答として CONNACK を返します。


3.3:MQTT の SUBSCRIBE 動作
下図は、デバイスが IoT Platform に対してトピックをサブスクライブするプロセスを示しています。ここでは、デバイスがアクティブにトピックをサブスクライブしています。赤枠を参照してください。

下図は、デバイスのサブスクライブに対する IoT Platform の応答動作を示しています。



3.3:MQTT の PUBLISH 動作
下図は、デバイスが IoT Platform に対して QoS=1 のメッセージを PUBLISH している様子を示しています。メッセージ情報から、メッセージに対応するトピックとペイロードを確認できます。


QoS=1 のメッセージであるため、IoT Platform はデバイスに対して PUBACK を返します。

このメッセージログは、IoT コンソールの Log Service でも確認できます。



3.4:MQTT の DISCONNECT 動作
下図は、デバイスが DISCONNECT コマンドを発行して MQTT の接続チャネルを DISCONNECT する様子を示しています。


3.5:TCP の 4 ウェイハンドシェイク

IoT コンソールの Log Service では、デバイスがオフラインになる際の完全なログも確認できます。



4. 結論
これで、Wireshark のパケットキャプチャツールを使用して、デバイスと Alibaba Cloud IoT Platform 間のネットワーク通信を分析する基本的な方法を理解できました。IoT 開発のお役に立てれば幸いです。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.