MQTT Protokolü

Nesnelerin İnterneti (IoT) ekosistemi büyüdükçe, milyarlarca cihazın birbiriyle nasıl hızlı, güvenli ve minimum kaynak tüketerek haberleşeceği sorusu kritik bir hale geldi. İşte bu noktada, IoT projelerinin vazgeçilmez standardı olan MQTT (Message Queuing Telemetry Transport) protokolü devreye giriyor.

Peki, MQTT nedir, neden bu kadar popülerdir ve mimarisi nasıl çalışır? Gelin, mühendislik mantığıyla derinlemesine inceleyelim.

MQTT Nedir?

MQTT, bant genişliğinin düşük, gecikme sürelerinin yüksek veya ağ bağlantılarının güvenilmez olduğu durumlar için tasarlanmış, Publish/Subscribe (Yayınla/Abone Ol) modeline dayalı, son derece hafif (lightweight) bir ağ protokolüdür.

1999 yılında Andy Stanford-Clark (IBM) ve Arlen Nipper (Eurotech) tarafından petrol boru hatlarındaki sensörlerin uydular üzerinden haberleşmesi amacıyla geliştirilmiştir. Bugün ise akıllı ev sistemlerinden endüstriyel otomasyona (IIoT) kadar geniş bir yelpazede standart protokol olarak kabul görmektedir.

MQTT Mimarisi ve Çalışma Mantığı

MQTT, geleneksel HTTP protokolündeki gibi bir İstemci-Sunucu (Client-Server) ilişkisi yerine, mesajların dağıtımını optimize eden bir aracı mimarisi kullanır. Bu mimaride üç temel bileşen bulunur:

1. Publisher (Yayıncı)

Veriyi üreten ve belirli bir konu başlığı (Topic) altında sisteme gönderen istemcidir. Örneğin; bir sıcaklık sensörü oda sıcaklığını ölçer ve bu veriyi yayınlar.

2. Subscriber (Abone)

Belirli veri başlıklarını dinleyen ve o başlıktan mesaj geldiğinde bu veriyi alan istemcidir. Örneğin; merkezi bir kontrol paneli veya veri tabanı sunucusu, sıcaklık verilerini kaydetmek için ilgili konuya abone olur.

3. Broker (Aracı)

Sistemin kalbidir. Yayıncılardan gelen tüm mesajları alır, filtreler ve hangi konuya hangi abonelerin kayıtlı olduğunu kontrol ederek mesajları doğru adreslere yönlendirir. En popüler MQTT Broker yazılımları arasında Mosquitto, EMQX ve HiveMQ yer alır.

MQTT’nin Temel Kavramları

MQTT protokolünü verimli kullanmak için şu üç yapı taşını iyi anlamak gerekir:

Topics (Konu Başlıkları)

Mesajların yönlendirileceği klasör yolları gibi düşünülebilir. Hiyerarşik bir yapısı vardır ve / işareti ile ayrılır.

  • Örnek: ev/salon/sicaklik

Aboneliklerde esneklik sağlamak için wildcard (joker) karakterler kullanılabilir:

  • + (Tek Seviyeli): ev/+/sicaklik (Salon, mutfak gibi sadece bir alt kırılımı kapsar).
  • # (Çok Seviyeli): ev/# (Ev başlığı altındaki tüm alt konuları ve verileri kapsar).

QoS (Quality of Service – Hizmet Kalitesi)

MQTT, mesaj iletim güvencesini üç farklı seviyede sunar. Ağ kalitesine ve verinin kritiklik durumuna göre doğru QoS seçilmelidir:

QoS SeviyesiTanımTeslimat GarantisiBant Genişliği Tüketimi
QoS 0En fazla bir kez (At most once)Garanti yok. Mesaj gönderilir, ulaşıp ulaşmadığı kontrol edilmez.En Düşük
QoS 1En az bir kez (At least once)Mesajın ulaştığından emin olunur ancak mükerrer (aynı mesajdan birden fazla) gidebilir.Orta
QoS 2Tam olarak bir kez (Exactly once)Mesajın tam olarak bir kez ve güvenli şekilde ulaştığı doğrulanır.En Yüksek

Retained Messages (Tutulan Mesajlar)

Bir yayıncı, gönderdiği mesajı “Retained” olarak işaretlerse, Broker bu mesajı hafızasında tutar. O konuya yeni abone olan bir cihaz, geçmiş mesajların gelmesini beklemek yerine, bağlanır bağlanmaz bu son tutulan mesajı alır. Cihazların ilk açılış durumlarını (state) senkronize etmek için idealdir.

Neden HTTP Değil de MQTT?

Web dünyasının hakimi olan HTTP, IoT senaryolarında neden yetersiz kalır? İşte aralarındaki temel farklar:

  • Header Yükü: HTTP her istekte büyük başlık bilgileri (headers) taşırken, MQTT paket başlıkları sadece 2 byte gibi ultra küçük boyutlardan başlayabilir.
  • Bağlantı Maliyeti: HTTP her talepte yeni bir TCP bağlantısı açıp kapatma eğilimindedir (keep-alive kullanılsa bile ek yükü fazladır). MQTT ise tek bir TCP bağlantısını açık tutarak sürekli çift yönlü haberleşme sağlar.
  • Enerji Tüketimi: Küçük paket boyutu ve düşük işlemci gücü gereksinimi sayesinde MQTT, pille çalışan ESP32 gibi mikrodenetleyiciler için biçilmiş kaftandır.

MQTT Kullanım Alanları

  • Akıllı Ev Otomasyonu: Home Assistant benzeri sistemlerde cihazların anlık durum iletimi.
  • Endüstriyel IoT (IIoT): Fabrika sahasındaki sensör verilerinin SCADA sistemlerine veya buluta taşınması.
  • Telemetri ve Takip: Araç takip sistemlerinde anlık konum ve hız verilerinin iletimi.

Sonuç

MQTT; hafifliği, esnek hiyerarşik yapısı ve düşük kaynak tüketimi ile IoT projelerinin omurgasını oluşturmaktadır. Eğer bant genişliğinin sınırlı olduğu, donanım kaynaklarının verimli kullanılması gereken bir mimari inşa ediyorsanız, MQTT şu anki en optimize çözümdür.

Anahtar Kelimeler (SEO için tags): MQTT nedir, MQTT Broker, IoT protokolleri, Mosquitto, Publish Subscribe, QoS nedir, Nesnelerin İnterneti haberleşme.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir