【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 開発のお役に立てれば幸いです。
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
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
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
