Script¶
The Script node converts the payload into another format using JavaScript.
Node Type¶
Action.
Input and Output Ability¶
This node has multiple entry points and 1 exit point. The input and output can be any format. You can define the format using the JavaScript you write, and the return data is the output message.
Note
Does not support Javascript ES6.
Node Properties¶
Settings Tab¶
Name
The name for this node.
Description
The description for this node.
Script Tab¶
The JavaScript (ES5.1 supported) for converting the input into the desired format. The supported function is transform
with two parameters, msg
and metadata
. The msg
is the input message, and the metadata
can be the MQTT topic for example, which can be used in the script.
Built-in JavaScript functions are also available. For the list of available functions, see Built-in JS Functions Overview.
Click the Test button to test your JavaScript by entering the input message to see if your JavaScript works as designed.
Limitations¶
Maximum node entry points: 100
msg
andmetadata
needs to be returned in the script function.Does not support Javascript ES6.
Samples¶
Input Sample¶
The input is dependent on what the script requires.
Output Sample¶
The output is subject to how the script processes the input.
Script Sample¶
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));