我一直在研究使用 SIM5320 的 MQTT 协议。我熟悉 AT 命令文档,并且有一个使用 Arduino 的工作实现。
首先我用AT+NETOPEN打开一个网络socket,然后用AT+CIPOPEN=0,"TCP","ip address",port打开一个TCP连接。然后我使用 AT+CIPSEND 为 MQTT 协议传输数据,该协议成功执行。如果我通过 MQTT 向 SIM 模块发送数据,它也会被接收并检测到消息。
使用 MQTT,有一个 Keep-Alive 间隔,它指定服务器将在通信之间保持连接打开的时间,基本上是客户端在与服务器强制断开连接之前可以空闲多长时间。但是,我已将此值设置为最大 18 小时,这远长于约 15 分钟的断开连接。
我的问题在大约 15 分钟后出现,当我尝试向服务器发送命令时,没有给出任何响应。SIM 没有发出“+IPCLOSE: 0,4”,这通常发生在服务器强行断开客户端或任何其他类型的指示符时。
此外,我仍然能够发送数据,而且 CIP 连接似乎仍然打开,如“AT+CIPOPEN?”所示。当我尝试使用“AT+CIPCLOSE=0”关闭连接时,我收到“+CIPCLOSE: 0,4”和“ERROR”。文档中没有提到“+CIPCLOSE: 0,4”是什么意思,但是它似乎没有关闭连接,因为它无法打开或使用。
我真的很想知道在这 15 分钟内发生了什么,从建立连接到发送数据,再到尝试再次发送数据。没有任何警报或任何出现问题的迹象,所以我很困惑。