He estado trabajando en un protocolo MQTT usando SIM5320. Estoy familiarizado con la documentación del comando AT y tengo una implementación en funcionamiento con un Arduino.
Primero, abro un socket de red con AT + NETOPEN, luego abro una conexión TCP con AT + CIPOPEN = 0, "TCP", "" ,. Luego transmito datos para el protocolo MQTT utilizando AT + CIPSEND, que se ejecuta con éxito. Si envío datos al módulo SIM a través de MQTT, también se recibe y se detecta el mensaje.
Con MQTT, hay un intervalo Keep-Alive que especifica cuánto tiempo el servidor mantendrá una conexión abierta entre las comunicaciones, básicamente cuánto tiempo puede estar inactivo el cliente antes de ser desconectado por la fuerza del servidor. Sin embargo, he establecido este valor en el máximo de 18 horas, que es mucho más largo que las desconexiones de ~ 15 minutos.
Mi problema surge después de ~ 15 minutos, cuando intento enviar un comando al servidor y no se responde. La tarjeta SIM no ha emitido un "+ IPCLOSE: 0,4", que generalmente ocurre cuando el servidor desconecta a la fuerza al cliente, o cualquier otro tipo de indicador.
Además, todavía puedo enviar datos y parece que la conexión CIP todavía está abierta, como se indica en "AT + CIPOPEN?". Cuando intento cerrar la conexión con "AT + CIPCLOSE = 0", recibo "+ CIPCLOSE: 0,4" y "ERROR". No se menciona lo que significa "+ CIPCLOSE: 0,4" en la documentación, sin embargo, no parece cerrar la conexión, ya que no se puede abrir ni usar.
Realmente me encantaría saber qué sucede en estos 15 minutos, entre establecer una conexión y enviar datos, a intentar enviar datos nuevamente. No hay alerta ni ninguna indicación de que algo vaya mal, así que estoy muy confundido.
Gracias por leer y por cualquier ayuda que pueda brindar.