You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node-RED中如何按JSON Payload的Value类型分流处理传感器数据

Node-RED 传感器数据消息分流实现方案

需求说明

传感器返回的JSON数据中,value字段存在三种类型:double数值、布尔值、字符串。需要按以下规则分流:

  • 数值类型(含double、布尔):发送至数值处理节点
  • 普通字符串类型(非"OFF"/"STARTING"):发送至字符串处理节点
  • 特殊字符串"OFF"/"STARTING":发送至单独的特殊处理节点

示例输入数据:

[
    {
        "tag": "Wind/7865",
        "value": 24.82145623328888
    },
    {
        "tag": "AC 3 Phase/7995",
        "value": true
    },
    {
        "tag": "AC 3 Phase/7847",
        "value": "OFF"
    },
    {
        "tag": "AC Generator/7849",
        "value": "STARTING"
    }
]

实现方法

方法1:使用Function节点(推荐,灵活处理特殊逻辑)

添加一个Function节点,编写以下代码实现多分支输出:

const value = msg.payload.value;
const valueType = typeof value;

// 优先处理特殊字符串
if (valueType === 'string') {
    if (value === 'OFF' || value === 'STARTING') {
        msg.topic = 'special_string';
        return [null, null, msg]; // 输出2对应特殊处理分支
    } else {
        msg.topic = 'normal_string';
        return [null, msg, null]; // 输出1对应普通字符串分支
    }
} else if (valueType === 'number' || valueType === 'boolean') {
    msg.topic = 'numeric_boolean';
    return [msg, null, null]; // 输出0对应数值/布尔分支
} else {
    // 其他未定义类型,可按需处理,此处直接丢弃
    return null;
}

配置Function节点的输出数量为3个,分别连接到对应的后续处理节点即可。

方法2:使用Switch节点

通过多重条件判断实现分流:

  • 第一个条件:typeof msg.payload.value === "string" && (msg.payload.value === "OFF" || msg.payload.value === "STARTING"),匹配后发送至特殊处理节点
  • 第二个条件:typeof msg.payload.value === "string",匹配后发送至普通字符串处理节点
  • 第三个条件:typeof msg.payload.value === "number" || typeof msg.payload.value === "boolean",匹配后发送至数值处理节点

注意开启Switch节点的「允许多个匹配」选项,确保特殊字符串不会被第二个条件重复匹配。

内容的提问来源于stack exchange,提问作者Masterbuilder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:06:27