Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Garder MQTT ouvert sur LTE ou se reconnecter à chaque envoi ? Nous essayons de réduire notre facture de données

Garder MQTT ouvert sur LTE ou se reconnecter à chaque envoi ? Nous essayons de réduire notre facture de données

Résolu 4 3

Traduit de English par IA ·

Nous avons 22 contrôleurs de pompes sur des puits d’irrigation, chacun avec un ESP32 et un modem LTE SIM7600, avec des SIM sur un forfait mutualisé de 500 Mo/mois. Ils envoient une mesure toutes les 5 minutes (débit, pression, état de la pompe) à Hermetry via MQTT/TLS et gardent la connexion ouverte avec un keepalive de 60.Le mois dernier, le forfait s’est épuisé le 24. Par SIM, cela représente environ 25 Mo/mois pour des charges utiles qui devraient être minuscules, soit environ 80 octets de JSON toutes les 5 minutes. Un collègue affirme que « rester connecté en permanence » est le problème et qu’il faut se connecter, publier, puis se déconnecter à chaque fois. Un autre dit que c’est pire à cause de TLS.Qui a raison ? J’aimerais des chiffres si quelqu’un a mesuré. Et si nous changeons, Hermetry affichera-t-il les puits comme hors ligne entre les envois ?

Timestamps in UTC or it didn't happen.
♥ 0

Traduit de English par IA ·

Votre collègue #2 a probablement raison. Un handshake TLS complet coûte des kilo-octets, un ping keepalive est minuscule.

♥ 0

Traduit de English par IA ·

J’ai mesuré cela l’an dernier sur nos trackers de remorques, parce que notre facture d’opérateur était absurde. Chiffres approximatifs issus de captures de paquets sur un SIM7600, TLS 1.2, le broker de la plateforme :

  • reconnexion complète (poignée de main TCP + TLS avec chaîne de certificats + CONNECT + SUBSCRIBEs) : environ 5 à 6 Ko
  • un aller-retour keepalive (PINGREQ/PINGRESP dans TLS, plus en-têtes TCP/IP et ACK) : environ 150 à 200 octets
  • votre relevé de 80 octets sous forme de publish QoS 1 dans TLS avec PUBACK : également quelques centaines d’octets

Donc se reconnecter toutes les 5 minutes coûterait environ 8 640 poignées de main par mois, soit plus de 45 Mo. Bien pire. Un keepalive de 60 représente 43 200 pings par mois, environ 8 Mo. C’est une grosse part de vos 25 Mo.Ce qui a fonctionné chez nous :Keepalive jusqu’à 300 s (le broker ramène de toute façon toute valeur supérieure à son maximum, soit 300). Cela divise les pings par cinq. Vérifiez que votre opérateur ne coupe pas les sessions NAT inactives plus vite ; chez nous elles tenaient 6 minutes, certaines coupent entre 2 et 4 minutes. Si vous voyez keepalive_timeout dans l’onglet Log de l’appareil, réduisez la valeur.Regroupement. Au lieu d’un publish toutes les 5 minutes, mettez en tampon 3 relevés et envoyez-les dans un seul tableau avec horodatages (l’ESP32 dispose de NTP, donc ts convient) :

[{"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}}]

Mêmes données, un seul publish, et cela ne compte qu’un message sur le quota mensuel au lieu de trois.Repérez les éléments superflus. Chez nous, le pire était que le firmware envoyait les attributs client (IP, RSSI, version du firmware) à chaque publish. Ne les envoyez qu’en cas de changement.Concernant le statut hors ligne : avec Live connection comme règle de connexion, les appareils restent en ligne tant que la session MQTT est ouverte, donc avec un keepalive de 300 rien ne change. Si vous passez un jour en mode connexion-envoi-déconnexion, basculez-les vers un profil avec Recent message, sinon ils apparaîtront hors ligne entre les envois.

Still waiting for the gateway to reconnect.
Solution acceptée♥ 8

Traduit de English par IA ·

Les chiffres sont disponibles après deux semaines. Keepalive 300 (notre opérateur n’a aucun problème avec cela, aucun timeout dans l’onglet Log), lots de 3, attributs uniquement en cas de changement. Projection d’environ 9 Mo par SIM et par mois, contre 25 auparavant. La surprise venait du trafic d’attributs : notre firmware publiait lan.ip et cell.rssi comme attributs à chaque mesure. Nous avons déplacé rssi vers la télémétrie toutes les 15 minutes. Merci Kevin, ces mesures m’ont fait gagner une semaine.

Timestamps in UTC or it didn't happen.
♥ 0

Traduit de English par IA ·

Bien. Si les pompes doivent un jour recevoir des commandes, gardez à l’esprit qu’une mesure regroupée sur 15 minutes ne retarde pas celles-ci : elles arrivent par la session ouverte.

♥ 0
5 sujets de 1 à 5 (sur un total de 5)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager