Catatan Lapangan: MQTT yang Tahan Banting
Pelajaran dari menjalankan MQTT di jaringan seluler pedesaan yang sering putus.
Terakhir dirawat
Di lab, MQTT terasa sepele. Di lapangan dengan sinyal seluler yang naik-turun, detail kecil menentukan apakah data sampai atau hilang.
Tiga setelan yang paling berpengaruh
- QoS 1, bukan 0. Di jaringan tak stabil, “kirim dan lupakan” berarti kehilangan pembacaan. QoS 1 menjamin sampai minimal sekali — sisi penerima cukup idempoten terhadap duplikat.
- Clean session = false. Broker menahan pesan untuk klien yang sempat putus, jadi node tidak kehilangan perintah saat offline beberapa menit.
- Keep-alive yang realistis. Terlalu pendek, koneksi terus putus-sambung dan boros daya; terlalu panjang, kematian node telat terdeteksi.
// Buffer lokal saat offline; siram ketika koneksi pulih.
if (!client.connected()) bufferReading(reading);
else flushBuffer();
Perlakukan jaringan sebagai sesuatu yang pasti akan putus, lalu rancang agar pemulihan berjalan otomatis tanpa intervensi operator.