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

基于ThingsBoard与Node-RED的跨设备数据转发方案需求

实现ThingsBoard父设备按loggerId转发数据到子设备节点

场景说明

我们有多台基于Node-RED开发的数据记录仪,均向ThingsBoard平台传输数据。其中一台记录仪对接两台物理设备,这两台设备在ThingsBoard中各自拥有独立的设备节点。此前因Node-RED无法同时开启多个MQTT连接,我们通过在JSON消息中添加loggerId字段解决了连接问题,但导致所有数据统一归集到了ThingsBoard的单个设备节点下。现在需要搭建一个父设备作为统一数据接收入口,通过规则链读取JSON消息中的loggerId字段,将数据转发至对应子设备节点进行存储与处理。

实现步骤

1. 父设备配置

  • 在ThingsBoard中创建一个父设备,作为所有Node-RED记录仪的统一数据入口。
  • 配置所有Node-RED记录仪的MQTT连接,使用父设备的设备令牌进行认证,确保所有数据都发送到该父设备。
  • 确保Node-RED发送的JSON消息中包含loggerId字段,字段值需与目标子设备的设备ID完全匹配(设备ID具有唯一性,避免名称冲突)。

2. 规则链配置(核心转发逻辑)

进入ThingsBoard规则链管理页面,按以下步骤配置转发规则:

  • 添加消息类型过滤节点:选择过滤类型为POST_TELEMETRY_REQUEST,仅处理父设备上报的遥测数据。
  • 添加脚本处理节点:编写JavaScript脚本提取loggerId并构造转发消息,示例代码:
    // 提取loggerId和原始遥测数据
    const targetDeviceId = msg.payload.loggerId;
    const telemetryData = {...msg.payload};
    // 可选:移除loggerId字段,避免冗余存储
    delete telemetryData.loggerId;
    
    return {
        msg: telemetryData,
        metadata: { targetDeviceId },
        msgType: "POST_TELEMETRY_REQUEST"
    };
    
  • 添加设备遥测转发节点:配置该节点使用metadata.targetDeviceId作为目标设备ID,将处理后的遥测数据转发至对应子设备。
  • 节点连接:按顺序连接「消息类型节点」→「脚本节点」→「设备遥测节点」,确保数据流路径正确。
  • 激活规则链:将配置好的规则链关联到父设备所属租户,并启用规则链。

3. 验证测试

  • 从Node-RED发送携带不同loggerId的测试数据到父设备。
  • 登录ThingsBoard查看对应子设备的遥测数据面板,确认数据已正确转发并存储。

数据转发流程图

数据转发流程图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:25