Cloud data analysis capability of IoT platform
1. 全体的な技術構成
IoT シナリオでは、多数のセンサーがバイナリデータまたは独自プロトコル形式のデータストリームを収集しており、デバイス側には構造化 JSON に変換する能力がありません。このような場合、IoT Platform のクラウドカスタマイズデータ解析機能を利用して、Modbus、電力プロトコル、Hex データ、独自プロトコルを構造化 JSON に変換し、業務システムに連携できます。
データフローの経路
メッセージの変換
2. IoT Platform の開発
メッセージ通信トピック
Hex 変換スクリプト設定
生データ:0x035e8192fd0000000d0000001b00000a8c
データサービス形式:
image.png
スクリプト設定
スクリプト全文
/**
*デバイスのカスタムトピックデータを JSON 形式に変換します。デバイスが IoT Platform にデータをレポートする際に呼び出されます
*入力パラメーター:topic 文字列、デバイスがレポートするメッセージのトピック
*入力パラメーター:rawData バイト配列、空にすることはできません
*出力パラメーター:jsonObj JSON オブジェクト、空にすることはできません
*/
function transformPayload(topic, rawData) {
var jsonObj = {}
//Raw hex data: 0x035e8192fd0000000d0000001b00000a8c
/*
{
"heartbeat": 15,
"id": 1585549855,
"steps": 2700,
"speed": 56
}
*/
if (topic.endsWith('/user/update')) {
var uint8Array = new Uint8Array(rawData.length);
for (var i = 0; i < rawData.length; i++) {
uint8Array[i] = rawData[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var fHead = uint8Array[0]; // コマンド
if (fHead == 0x03) {
//
jsonObj['id'] = dataView.getInt32(1);
// ハートビート
jsonObj['heartbeat'] = dataView.getInt32(5);
// 速度
jsonObj['speed'] = dataView.getInt32(9);
// 総歩数
jsonObj['steps'] = dataView.getInt32(13);
}
}
return jsonObj;
}
3. デバイス開発
デバイスが Hex 生データをレポート
// メッセージトピックに _sn=default ID を付与
const topic = '/aiDerw9823s/dn308/user/update'+'?_ sn=default';
// 生データ
var payloadArray = [ 3, 94, 129, 169, 59, 0, 0, 0, 23, 0, 0, 0, 79, 0, 0, 30, 220 ];
var payload = new Buffer(payloadArray);
// トピックにデータを公開
client. publish(topic, payload);
4. 共同デバッグログ
デバイスがレポートする元の Hex データ
スクリプト変換後のログ
業務メッセージのログ
メッセージの詳細(トピックとペイロード)
IoT シナリオでは、多数のセンサーがバイナリデータまたは独自プロトコル形式のデータストリームを収集しており、デバイス側には構造化 JSON に変換する能力がありません。このような場合、IoT Platform のクラウドカスタマイズデータ解析機能を利用して、Modbus、電力プロトコル、Hex データ、独自プロトコルを構造化 JSON に変換し、業務システムに連携できます。
データフローの経路
メッセージの変換
2. IoT Platform の開発
メッセージ通信トピック
Hex 変換スクリプト設定
生データ:0x035e8192fd0000000d0000001b00000a8c
データサービス形式:
image.png
スクリプト設定
スクリプト全文
/**
*デバイスのカスタムトピックデータを JSON 形式に変換します。デバイスが IoT Platform にデータをレポートする際に呼び出されます
*入力パラメーター:topic 文字列、デバイスがレポートするメッセージのトピック
*入力パラメーター:rawData バイト配列、空にすることはできません
*出力パラメーター:jsonObj JSON オブジェクト、空にすることはできません
*/
function transformPayload(topic, rawData) {
var jsonObj = {}
//Raw hex data: 0x035e8192fd0000000d0000001b00000a8c
/*
{
"heartbeat": 15,
"id": 1585549855,
"steps": 2700,
"speed": 56
}
*/
if (topic.endsWith('/user/update')) {
var uint8Array = new Uint8Array(rawData.length);
for (var i = 0; i < rawData.length; i++) {
uint8Array[i] = rawData[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var fHead = uint8Array[0]; // コマンド
if (fHead == 0x03) {
//
jsonObj['id'] = dataView.getInt32(1);
// ハートビート
jsonObj['heartbeat'] = dataView.getInt32(5);
// 速度
jsonObj['speed'] = dataView.getInt32(9);
// 総歩数
jsonObj['steps'] = dataView.getInt32(13);
}
}
return jsonObj;
}
3. デバイス開発
デバイスが Hex 生データをレポート
// メッセージトピックに _sn=default ID を付与
const topic = '/aiDerw9823s/dn308/user/update'+'?_ sn=default';
// 生データ
var payloadArray = [ 3, 94, 129, 169, 59, 0, 0, 0, 23, 0, 0, 0, 79, 0, 0, 30, 220 ];
var payload = new Buffer(payloadArray);
// トピックにデータを公開
client. publish(topic, payload);
4. 共同デバッグログ
デバイスがレポートする元の Hex データ
スクリプト変換後のログ
業務メッセージのログ
メッセージの詳細(トピックとペイロード)
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
