STM32
直播中

李伟

7年用户 1503经验值
私信 关注
[问答]

用esp8266 at指令实现mqtt心跳响应机制遇到的疑问求解

我正常连接上自己所设置的mqtt服务器,但在实现心跳响应机制上出现了问题。
按正常mqtt格式,我利用SSCOM 发送PINGREQ消息:C0 00;
但我发送hex显示:C0 00 51 B0 □。
我等待服务器心跳响应PINGRESP消息:D0 00;
但实际我收到的是:C0 51 B0。
有没有大佬说明一下情况。

回帖(1)

Arvinhw

2024-5-23 17:08:43
首先,我们来分析一下您遇到的问题。您在使用ESP8266 AT指令实现MQTT心跳响应机制时,遇到了以下问题:

1. 您发送的PINGREQ消息格式不正确,应该是C0 00,但实际发送的是C0 00 51 B0 □。
2. 您收到的PINGRESP消息格式不正确,应该是D0 00,但实际收到的是C0 51 B0。

接下来,我们逐步解决这些问题。

问题1:发送PINGREQ消息格式不正确

解决方案:检查您的AT指令是否正确。发送PINGREQ消息的AT指令应该是`AT+MQTTPING`。确保您在发送此指令时没有额外的字符或空格。

问题2:收到的PINGRESP消息格式不正确

解决方案:这可能是由于您的ESP8266模块与MQTT服务器之间的通信问题导致的。请尝试以下步骤:

1. 确保您的MQTT服务器已正确配置并运行。
2. 检查您的网络连接是否稳定,以确保数据包在传输过程中不会丢失或损坏。
3. 尝试重新连接到MQTT服务器,然后再次发送PINGREQ消息并检查收到的PINGRESP消息。
4. 如果问题仍然存在,您可以尝试使用其他MQTT客户端库(如PubSubClient)来实现心跳响应机制,以排除ESP8266 AT指令的问题。

总之,您需要检查AT指令的正确性以及网络连接的稳定性。如果问题仍然存在,您可以尝试使用其他库来实现心跳响应机制。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分