节点红色 - 需要多输入函数来表示数值

时间:2017-07-21 11:55:41

标签: function node-red

所以我只是掌握了node-red,我需要创建一个条件全局函数。

我有两个单独的global.payloads设置为0或1的数字值。

我现在需要做的是,如果global.payload等于值1,则遵循此流程,如果它等于值0,则遵循此流程。

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

2 个答案:

答案 0 :(得分:2)

由于您还没有接受当前的答案,我想我一试。  我认为这是处理来自两个独立全局上下文的输入所需要的。我在这里用两个独立的inject节点模拟它们来演示:

enter image description here

checkconf inject节点为meshstatus节点发出1或0.替换那些注入节点的实际输入。真正的工作是在函数内部完成的:

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 :(得分:1)

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

enter image description here