2017-07-21 28 views
2

所以我只是要掌握节点红色,我需要创建一个条件全局函数。节点红 - 需要一个数字值的多输入功能

我设置的数值两个独立global.payloads 0或1

我需要的是现在的情况发生,如果global.payload为值1什么然后按照这个流程,如果等于值0,然后按照这个。

我只是对函数语句的语法有点困惑。任何帮助感激地赞赏。

+0

也许我下面的新答案更好地反映了你想要完成的事情,因为你的评论是你正在使用两个独立的全局有效载荷。 – TomServo

回答

1

既然你不接受目前的答案,以为我会试试这个。 我认为这是你需要处理来自两个独立的全球背景的输入。我在这里模拟他们有两个单独的inject节点证明:

enter image description here

checkconfinject节点发出1或0同为meshstatus节点。用您的真实输入替换这些注入节点。真正的工作是在函数内部完成:

var c = context.get('c') || 0; // initialize variables 
var m = context.get('m') || 0; 

if (msg.topic == "checkconf") // update context based on topic of input 
{ 
    c = {payload: msg.payload}; 
    context.set("c", c); // save last value in local context 
} 

if (msg.topic == 'meshstatus') // same here 
{ 
    m = {payload: msg.payload}; 
    context.set('m', m); // save last value in local context 
} 

// now do the test to see if both inputs are triggered... 
if (m.payload == 1) // check last value of meshstatus first 
{ 
    if (c.payload == 1) // now check last value of checkconf 
     return {topic:'value', payload: "YES"}; 
} 
else 
    return {topic:'value', payload: "NO"}; 

一定要设置的不管你作为输入,所以if语句可以在两个输入区分使用的“主题”属性。祝你好运!

1

您可以使用Switch节点来执行此操作,而不是使用Function节点。

enter image description here

+0

嗨,感谢您的反馈...我实际上有2个global.payloads ...一个叫global.payload(checkconf),另一个叫global.payload(meshstatus)我需要评估一个条件,如果全局.payload(meshstatus)设置为1,然后检查global.payload(checkconf)是否也等于1 ..如果是,那么做这个,如果没有,那么做这个..我一直在尝试我的大脑在结试图解决这个问题:-S – blupacetek

相关问题