qwertgzy 2025-10-16 21:41 采纳率: 0%
浏览 14

onenet云平台onejson数据包问题

我想用esp8266把传感器数据传到onenet云平台(mqtt协议onejson),采用了at指令的方法,能够成功连接,设备在线,但总是在最后一步数据传不上去,不知道哪里有问题,请教各位

img


以下是串口调试助手的显示
[2025-10-16 21:22:20.870]# SEND ASCII>
AT+MQTTSUB=0,"$sys/<产品id>/test/thing/property/set",1

[2025-10-16 21:22:20.931]# RECV ASCII>
AT+MQTTSUB=0,"$sys/<产品id>/test/thing/property/set",1

OK

[2025-10-16 21:23:08.697]# SEND ASCII>
AT+MQTTPUB=0,"$sys/<产品id>/test/thing/property/post","{"id":"123","params":{"temp":{"value":18},"humi":{"value":58}}}",0,0

[2025-10-16 21:23:08.774]# RECV ASCII>
AT+MQTTPUB=0,"$sys/<产品id>/test/thing/property/post","{"id":"123","params":{"temp":{"value":18},"humi":{"value":58}}}",0,0

ERROR

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-10-16 21:44
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:生活中的小确幸,是支撑我们走下去的动力。
    .

    根据您提供的串口调试记录,我发现了几个关键问题导致数据上传失败。主要问题出现在 MQTT 发布指令的格式和 JSON 数据构造上。

    问题分析

    1. JSON 数据格式错误 - 您在 AT 指令中直接使用了未转义的 JSON 字符串
    2. 引号转义问题 - JSON 中的双引号需要正确转义
    3. 主题路径格式 - OneNET 的 OneJSON 协议主题路径需要确认

    解决方案

    1. 修正 AT 指令格式

    正确的 AT+MQTTPUB 指令应该是:

    AT+MQTTPUB=0,"$sys/<产品id>/<设备名称>/thing/property/post","{\"id\":\"123\",\"params\":{\"temp\":{\"value\":18},\"humi\":{\"value\":58}}}",0,0
    

    2. 完整的连接和数据上传流程

    # 1. 设置 WiFi 模式
    AT+CWMODE=1
    
    
    # 2. 连接 WiFi
    AT+CWJAP="SSID","password"
    
    
    # 3. 连接 MQTT 服务器
    AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
    
    
    # 4. 订阅主题(可选)
    AT+MQTTSUB=0,"$sys/<产品id>/<设备名称>/thing/property/set",1
    
    
    # 5. 发布数据(关键步骤)
    AT+MQTTPUB=0,"$sys/<产品id>/<设备名称>/thing/property/post","{\"id\":\"123\",\"params\":{\"temp\":{\"value\":25.6},\"humi\":{\"value\":65.2}}}",0,0
    

    3. 注意事项

    • <产品id> 替换为您的实际产品 ID
    • <设备名称> 替换为您的设备名称
    • JSON 中的所有双引号都需要用 \" 转义
    • 确保设备已在 OneNET 平台上正确注册和激活

    4. 验证步骤

    # 检查 MQTT 连接状态
    AT+MQTTCONN?
    
    
    # 如果连接失败,重新连接
    AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
    

    常见错误排查

    1. 检查产品 ID 和设备名称是否正确
    2. 确认设备鉴权信息(设备密钥)是否正确
    3. 验证网络连接是否稳定
    4. 检查 JSON 格式是否符合 OneJSON 规范

    请按照上述修正后的指令格式重新尝试数据上传,应该能够解决您的问题。如果仍有问题,请检查设备在 OneNET 平台上的状态和鉴权配置。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月16日