Script


Script 节点的作用是使用 JavaScript 将有效负载转换为另一种格式。

节点类型


Action。

输入和输出能力


该节点具有多个入口点和 1 个出口点。输入和输出可以是任何格式。你可以使用编写的 JavaScript 定义格式,其返回数据即为输出消息。


备注

不支持 Javascript ES6。

节点属性


../../_images/script.png

设置标签


名称

该节点的名称。


描述

该节点的描述。

Script 标签


JS 库文件

用于导入第三方 JS 库代码文件,同时在下方输入框內调用文件中的函数,实现自定义的功能。导入文件后,选择 启用 btn_enable,该文件将参与流的运行,再次选择 禁用 btn_disable 将禁用文件。


../../_images/script_builtin_js.png


Function Transform

用于将输入转换为所需格式的 JavaScript(支持 ES5.1)。受支持的函数为 transform,带有两个参数,分别为 msgmetadatamsg 是输入消息,而 metadata 可以是 MQTT topic,该 topic 可在脚本中使用。


你也可使用内置的 JavaScript 函数。有关可用函数的列表,参见 JavaScript 内置函数概述


../../_images/script_builtin_js.png


选择 测试 按钮,通过输入消息来测试 JavaScript,查看 JavaScript 是否能按设计意图操作。

使用限制


  • 最大入口点数:100

  • msgmetadata 需要在脚本函数中返回。

  • 不支持 Javascript ES6。

示例

输入示例


输入取决于脚本的要求。

输出示例


输出取决于脚本处理输入的方式。

脚本示例


if(!msg.Data){
  return tools.resultBuilder.build(false);
}
var dataArray = msg.Data.data;
var stream = msg.Data.stream;
var device_id = stream.camera;
var flag = true;

for (var i=0; i<dataArray.length; i++) {
  var data = dataArray[i];
  if(!data.eventName){
    flag = false;
    break;
  }

  var paramsArray = new Array();
  if(data.eventName === "Event1"){
    var mps = {};
    mps["raw_data_count"] = JSON.stringify(data.count);
    mps["alarm_data_event_name"] = data.eventName;
    mps["raw_data_imgpath"] = JSON.stringify(data.imgpath);
    mps["raw_data_start_time"] = data.startTime;
    mps["raw_data_timestamp"] = data.timestamp;
    mps["raw_stream_camera"] = stream.camera;

    var params = {};
    params["measurepoints"] = mps;
    params["time"] = new Date().getTime();
    params["device_id_no"] = device_id;
    paramsArray.push(params);
  }else{
    paramsArray = metadata.params;
  }
}

if(!flag){
  return tools.resultBuilder.build(false);
}

return tools.resultBuilder.build(true,JSON.stringify(paramsArray));

相关节点