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

西门子LOGO!向ThingsBoard传输Modbus数据的格式转换求助

解决ThingsBoard中Teltonika网关MQTT数据格式转换问题

场景说明

当前通过Teltonika 4G网关读取Siemens LOGO!的Modbus数据,以固定JSON格式通过MQTT发送至thingsboard.cloud,原始Payload格式如下:

{
    "Donnees_Logo": {
        "timestamp": 1700572138,
        "date": "21/11/2023 14:08:58",
        "server_id": 1,
        "bserver_id": 1,
        "addr": 4,
        "full_addr": "400004",
        "size": 3,
        "data": "480",
        "server_name": "EloyLogo",
        "ip": "xx.xx.xx.xx",
        "name": "Surp_Cons_TOFF"
    }
}

需要将其转换为以下格式,以适配ThingsBoard的设备属性与遥测数据规范:

{
    "deviceName": "EloyLogo",
    "attributes": {
        "ip": "xx.xx.xx.xx",
        "ts": 1700572138,
        "register": "400004",
        "name": "Surp_Cons_TOFF",
        "integrationName": "Test integration"
    },
    "telemetry": {
        "value": "480"
    }
}

方案1:集成中心数据转换器(推荐)

  1. 登录thingsboard.cloud,进入集成中心,找到你的MQTT集成实例
  2. 进入Incoming payload converter配置,选择Script类型
  3. 替换默认脚本为以下代码:
// 解析原始Payload
const originalData = msg.payload.Donnees_Logo;

// 构造目标格式数据
const convertedData = {
    deviceName: originalData.server_name,
    attributes: {
        ip: originalData.ip,
        ts: originalData.timestamp,
        register: originalData.full_addr,
        name: originalData.name,
        integrationName: "Test integration"
    },
    telemetry: {
        value: originalData.data
    }
};

// 返回转换后的数据
return {
    msg: convertedData,
    metadata: metadata,
    msgType: msgType
};
  1. 保存配置,发送测试数据验证转换效果

方案2:规则引擎脚本节点

若集成中心转换器无法满足需求,可通过规则引擎实现转换:

  1. 进入规则链,添加Script节点到数据处理流程中
  2. 在节点配置中输入以下脚本:
// 从原始消息中提取数据
const logoData = msg.payload.Donnees_Logo;

// 构造目标结构
msg.payload = {
    deviceName: logoData.server_name,
    attributes: {
        ip: logoData.ip,
        ts: logoData.timestamp,
        register: logoData.full_addr,
        name: logoData.name,
        integrationName: "Test integration"
    },
    telemetry: {
        value: logoData.data
    }
};

// 传递转换后的消息
return msg;
  1. 连接节点至上游MQTT消息源与下游数据存储/展示节点,启动规则链

注意事项

  • 若data字段需要转为数值类型(而非字符串),可将originalData.data改为parseInt(originalData.data)或parseFloat(originalData.data)
  • 测试时可通过ThingsBoard的事件日志查看转换是否报错,若出现字段缺失,检查原始Payload是否包含对应字段

内容的提问来源于stack exchange,提问作者P.I.D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:02:35