NodeRed
node-red의 Flow안에서 node간에 함수를 공유 하여 사용법
아이티제어1998
2022. 2. 23. 05:44
//node Context
let d = context.get("myData");
context.set("myData", {color: "red"});
// Flow Context
let s = flow.get("sensor");
flow.set("sensor",1234);
// global context
let a = global.get("active");
global.set("active",false);
// Get 'MyObject' from Flow Context
var myObject = flow.get("myObject");
myObject.color= "red"; //modify it
flow.set("myObject", myObject); // save it back to context
//get myObject from Flow context
var myObject = flow.get("myObject");
//Clone it to allow local changes
msg.payload = RED.util.cloneMessage(myObject);
//modify and send it
msg.payload.color="red";
return msg;
예제) Func1 라는 오브젝트를 Flow안에서 Node간에 공유하여 사용해보자.
아래코드는 잘 동작한다.
// Code added here will be run once
// whenever the node is started.
Func1 = {
GrantAccess : function (haystack, arr) {
return arr.some(function (v) {
return haystack.indexOf(v) >= 0;
})},
pad : function (num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
},
DaysBetween : function (date1, date2) {
var one_day=1000*60*60*24;
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
var difference_ms = date2_ms - date1_ms;
difference_ms = Math.round(difference_ms/1000,3);
var mseconds = difference_ms % 1000;
var seconds = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var minutes = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var hours = Math.floor(difference_ms % 24);
var days = Math.floor(difference_ms/24);
return Func.pad(minutes,2) + ':' + Func.pad(seconds,2) + '.' + Func.pad(mseconds,3);
},
timeConverter: function( e ) {
var date = new Date(e*1.000);
var year = date.getFullYear();
var month = ("0"+(date.getMonth()+1)).substr(-2);
var day = ("0"+date.getDate()).substr(-2);
var hour = ("0"+date.getHours()).substr(-2);
var minutes = ("0"+date.getMinutes()).substr(-2);
var seconds = ("0"+date.getSeconds()).substr(-2);
return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;
}
}
flow.set('Func1', Func1); //flow 내 공유 선언
//node.log("로딩완료 env.get('NR_NODE_NAME')"+ env.get('NR_NODE_NAME') );
node.status({fill:"green",shape:"dot",text:"Func1 Functions Loaded"});