开启 MQTT 模块
配置 mqtt.protocol.enabled=true,然后启动或重启平台。
平台内置了一套 MQTT Broker(基于 EMQX),这条路适合下面这类设备:
如果设备 Topic 改不了,或已经部署在第三方 Broker 上,请直接看 任意主题设备接入。
配置 mqtt.protocol.enabled=true,然后启动或重启平台。
接入方式选 MQTT,导入物模型或选择透传模式。
设备管理里添加设备,进入设备详情 → 设备连接信息,直接复制 ClientID、Username、Password 和 Topic。
发布 $thing/up/property/{pk}/{dk},订阅 $thing/down/{pk}/{dk}。
透传模式再补 decode / encode,用 MQTTX 跑通上报和下发。
部署侧先确认配置已经打开,如 application-prod.properties:
# MQTT协议
mqtt.protocol.enabled=true改完后需要启动或重启平台,只改配置不重启不会生效。
在产品管理里新建产品时,接入方式选择 MQTT。

创建完产品后至少创建一个属性和一个功能


新版本推荐直接从 设备详情 拿连接信息,不用再回产品详情翻模板。
路径:设备管理 → 新增设备 → 进入设备详情 → 设备连接信息。
设备详情页面会给出:
ClientID、Username、Password(全部支持一键复制)$thing/... 主题,已经带上当前设备的 ProductKey/DeviceId)
平台直连一机一密规则
如果你想手动拼接,可以直接按下面的格式来:
ClientID = ProductKey.DeviceId
Username = DeviceId&ProductKey
Password = DeviceSecret平台内置 Broker 的 MQTT 地址和端口,在设备连接信息和产品详情里都能看到。
常用的 4 条 Topic 如下:
| 用途 | Topic | 谁来用 |
|---|---|---|
| 属性上报 | $thing/up/property/{productKey}/{deviceId} | 设备发布 |
| 事件上报 | $thing/up/event/{productKey}/{deviceId} | 设备发布 |
| 透传上报 | $thing/up/{productKey}/{deviceId} | 设备发布 |
| 指令下发 | $thing/down/{productKey}/{deviceId} | 设备订阅 |
如果还有 OTA 上报场景,平台也支持 $ota/report/{productKey}/{deviceId}。
平台从 Topic 里就能直接拿到 productKey 和 deviceId,这类设备 通常不需要写 preDecode 去识别设备。
后续处理分成两种:
| 模式 | 平台怎么处理 | 适合什么消息 |
|---|---|---|
THING_MODEL | 直接按物模型 JSON 处理属性或事件 | 标准 JSON 上报 |
PASSTHROUGH | 继续走产品里的 decode / encode | HEX、字符串、私有 JSON |
设备直接往属性 Topic 发标准 JSON。
对应 Topic:
$thing/up/property/{productKey}/{deviceId}属性上报示例:
{
"current": 31.0,
"power": 129,
"powerState": 1,
"voltage": 122.8
}事件上报类似,把 Topic 换成 $thing/up/event/{productKey}/{deviceId} 即可。

如果 Topic 按平台规范来,但 payload 还是厂商私有格式,继续用透传 Topic:
$thing/up/{productKey}/{deviceId}这时重点就不在 Topic 了,而在产品脚本:
decode 负责把设备上报转成属性或事件。encode 负责把平台功能调用转成设备报文。建议按这个最短路径联调:
$thing/down/{productKey}/{deviceId}(即"设备订阅"列出的 Topic)。$thing/up/property/{productKey}/{deviceId} 发一条属性 JSON。
默认下行 Topic 是 $thing/down/{productKey}/{deviceId}。
如果你在产品 端云配置 里单独配了 downTopic,平台会优先用你配置的主题模板下发。

常用占位符:
#{productKey} / / ${productKey} / {productKey}#{deviceId} / / ${deviceId} / {deviceId}productKey 或 deviceId 写错了(建议直接从设备详情复制)。decode / encode。自建接入,此时应参考 任意主题设备接入。downTopic,导致平台下发主题不是默认的 $thing/down/...。更多排查方式可以直接看 MQTT 常见问题。