Skip to content

1. MQTT转发器

MQTT转发器是用于实现第三方应用平台协议对接的中间件解决方案,通过灵活的JS脚本处理实现:

  • 跨平台消息路由(source→target broker)
  • 动态Topic重定向
  • 消息内容格式转换

1.1. 配置流程

1.1.1. 第一步:建立Broker连接

  1. 准备认证信息:
  • 账号/密码
  • TLS证书(如需加密连接)
  1. 连接类型选择:
  • 常规MQTT Broker:需填写完整连接信息
  • TKL生态数据:
    • AS类型:获取LoRaWAN解析后的应用层数据,订阅的topic权限是 /v32/[tenant]/as/#
    • ThinkLink 类型: 获取的是经ThinkLink 物模型解析后的数据,订阅的topic的topic /v32/[tenant]/tkl/#

注意:至少需建立2个Broker连接(source+target)

1.1.2. 第二步:配置转发规则

  1. 进入配置界面:
    [高级功能] → [转发器] → [新增]
  2. 基础设置:
    • 命名转发器实例
    • 启用功能开关
  3. 端点配置:
    • Source Broker(下拉选择,若无则需新建)
    • Target Broker(下拉选择,若无则需新建)
    • 订阅Topic(支持通配符)

1.1.3. 可选:协议转换脚本

javascript
/**
* 消息转换函数
* @param {Object} input - 原始消息
* @param {string} input.topic - 来源topic
* @param {Object} input.msg - 消息体(JSON)
* @returns {Object|null} 返回null则丢弃消息
*/
function forwardScript({topic, msg}) {
  // 示例:设备心跳消息过滤转换
  if (!msg?.uheart?.EUI || msg?.uheart?.action != 'heart') return null;

  const VALID_EUIS = ["7a53012a00000070", "7a53012a00000331"];
  const eui = msg.uheart.EUI;
  if (!VALID_EUIS.includes(eui)) return null;

  // 构造目标消息格式
  return {
    topic: `/v32/test/my/up/gw/${eui}`,  // 支持模板变量
    option:{
      retain:false
    }
    msg: {
      version: "3.0",
      eui: eui,
      action: "heart",
      data: {  // 字段映射
        validIP: msg.uheart?.IP,
        txPackets: msg.uheart?.TxPackets,
        rxPackets: msg.uheart?.RxPackets,
        deviceHandle: msg.uheart?.deviceHandle,
        hwVersion: msg.uheart?.hardwareVersion,
        fwVersion: msg.uheart?.fimewareVersion,
        netType: msg.uheart?.netType
      }
    }
  }
}
  • 输入参数
参数类型描述
topicstring订阅到的原始MQTT Topic
msgObject接收到的消息内容(JSON格式)
  • 返回值

返回一个新的消息对象(或 null 以丢弃该消息):

字段类型说明
topicstring目标Topic,可使用 ${变量}动态替换(如 ${msg.deviceId}
msgObject转换后的消息内容(需符合目标协议规范)
optionobject如果要发送retain 消息,则option:{retain:true}