NodeRED - 全局变量的使用笔记

Posted by Dapenson on April 20, 2020

NodeRED - 全局变量的使用笔记

global

  • global.get(..) :获取全局范围的上下文属性
  • global.set(..) :设置全局范围的上下文属性
  • global.keys(..) :返回所有全局作用域上下文属性键的列表

语法

// 设置全局变量的值
global.set("variable",true); 

// 将全局变量取出并赋值给myvariable
var my_variable = global.get("variable");  

//如果上下文对象中不存在variable,则使我们的局部变量variable为零
var my_variable = global.get('variable') || false;

使用示例

插座状态值反馈
//查找当前插座状态值
var outlet_status_current = global.get('outlet_status') || false;

//定义目标插座状态值
var outlet_status_target = msg.payload.outlet;

//定义新对象
var newMsg = {};

if(outlet_status_target != outlet_status_current)
{
    newMsg= {payload :outlet_status_target,topic:"智能插座" };
    //设置当前状态值到全局变量
    global.set("outlet_status",outlet_status_target);
    return newMsg;
}
else{
    return null;
}



判断当前开关并发送指令
//查找当前插座状态值
var outlet_status_current = global.get('outlet_status') || false;
//定义目标插座状态值
var outlet_status_target = msg.payload;
// 定义新对象
var msg1= {};

if(outlet_status_target != outlet_status_current)
{
    if(msg.payload === true)
{    msg1 = {payload:'{"outlet":true}'};}
else
{    msg1 =  {payload:'{"outlet":false}'};}
global.set("outlet_status",outlet_status_target)
return msg1;
}
else{
    return null;
}