Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Re: ¿Mantener MQTT abierto en LTE o reconectar en cada envío? Intentamos reducir nuestra factura de datos

Traducido del English por IA ·

Lo medí el año pasado en nuestros rastreadores de remolques, porque la factura de la operadora era absurda. Cifras aproximadas a partir de capturas de paquetes con un SIM7600, TLS 1.2 y el broker de la plataforma:

  • reconexión completa (handshake TCP + TLS con cadena de certificados + CONNECT + SUBSCRIBEs): unos 5 a 6 KB
  • un ida y vuelta de keepalive (PINGREQ/PINGRESP dentro de TLS, más cabeceras TCP/IP y ACKs): entre 150 y 200 bytes aproximadamente
  • su lectura de 80 bytes como publicación QoS 1 dentro de TLS con PUBACK: también un par de cientos de bytes

Así que reconectar cada 5 minutos costaría unos 8.640 handshakes al mes, más de 45 MB. Mucho peor. Un keepalive de 60 son 43.200 pings al mes, unos 8 MB. Eso es una parte importante de sus 25 MB.Lo que nos funcionó:Keepalive de hasta 300 s (el broker sirve cualquier valor por encima de su máximo como 300 de todos modos). Eso reduce los pings a una quinta parte. Compruebe que su operadora no cierra las sesiones NAT inactivas más rápido; las nuestras aguantaban 6 minutos, algunas se cierran a los 2 o 4. Si ve keepalive_timeout en la pestaña Log del dispositivo, bájelo.Agrupar. En lugar de una publicación cada 5 minutos, almacene 3 lecturas y envíelas como un único array con marcas de tiempo (el ESP32 tiene NTP, así que ts es válido):

[{"ts":1762336800000,"values":{"flow":12.1,"pressure":2.4,"pump":1}},
 {"ts":1762337100000,"values":{"flow":12.3,"pressure":2.4,"pump":1}},
 {"ts":1762337400000,"values":{"flow":11.9,"pressure":2.3,"pump":1}}]

Los mismos datos, una sola publicación, y además cuenta como un mensaje frente a la cuota mensual en lugar de tres.Busque extras que generen tráfico innecesario. En nuestro caso lo peor era que el firmware enviaba atributos de cliente (IP, RSSI, versión de firmware) en cada publicación. Envíelos solo cuando cambien.Sobre el estado sin conexión: con Live connection como regla de conexión, los dispositivos permanecen en línea mientras la sesión MQTT esté abierta, así que con keepalive 300 no cambia nada. Si alguna vez pasa al esquema conectar-enviar-desconectar, cámbielos a un perfil con Recent message; de lo contrario, aparecerán como desconectados entre envíos.

Still waiting for the gateway to reconnect.
Solución aceptada♥ 8