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

如何在ThingsBoard中拼接多个遥测Key并通过MQTT发送组合值?

多遥测Key拼接与MQTT发送实现方案

一、规则链脚本核心实现

  • 先配置规则链的触发节点为遥测数据上传,确保覆盖所有需要整合的遥测Key
  • 添加脚本节点,写入以下逻辑实现多Key整合:
    // 从消息 payload 中提取目标遥测值
    var telemetry = msg.payload;
    var temp = telemetry.temp;
    var humidity = telemetry.humidity;
    var pressure = telemetry.pressure;
    
    // 方式1:整合为JSON对象,新Key为env_data
    var mergedData = {
      "env_data": {
        "temperature": temp,
        "humidity": humidity,
        "pressure": pressure
      }
    };
    
    // 方式2:整合为字符串格式(按需选择)
    // var mergedData = {
    //   "env_data": `${temp}°C, ${humidity}%, ${pressure}hPa`
    // };
    
    // 更新消息 payload,传递给后续节点
    msg.payload = mergedData;
    return {msg: msg, metadata: metadata, msgType: msgType};
    
  • 脚本节点后添加MQTT发送节点,配置你的MQTT Broker地址、目标Topic、认证信息,将处理后的消息发送出去

二、部件行为配置修正

如果之前用部件行为没成功,可按以下步骤调整:

  • 进入部件的行为配置,添加遥测更新触发条件,勾选需要监听的遥测Key
  • 添加脚本动作,写入整合与发送逻辑:
    // 获取当前部件的最新遥测值
    var temp = entity.getTelemetryValue("temp");
    var humidity = entity.getTelemetryValue("humidity");
    var pressure = entity.getTelemetryValue("pressure");
    
    var mergedValue = {
      "env_data": {"temp": temp, "humidity": humidity, "pressure": pressure}
    };
    
    // 调用内置MQTT服务发送(需提前在系统配置中启用并配置MQTT客户端)
    var mqttService = getService("mqttService");
    mqttService.publish("your/custom/topic", JSON.stringify(mergedValue));
    
  • 确认部件拥有访问MQTT服务的权限,保存配置即可

三、下行链路场景的遥测获取方法

下行链路本身不用于主动获取遥测,需配合实体查询节点实现:

  • 在规则链中添加定时触发节点(或其他触发条件)
  • 接入实体查询节点,指定目标设备/部件,选择需要获取的多个遥测Key,设置查询最新值
  • 将查询结果传入脚本节点进行整合,再通过MQTT发送节点完成发送

内容的提问来源于stack exchange,提问作者Hamza Ziad Gutta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:07