Topik ini menyediakan template dan contoh skrip JavaScript yang dapat digunakan untuk mengurai data yang dikirim ke topik kustom.
Template skrip
var SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update' // Tentukan topik kustom berikut: /user/update.
var SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' // Tentukan topik kustom berikut: /user/update/error.
/**
* Konversikan data yang dikirim oleh perangkat ke topik kustom menjadi data JSON ketika perangkat mengirimkan data tersebut ke IoT Platform.
* topic: parameter input yang menentukan topik ke mana perangkat mengirim pesan. Nilainya adalah string.
* rawData: parameter input. Nilainya adalah array byte yang tidak boleh kosong.
* jsonObj: parameter output. Nilainya adalah objek JSON yang tidak boleh kosong.
*/
function transformPayload(topic, rawData) {
var jsonObj = {};
return jsonObj;
}Contoh skrip
Catatan Contoh skrip berikut hanya digunakan untuk mengurai pesan yang dikirim ke topik kustom. Jika Anda menetapkan parameter Data Type produk ke Custom, Anda juga harus menulis skrip untuk mengurai pesan Thing Specification Language (TSL). Untuk informasi tentang cara menulis skrip untuk mengurai pesan TSL, lihat Kirim Skrip untuk Mengurai Data TSL.
Untuk informasi lebih lanjut tentang custom data formats, lihat Buat Produk.
var SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update' // Tentukan topik kustom berikut: /user/update.
var SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' // Tentukan topik kustom berikut: /user/update/error.
/*
Contoh data:
Gunakan topik kustom berikut untuk mengirimkan data:
/user/update.
Input:
topic: /${productKey}/${deviceName}/user/update
bytes: 0x000000000100320100000000
Output:
{
"prop_float": 0,
"prop_int16": 50,
"prop_bool": 1,
"topic": "/${productKey}/${deviceName}/user/update"
}
*/
function transformPayload(topic, bytes) {
var uint8Array = new Uint8Array(bytes.length);
for (var i = 0; i < bytes.length; i++) {
uint8Array[i] = bytes[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var jsonMap = {};
if(topic.includes(SELF_DEFINE_TOPIC_ERROR_FLAG)) {
jsonMap['topic'] = topic;
jsonMap['errorCode'] = dataView.getInt8(0)
} else if (topic.includes(SELF_DEFINE_TOPIC_UPDATE_FLAG)) {
jsonMap['topic'] = topic;
jsonMap['prop_int16'] = dataView.getInt16(5);
jsonMap['prop_bool'] = uint8Array[7];
jsonMap['prop_float'] = dataView.getFloat32(8);
}
return jsonMap;
}