【问题标题】:Node-red - need a multi-input function for a number value节点红色 - 需要一个数字值的多输入函数
【发布时间】:2017-07-21 11:55:41
【问题描述】:

所以我刚刚开始掌握 node-red,我需要创建一个条件全局函数。

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

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

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

【问题讨论】:

  • 也许我下面的新答案更好地反映了您想要完成的工作,因为您评论说您正在使用两个单独的全局有效负载。

标签: function node-red


【解决方案1】:

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

checkconf inject 节点发出 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 语句可以区分两个输入。祝你好运!

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您好,感谢您的反馈...我实际拥有的是 2 个 global.payloads...一个称为 global.payload(checkconf) 另一个称为 global.payload(meshstatus) 我需要评估一个条件是,如果 global.payload(meshstatus) 设置为 1,则检查 global.payload(checkconf) 是否也等于 1.. 如果是则执行此操作,如果不是则执行此操作.. 我一直绞尽脑汁想解决这个问题:-S
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多