Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Yanıt: LTE'de MQTT bağlantısını açık mı tutmalıyım, yoksa her gönderimde yeniden mi bağlanmalıyım? Veri faturamızı düşürmeye çalışıyoruz

Yapay zekâ tarafından English dilinden çevrildi ·

Bunu geçen yıl römork takip cihazlarımızda ölçtüm, çünkü operatör faturamız çok saçmaydı. SIM7600 üzerinde, TLS 1.2 ile platformun broker’ı kullanılarak paket yakalamalarından alınan kaba değerler:

  • tam yeniden bağlantı (TCP + sertifika zincirli TLS el sıkışması + CONNECT + SUBSCRIBE’lar): yaklaşık 5 ila 6 KB
  • bir keepalive gidiş-dönüşü (TLS içinde PINGREQ/PINGRESP, artı TCP/IP başlıkları ve ACK’ler): yaklaşık 150 ila 200 bayt
  • 80 baytlık okumanız, TLS içinde PUBACK ile QoS 1 publish olarak: yine birkaç yüz bayt

Yani her 5 dakikada bir yeniden bağlanmak ayda yaklaşık 8.640 el sıkışma, 45+ MB demek. Çok daha kötü. Keepalive 60 ayda 43.200 ping, yaklaşık 8 MB demek. Bu, 25 MB’lik kotanızın büyük bir kısmı.Bizde işe yarayan yöntem:Keepalive’ı 300 s’ye kadar çıkarın (broker, maksimumunun üzerindeki değerleri zaten 300 olarak kabul ediyor). Bu, ping sayısını beşte bire indirir. Operatörünüzün boşta kalan NAT oturumlarını daha hızlı düşürmediğini kontrol edin; bizimki 6 dakika tuttu, bazıları 2 ila 4 dakikada düşürüyor. Cihazın Log sekmesinde keepalive_timeout görürseniz değeri aşağı çekin.Toplu gönderim. Her 5 dakikada bir publish yerine, 3 okumayı tamponlayın ve zaman damgalarıyla tek bir dizi olarak gönderin (ESP32’de NTP var, bu yüzden ts kullanmak sorunsuz):

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

Veri aynı, tek publish, ayrıca aylık kotaya üç mesaj yerine tek mesaj olarak sayılır.Gereksiz trafik kaynaklarına bakın. Bizde en kötüsü, firmware’in her publish’te istemci özniteliklerini (IP, RSSI, firmware sürümü) göndermesiydi. Bunları yalnızca değiştiğinde gönderin.Çevrimdışı durumu hakkında: Çevrimiçi kuralı olarak Live connection kullanıldığında, MQTT oturumu açık olduğu sürece cihazlar çevrimiçi kalır; dolayısıyla keepalive 300 iken hiçbir şey değişmez. Eğer bağlan-gönder-bağlantıyı kes yöntemine geçerseniz, cihazları Recent message olan bir profile geçirin; aksi halde gönderimler arasında çevrimdışı görünürler.

Still waiting for the gateway to reconnect.
Kabul edilen çözüm♥ 8