Tüm yazılar
Haberleşme Protokolleri

MQTT Nedir? Publish-Subscribe, QoS ve RS-485 Saha Cihazını Buluta Taşıma

MQTT'nin publish-subscribe modelini, QoS 0/1/2'nin ne işe yaradığını ve 20 yıllık bir RS-485 Modbus hattını bir gateway ile MQTT üzerinden buluta taşırken yaşadığım 'kaybolan packet' vakasını — LWT ve retained mesajla anlatıyorum.

MQTT Nedir? Publish-Subscribe, QoS ve RS-485 Saha Cihazını Buluta Taşıma

Kısa Cevap (Özet): MQTT, 1999’da IBM tarafından (sahra uydu telemetrisi için) geliştirilen, broker üzerinden publish/subscribe modeline dayanan, hafif bir mesajlaşma protokolüdür. Cihazlar topic’e mesaj yazar (publish), ilgililer o topic’i dinler (subscribe); cihazlar birbirini bilmez. QoS 0/1/2 teslimat garantisini, retained en son değeri, LWT (Last Will) bağlantı kopmasını bildirir. Varsayılan port 1883, güvenli (TLS) port 8883. Endüstride izleme/telemetri için idealdir; sert gerçek zamanlı kontrol için değil.

Bir izleme projesi, son prova. Sahada 20 yıllık bir RS-485 Modbus hatti vardı; 12 eski transmitter, kimsenin açmadığı bir dolabın arkasında. Onları buluta taşımak gerekiyordu. Bir RS-485 → MQTT gateway taktım: Modbus RTU’yu okuyor, topic’e publish’ıyordu. Her şey akıyordu — ama gateway bir gece düştü ve kimse anlamadı. Ertesi sabah LWT (Last Will) mesajı sayesinde anladım: gateway, broker’la bağlantısını kesmeden önce “ben gidiyorum” demişti. MQTT’nin sahadaki karakteri budur: susmak da bir mesajdır. Bu yazı o sessiz geceyi ve protokolün tamamını anlatıyor.

Publish-Subscribe: Cihazlar Birbirini Bilmez

MQTT, istemci-sunucu değil, yayıncı-abone modelidir. Ortada bir broker (aracı) vardır:

Cihazlar birbirini bilmez; broker üzerinden konuşurlar. Bu, iki şeyi getirir:

  1. Çözülme: yeni bir abone eklemek, yayıncıyı bozmaz.
  2. Ölçek: bir yayıncı, bin aboneye tek mesajla ulaşır.

Topic, hiyerarşiktir: fabrika/hat02/tank01/basinc. Yabanıl kart (+ ve #) ile tek abone, bir alt ağacı dinler.

QoS 0, 1, 2: Teslimat Garantisi

MQTT, üç kalite seviyesi sunar:

QoS Garanti Sahada
0 “Best effort” — bir kez gönder, kaybedersen kaybet düşük önem, sık veri
1 “En az bir kez” — teslim olana kadar tekrar çoğu izleme verisi
2 “Tam olarak bir kez” — dört el sıkışma kritik, yinelenemez veri

O “kaybolan packet” vakası, QoS 0 ile yaşandı: bir mesaj, zayıf bağlantıda düştü ve geri gelmedi. QoS 1’e çevirince, broker teslim alana kadar gateway tekrar gönderdi. QoS 2, yinelenmesinin zararlı olduğu durumlar içindir — çoğu endüstriyel izlemede QoS 1 yeterlidir.

Retained ve LWT: Sessizliğin Mesajı

LWT, “cihaz kayboldu”nun pasif algılanmasını aktif bildirime çevirir — MQTT’nin sahadaki en değerli özelliğidir.

RS-485 ve Modbus: Eski Sahayı Taşıma

MQTT, saha seviyesinde bir protokol değildir; ağ/bulut seviyesindedir. Eski 20 yıllık RS-485 Modbus hattını buluta taşımak, bir gateway ile olur:

  1. Gateway, RS-485 üzerinde Modbus RTU ile transmitter’ları okur.
  2. Okuduğu değerleri MQTT topic’lerine çevirir (publish).
  3. Bulut/SCADA, o topic’lere subscribe olur.

Yani Modbus “sahada ne”yi, MQTT “buluta nasıl”yı söyler. Aradaki gateway, iki dünyanın çevirmenidir. Bu mimari, “eski sahayı sökme” maliyetinden kaçınır — o 12 transmitter, kablo dahil, yerinde durur.

MQTT Nerede Kullanılır, Ne Zaman Değil?

Kullanılır: uzaktan izleme/telemetri, bulut entegrasyonu, dağıtık sensör toplama, durum bildirimi (LWT), edge + cloud mimarileri.

Kullanılmaz: sert gerçek zamanlı kontrol (döngü 1 ms altı) — o, PROFINET/EtherCAT işidir. MQTT, ms-cm mertebesinde gecikme toleransı olan izleme için doğrudur.

Güvenlik

MQTT, varsayılan olarak düz metindir (port 1883). Endüstride:

Bu üçlü yoksa, MQTT “açık bir çöp kutusudur” — herkes her topic’i dinler ve yazabilir.

PLC’ye mi Yeni Başlıyorsun?

MQTT, PLC’nin bulutla konuştuğu dildir — onu anlamak, verinin sahadan buluta nasıl aktığını bilmektir. Eğitim programı sayfasında müfredat; iletişim sayfasından kendi mimarinize özel seçim yapabiliriz. Veri modelinin bir üst katmanı için: OPC UA (PubSub over MQTT ile buluşur).


O sessiz gece, bana MQTT’nin asıl dersini verdi: bağlantı, veri değil, durumdur. Gateway düştüğünde, asıl mesele kaybolan packet değil, kimse anlamamasıydı. LWT, o sessizliği bir mesaja çevirdi. Bir istemciye “sen düşersen ne yayınla?” diye sorduğun gün, MQTT — tıpkı o sabah olduğu gibi — senin yerine konuşmaya başlar.