MQTT Protokolü Nedir ve Nasıl Çalışır?
Sözlük

MQTT Protokolü Nedir ve Nasıl Çalışır?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

MQTT, IoT cihazlarının broker üzerinden hafif mesajlarla haberleştiği protokoldür. Yayın-abonelik modelini, QoS seviyelerini ve kullanım alanlarını öğrenin.

MQTT nedir?

MQTT, düşük bant genişliği ve kısıtlı donanım koşullarında çalışmak üzere tasarlanmış, hafif bir mesajlaşma protokolüdür. Cihazlar arasında doğrudan bağlantı kurmak yerine mesajlar bir aracı sunucu üzerinden dağıtılır. Bu yapı, sensörlerden ve makinelerden gelen küçük veri parçalarının sık ve güvenilir biçimde iletilmesi gereken Nesnelerin İnterneti (IoT) uygulamalarında yaygın olarak tercih edilir.

Protokolün temel fikri basittir: mesajı gönderen taraf, mesajı kimin alacağını bilmez; mesajı alan taraf da kimin gönderdiğini bilmek zorunda değildir. Taraflar yalnızca ortak bir konu (topic) üzerinde buluşur. Bu gevşek bağlılık, sistemlere yeni cihaz eklemeyi ve cihazları değiştirmeyi kolaylaştırır.

Yayın-abonelik modeli ve broker nasıl çalışır?

MQTT, istemci-sunucu ilişkisinden farklı olarak yayın-abonelik (publish-subscribe) modeline dayanır. Sistemde şu roller bulunur: mesaj yayımlayan istemci, mesaj almak isteyen abone istemci ve ikisinin arasında duran broker.

Örneğin bir fabrikada sıcaklık sensörü, ölçümünü bir konu başlığı altında broker'a yayımlar. Pano uygulaması ve alarm servisi bu konuya abone olmuştur. Broker, mesajı abone olan herkese iletir. Sensör, panoyu ya da alarm servisini hiç tanımaz; yarın yeni bir servis aynı konuya abone olursa sensör tarafında hiçbir değişiklik gerekmez.

Konular eğik çizgiyle ayrılmış hiyerarşik adlardır, örneğin tesis, hat ve cihaz düzeyini yansıtan bir yapı. Aboneler joker karakterlerle birden çok konuyu tek seferde izleyebilir. Konu adlarının baştan düzgün tasarlanması, sistemin sonradan büyümesi açısından önemlidir.

MQTT neden hafiftir, güvenilirliği nasıl sağlanır?

Protokolün mesaj başlıkları çok küçüktür ve bağlantı, kopsa bile yeniden kurulabilen kalıcı bir oturum olarak tutulur. Bu, pili ve ağ kapasitesi sınırlı cihazlar için önemlidir.

Güvenilirlik, hizmet kalitesi (QoS) seviyeleriyle ayarlanır. En düşük seviyede mesaj en fazla bir kez gönderilir ve kaybolabilir; orta seviyede mesajın en az bir kez ulaşması sağlanır ancak tekrarlar olabilir; en yüksek seviyede mesaj tam bir kez teslim edilir. Daha yüksek güvence daha fazla mesaj trafiği demektir, bu yüzden seçim verinin önemine göre yapılır. Anlık sıcaklık okuması için en düşük seviye yeterli olabilirken, bir makineyi durduran komut için yüksek seviye gerekir.

Protokol ayrıca şu özellikleri sunar. Tutulan mesaj (retained message), konunun son değerini broker'da saklar; sonradan abone olan yeni istemci en güncel değeri hemen alır. Son istek (last will) mesajı ise bir istemci beklenmedik biçimde koptuğunda broker'ın diğer taraflara otomatik bildirim göndermesini sağlar.

MQTT ile HTTP arasındaki fark nedir?

HTTP istek-cevap düzeniyle çalışır: istemci sorar, sunucu yanıtlar. Veri değiştiğinde haberi alabilmek için istemcinin sürekli sorması gerekir. MQTT'de ise değişen veri, abone olunmuş bağlantı üzerinden hemen aktarılır. Bağlantı açık kaldığı için her mesajda yeni bağlantı kurmanın yükü de yoktur.

Bu fark, çok sayıda cihazın az miktarda veriyi sık göndermesi gereken senaryolarda belirleyicidir. Buna karşılık bir sayfa ya da dosya almak gibi tek seferlik, belge odaklı işlerde HTTP daha uygundur. Pratikte bu protokoller birlikte kullanılır: cihazlar MQTT ile veri yollar, uygulamanın yönetim arayüzü ise HTTP üzerinden çalışır.

MQTT nerede kullanılır ve güvenliği nasıl ele alınır?

Başlıca kullanım alanları şunlardır:

  • Akıllı bina ve ev sistemlerinde sensör ve aydınlatma kontrolü.
  • Fabrikalarda makine verisinin üretim izleme sistemlerine taşınması.
  • Araç takip ve filo yönetimi.
  • Enerji ve sayaç okuma uygulamaları.
  • Mobil uygulamalarda anlık bildirim ve durum güncellemesi.

Sanayide MQTT üzerinde Sparkplug B gibi ek spesifikasyonlar ve Unified Namespace yaklaşımı da kullanılır; amaç farklı sistemlerden gelen verinin ortak bir konu yapısı altında toplanmasıdır.

Güvenlik açısından ağ trafiği TLS ile şifrelenmeli, her cihaz kendi kimliğiyle bağlanmalı ve cihazın hangi konulara yayın yapıp hangilerine abone olabileceği broker üzerinde yetkilendirilmelidir. Varsayılan ayarlarla internete açılmış bir broker ciddi risk taşır.

MQTT Mindset programlarında nerede çalışılır?

IoT Cihaz Yazılımı ve MQTT Protokolü eğitiminde IoT Mimarisi ve MQTT Temelleri, Konu Tasarımı ve Veri Modeli, Dayanıklılık ve Yerel Tamponlama ile Güvenlik ve Cihaz Kimliği modülleri bulunur. MQTT ve Unified Namespace ile Fabrika Veri Mimarisi eğitiminde ise MQTT Temelleri, Sparkplug B Özellikleri ve Unified Namespace Tasarımı başlıkları yer alır.

İlgili Mindset programı

IoT Cihaz Yazılımı ve MQTT Protokolü

Sık sorulanlar

Sık sorulan sorular

MQTT broker nedir ve hangi yazılımlar kullanılır?

Broker, istemcilerden gelen mesajları alıp ilgili konulara abone olanlara ileten sunucu yazılımıdır. Açık kaynak ve ticari birçok broker bulunur. Seçimde beklenen bağlantı sayısı, yüksek erişilebilirlik ihtiyacı ve güvenlik özellikleri dikkate alınır. Üretime geçmeden önce yük altında denenmesi önerilir.

MQTT yalnızca IoT için mi kullanılır?

Köken olarak IoT ve sanayi telemetrisi için doğmuş olsa da hafif ve anlık olması nedeniyle mobil bildirimler, gerçek zamanlı durum güncellemeleri ve mesaj tabanlı entegrasyonlarda da kullanılır. Yine de büyük dosya aktarımı ya da karmaşık sorgu gerektiren işler için uygun bir protokol değildir.

MQTT mesajlarının içeriği ne olmalıdır?

Protokol mesaj gövdesinin biçimini dayatmaz; metin, JSON ya da ikili veri taşıyabilir. Önemli olan ekip içinde ortak bir veri modelinde anlaşmaktır. Zaman damgası, birim ve cihaz kimliği gibi alanların tutarlı yer alması, sonradan verinin analiz edilmesini ve farklı sistemlerle birleştirilmesini kolaylaştırır.

Cihazın bağlantısı koparsa mesajlar kaybolur mu?

Kalıcı oturum ve uygun QoS seviyesi seçildiğinde broker, bağlantısı kopan abone için mesajları tutabilir. Yayımlayan taraf cihazda ise genellikle yerel tampon kullanılır; bağlantı geri geldiğinde biriken veriler sırayla gönderilir. Hangi verinin kaybı göze alınabilir, buna göre tasarım yapılır.