全部產品
Search
文件中心

IoT Platform:JavaScript指令碼樣本

更新時間:Jun 30, 2024

本文提供JavaScript語言的自訂Topic訊息解析指令碼模板和樣本。

指令碼模板

var SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update'  //自訂Topic:/user/update。
var SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' //自訂Topic:/user/update/error。
/**
 * 將裝置自訂Topic訊息資料轉換為JSON格式資料,裝置上報資料到物聯網平台時調用。
 * 入參:topic,字串,裝置上報訊息的Topic。 
 * 入參:rawData,byte[]數組,不可為空。
 * 出參:jsonObj,對象,不可為空。
 */
function transformPayload(topic, rawData) {
    var jsonObj = {};
    return jsonObj;
}

樣本指令碼

說明 以下樣本指令碼僅用於解析自訂Topic訊息。如果產品的資料格式透傳/自訂,還需編寫物模型訊息解析指令碼。物模型訊息解析指令碼編寫指導,請參見提交物模型訊息解析指令碼

有關透傳/自訂說明,請參見建立產品

var SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update'  //自訂Topic:/user/update。
var SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' //自訂Topic:/user/update/error。
/*
  樣本資料:
  自訂Topic:
     /user/update,上報資料。
  輸入參數:
     topic: /${productKey}/${deviceName}/user/update
     bytes: 0x000000000100320100000000
  輸出參數:
    {
        "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;
}