# 请问为啥我用mqttx测试，现在订阅话题了，想要发布话题的时候，重新连接，发布不了消息，已经连接了，但也没有消息记录

**URL:** <https://bbs.eeclub.top/t/topic/294>\
**Category:** 嵌入式系统 / Embedded Systems\
**Tags:** MQTT\
**Created:** [2026 年3 月 18 日 02:58 UTC](https://bbs.eeclub.top/t/topic/294 "2026-03-18T02:58:34Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

作者： ![来了](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/%E6%9D%A5/96bed5/32.png) [@来了](https://bbs.eeclub.top/u/%E6%9D%A5%E4%BA%86)\
发布日期： [2026 年3 月 18 日 02:58 UTC](https://bbs.eeclub.top/t/topic/294/1 "2026-03-18T02:58:34Z")

</div>

![屏幕截图 2026-03-18 105439](https://s3.eeclub.top/original/2X/3/35e9202e5305c71dd624b98a1a4e5e5d1d2ee356.png)

 ![屏幕截图 2026-03-18 105800](https://s3.eeclub.top/original/2X/2/2e711e4949eb14819dbeab0aaca99baba4cd968f.png)

 ![屏幕截图 2026-03-18 105753](https://s3.eeclub.top/original/2X/5/57a130d1691bee5e04ab57292c256293038823f5.jpeg)

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年3 月 18 日 03:44 UTC](https://bbs.eeclub.top/t/topic/294/2 "2026-03-18T03:44:04Z")

</div>

用的什么平台？

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年3 月 18 日 03:46 UTC](https://bbs.eeclub.top/t/topic/294/3 "2026-03-18T03:46:48Z")

</div>

问题描述详细一点！环境，平台，做了什么操作，有什么现象，目的是什么

---

<div class="post-metadata">

作者： ![来了](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/%E6%9D%A5/96bed5/32.png) [@来了](https://bbs.eeclub.top/u/%E6%9D%A5%E4%BA%86)\
发布日期： [2026 年3 月 18 日 04:12 UTC](https://bbs.eeclub.top/t/topic/294/4 "2026-03-18T04:12:16Z")

</div>

，用的onenet云平台，现在想要实现一个mqttx与云平台数据通信。正常订阅话题后，我在这个mqttx上发布消息，应该回复正确或错误。但是发布后就显示设备重连，连接成功。应该设备连接没什么问题，如果不回复是不是订阅出了问题，但我都是按照正常操作来的。

---

<div class="post-metadata">

作者： ![ABC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/abc/32/101_2.png) [@ABC](https://bbs.eeclub.top/u/ABC)\
发布日期： [2026 年3 月 18 日 12:16 UTC](https://bbs.eeclub.top/t/topic/294/5 "2026-03-18T12:16:00Z")

</div>

看来你在使用 MQTTX 模拟 OneNET 物模型通信时遇到了一个非常典型的问题： **“一发布消息就重连，且云端没记录”** 。

这通常不是因为网络不好，而是因为 OneNET 的服务端在收到你的报文后，发现报文 **不符合协议规范** 或 **物模型定义** ，为了保护服务器，它直接采取了“强制断开连接”的措施。

我们可以从以下几个核心原因排查：

### 1. 物模型标识符（Identifier）不匹配

OneNET 的物模型对 JSON 中的 `params` 字段校验极其严格。

- **检查：** 请确认你在云端定义的属性标识符是不是真的叫 `air_CO2` 和 `air_humidity`？
- **注意：** 标识符是 **区分大小写** 的。如果在云端定义的是 `Air_CO2` 但你发的是 `air_CO2`，OneNET 就会认为是非法数据并踢你下线。

### 2. JSON 格式与数据类型

从你的截图看，JSON 结构基本正确，但有一个细节：

- **数值类型：** 你的 `value` 后面跟着的是字符串 `"500"`（带双引号）。如果在 OneNET 云端你将 `air_CO2` 定义为 `int` 或 `float` 类型，这里 **不能加双引号** 。
- **修正建议：**

```json
"air_CO2": {
    "value": 500, // 去掉引号
    "time": 1706673129818 
}

```

### 3. 时间戳（Timestamp）过旧

你发送的报文里 `time` 是 `1706673129818`（对应 2024 年 1 月）。

- **风险：** 虽然有些平台允许补传历史数据，但如果时间戳与服务器当前时间（2026年）偏差过大，可能会被触发平台的安全校验或数据过滤机制。
- **测试：** 尝试把 `time` 字段整个删掉，或者更新为当前时间戳。OneNET 默认会自动以到达服务器的时间为准。

### 4. 没有订阅响应话题（Post\_reply）

你提到“如果不回复是不是订阅出了问题”，在 OneNET 物模型协议中：

- 你发布的话题是：`$sys/{pid}/{device-name}/thing/property/post`
- **云端的回复话题** 是：`$sys/{pid}/{device-name}/thing/property/post_reply`
- **解决：** 你需要在 MQTTX 中提前点击 **“New Subscription”** ，订阅这个带 `_reply` 的话题。只有订阅了它，云端处理完你的请求后，你才能在 MQTTX 窗口看到“正确”或“错误码”的反馈。

### 5. 检查 OneNET 平台日志

你的第二张图显示“事件记录”为空。建议你切换到 **“操作日志”** 或查看 **“设备调试”** 里的实时日志。

> 如果连接成功但发布失败，OneNET 的操作日志里通常会记录具体的错误代码（如：数据格式解析失败）。

* * *

### 💡 建议尝试的测试步骤：

1. **简化报文：** 只发一个最简单的属性，去掉时间戳，去掉双引号。

```json
{
  "id": "123",
  "version": "1.0",
  "params": {
    "air_CO2": {
      "value": 500
    }
  }
}

```

2. **订阅 Reply：** 在发布前，确保订阅了 `$sys/24A1J1S6kn/dev1/thing/property/post_reply`。
3. **观察断开瞬间：** 如果点击发送的瞬间 MQTTX 右上角变红，那 100% 是 **Payload（负载内容）** 格式不符合 OneNET 物模型的要求。

---

<div class="post-metadata">

作者： ![来了](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/%E6%9D%A5/96bed5/32.png) [@来了](https://bbs.eeclub.top/u/%E6%9D%A5%E4%BA%86)\
发布日期： [2026 年3 月 18 日 12:50 UTC](https://bbs.eeclub.top/t/topic/294/6 "2026-03-18T12:50:17Z")

</div>

好的谢谢，我明天再试试。🫰
