Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
节点红色JavaScript布尔切换_Javascript_Boolean_Toggle_Node Red - Fatal编程技术网

节点红色JavaScript布尔切换

节点红色JavaScript布尔切换,javascript,boolean,toggle,node-red,Javascript,Boolean,Toggle,Node Red,我有一个声音传感器,它向node red发送一个mqtt消息,node red向模块发送一个新的mqtt消息,以便通电或关灯。电源或关灯的红外代码相同。 我的目标是知道它什么时候开机,什么时候关机。所以我尝试使用一个简单的布尔代码,但它不起作用,因为它不保存以前的状态 我找到了不同的解决方案,但这些家伙将新状态保存在“cookie”上,问题是,在Node Red中,我们找不到这种东西。 我无法安装节点,因为我使用的是云托管节点-Red() 我测试了许多不同的代码,我选择了这一个,因为它很容易理解

我有一个声音传感器,它向node red发送一个mqtt消息,node red向模块发送一个新的mqtt消息,以便通电或关灯。电源或关灯的红外代码相同。 我的目标是知道它什么时候开机,什么时候关机。所以我尝试使用一个简单的布尔代码,但它不起作用,因为它不保存以前的状态

我找到了不同的解决方案,但这些家伙将新状态保存在“cookie”上,问题是,在Node Red中,我们找不到这种东西。 我无法安装节点,因为我使用的是云托管节点-Red()

我测试了许多不同的代码,我选择了这一个,因为它很容易理解我试图做什么:

var值=真;
如果(msg.payload==“传感器检测”){
如果(值===true){
价值
msg.payload=“关”;
}否则{
价值
msg.payload=“on”;
}
}

返回味精您需要使用上下文对象来存储函数节点执行之间的状态:

context.value = context.value || true;

if (msg.payload === "sensor detection"){
    if (context.value === true){
        !context.value;
        msg.payload = "off";
    }else{
        !context.value;
        msg.payload = "on";
    }
}
return msg;

您需要使用上下文对象来存储函数节点执行之间的状态:

context.value = context.value || true;

if (msg.payload === "sensor detection"){
    if (context.value === true){
        !context.value;
        msg.payload = "off";
    }else{
        !context.value;
        msg.payload = "on";
    }
}
return msg;
这是我的最终代码:

//我将“传感器检测”更改为“输入”
如果(msg.payload==“输入”){
if(context.global.state===false){
msg.payload=true;
}否则{
msg.payload=false;
}
context.global.state=msg.payload;
}
返回味精这是我的最终代码:

//我将“传感器检测”更改为“输入”
如果(msg.payload==“输入”){
if(context.global.state===false){
msg.payload=true;
}否则{
msg.payload=false;
}
context.global.state=msg.payload;
}

返回味精我搜索了很长时间! 谢谢你

以下是我的贡献,使用多个切换功能:

/* 
To use more toggle functions we give them
a unique name here
*/ 
var fname = "toggle1";

if(msg.payload === "input"){

if(context.get(fname) === false){
  msg.payload = true;  
}else{
  msg.payload = false;
}
context.set(fname, msg.payload);
}
return msg;

我找了很久了! 谢谢你

以下是我的贡献,使用多个切换功能:

/* 
To use more toggle functions we give them
a unique name here
*/ 
var fname = "toggle1";

if(msg.payload === "input"){

if(context.get(fname) === false){
  msg.payload = true;  
}else{
  msg.payload = false;
}
context.set(fname, msg.payload);
}
return msg;

基于每个切换函数的ID,可能是更好的方法。这使得它易于使用,每个开关不需要设置。每个切换都有自己的状态,由唯一id存储

// Toggle Function (unique to nodes id)
if(context.get(node.id) === true){
  msg.payload = false;  
}else{
  msg.payload = true;
}
context.set(node.id, msg.payload);
return msg;

节点红色代码:
[{“id”:“2f72e700.98a7aa”,“type”:“function”,“z”:“56c38643.490368”,“name”:“Toogle”,“func”:”//Toggle function(对节点id是唯一的)\nif(context.get(node.id)==true){\n msg.payload=false;\n}else{\n msg.payload=true;\n}\ncontext set(node.id,msg.payload);\nreturn msg;“,”输出“:“1”,“noerr”:0,“initialize”:“finalize”:“”,“x”:210,“y”:340,“导线”:[[“f05ff5d3.904228”]}]

基于每个切换函数的ID,这可能是一种更好的方法。这使得它易于使用,每个开关不需要设置。每个切换都有自己的状态,由唯一id存储

// Toggle Function (unique to nodes id)
if(context.get(node.id) === true){
  msg.payload = false;  
}else{
  msg.payload = true;
}
context.set(node.id, msg.payload);
return msg;

节点红色代码:
[{“id”:“2f72e700.98a7aa”,“type”:“function”,“z”:“56c38643.490368”,“name”:“Toogle”,“func”:”//Toggle function(对节点id是唯一的)\nif(context.get(node.id)==true){\n msg.payload=false;\n}else{\n msg.payload=true;\n}\ncontext set(node.id,msg.payload);\nreturn msg;“,”输出“:“1”,“noerr”:0,“initialize”:“finalize”:“”,“x”:210,“y”:340,“wires”:[[“f05ff5d3.904228”]}]

嗨,idk为什么你的代码不起作用,但“context object”是我找到我想要的东西所需要的词,所以谢谢!嗨,idk为什么你的代码不起作用,但“上下文对象”是我能找到我想要的东西所需要的词,所以谢谢!