MQTT Nedir? Nasıl Çalışır?

IoT Analytics’in “Status of the IoT Spring 2022” başlıklı araştırma raporuna göre, IoT pazarının 2022 yılına kadar %18 büyüyerek 14,4 milyar aktif bağlantıya ulaşması bekleniyor.

Böylesine büyük ölçekli IoT talebiyle birlikte, kitlesel cihaz erişimi ve cihaz yönetimi ağ bant genişliği, iletişim protokolleri ve platform hizmet mimarisi için büyük zorluklar ortaya çıkarmaktadır. IoT protokolleri, IoT cihaz iletişimindeki birkaç temel sorunu ele almalıdır: karmaşık ve güvenilmez ağ ortamı, küçük bellek ve flash bellek kapasitesi ve sınırlı işlem kapasitesi.

MQTT protokolü bu sorunları ele almak için oluşturulmuştur. Uzun yıllar süren geliştirmeden sonra, hafiflik, verimlilik, güvenilir mesajlaşma, büyük bağlantı desteği ve güvenli çift yönlü iletişim avantajları ile IoT endüstrisi için tercih edilen protokol haline gelmiştir.

Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.

MQTT Nedir?

Message Queuing Telemetry Transport veya MQTT, düşük bant genişliği ve kararsız ağ ortamlarındaki IoT uygulamaları için özel olarak tasarlanmış, yayınla/abone ol modeline dayalı hafif bir mesajlaşma protokolüdür. Minimum kod ile ağa bağlı cihazlar için gerçek zamanlı güvenilir mesajlaşma hizmetleri sağlayabilir. MQTT protokolü IoT, mobil internet, akıllı donanım, araçların interneti, akıllı şehirler, teletıp, güç, petrol, enerji ve diğer alanlarda yaygın olarak kullanılmaktadır.

MQTT, IBM’den Andy Stanford-Clark ve Arlen Nipper (o zamanlar Arcom Systems, daha sonra Eurotech’in CTO’su) tarafından oluşturulmuştur. Nipper’a göre MQTT aşağıdaki özelliklere sahip olmalıdır:

  • Basit ve uygulaması kolay
  • QoS desteği (karmaşık cihaz ağ ortamı)
  • Hafif ve bant genişliği tasarrufu (çünkü o zamanlar bant genişliği pahalıydı)
  • Veri ilgisiz (Payload veri formatı önemli değildir)
  • Sürekli oturum farkındalığı (cihazın çevrimiçi olup olmadığını her zaman bilir)

MQTT’nin Avantajları

MQTT’nin en önemli avantajları aşağıdaki şekildedir:

  • MQTT, TLS kullanan basit bir mesaj şifreleme mesajına ve OAuth gibi modern protokolleri kullanan istemci kimlik doğrulamasına sahiptir.
  • MQTT, güvenilir ve profesyonel bir mesaj dağıtım sistemine sahiptir, bu nedenle birçok IoT kullanım durumunda çok tercih edilir. MQTT ayrıca tanımlanmış hizmet kalitesi seviyelerine sahiptir.
  • MQTT istemcileri hafiftir ve minimum kaynağa ihtiyaç duymaz, bu nedenle küçük mikro denetleyiciler de kullanılabilir ve ağ bant genişliğini nispeten kolaylıkla optimize edebilir.
  • MQTT protokolü kolayca ölçeklenebilir ve bir milyon IoT cihazına ve sensörüne kolayca bağlanabilir.
  • MQTT, cihazdan buluta ve buluttan cihaza mesajlaşma akışı sağlayarak bir grup IoT cihazına mesaj yayınlamayı basitleştirir.
  • MQTT, IoT cihazlarının üzerinden bağlandığı güvenilir olmayan hücresel ağlar sorununu en aza indirir. Protokol, istemcinin merkezi sunucu ile yeniden bağlanması için harcanan zamanı azaltır ve kalıcı oturumları destekler.

MQTT’nin Dezavantajları

MQTT’nin en önemli dezavantajları aşağıdaki şekildedir:

  • CoAP ile karşılaştırıldığında daha yavaş iletim döngülerine sahiptir, 250’den fazla cihaza sahip bir sistemi yönetmek istiyorsanız, MQTT’nin sizin için uygun olmayabilir.
  • MQTT, öncelikle şifrelenmemiş olan Taşıma Katmanı Güvenliği veya Güvenli Yuva Katmanı (TLS/SSL) kullandığından güvenlik şifrelemesi eksikliği vardır.
  • MQTT, kaynak keşfi için istikrarlı bir seçenek olmayan esnek bir abonelik sistemi üzerinde çalışır.
  • MQTT’nin dağıtımı söz konusu olduğunda daha yüksek ek yükler vardır. Ayrıca, çoklu yayın MQTT desteği yoktur.
  • Küresel olarak ölçeklenebilir bir ağ oluşturmak zordur ve bu da MQTT protokolü ile diğer rakiplere göre daha zordur.

MQTT’nin Kullanım Alanları

MQTT, IoT’de en yaygın kullanılan protokollerden biridir ve farklı amaçlara hizmet etmek için akıllı evlerde, işleme tesislerinde, dijital sağlıkta ve diğer endüstri dikeylerinde kullanılır.

Endüstriyel IoT veya IIoT için oluşturulan bazı popüler MQTT destekli platformlar arasında IBM Watson, AWS IoT, ThingWorx, Braincube ve Fogwing bulunmaktadır. Bunlar IoT altyapı bağlantısını etkinleştirmek için MQTT uzantısı sunar.

Aşağıdaki listede MQTT kullanım örneklerini bulabilirsiniz:

1. Giyilebilir ürünler

Akıllı saatler gibi giyilebilir cihazlar da iletişim için MQTT kullanır. Bu cihazlar kalp atış hızı ve adım sayısı gibi çeşitli verileri toplar ve bunları bir akıllı telefon veya bulut sunucusundaki bir MQTT aracısına yayınlar. Cihazın konusuna abone olan sunucu, verileri alır ve görüntüleyebilir veya daha fazla analiz için kullanabilir.

Örneğin, bir fitness takip cihazı siz egzersiz yaparken kalp atış hızı verilerinizi yayınlayabilir. Sunucu verileri alır ve kalp atış hızınız güvenli bir sınırı aşarsa sizi uyarabilir. Bu, gerçek zamanlı sağlık takibini mümkün kılar ve potansiyel olarak hayat kurtarabilir.

2. Akıllı tarım

Tarımsal işletmelerin akıllı teknoloji kullanımı, verimliliklerini artırma ve genel verimi yükseltme potansiyeline sahiptir. Akıllı tarım çözümleri nem, pH, hava kalitesi, sıcaklık gibi hava ve toprak koşullarının tutarlı bir şekilde izlenmesini ve raporlanmasını sağlar.

3. Akıllı ölçüm

Akıllı ölçüm, enerji ve kamu hizmeti sektörünü kapsar. Akıllı sayaçlar enerji tüketimi hakkında geleneksel sayaçlardan daha fazla ayrıntı toplayabilir. Sayaçla birlikte uygulanan yazılıma bir MQTT istemcisi yerleştirilebilir ve bu istemci, garantili mesaj teslim sistemiyle gerçek zamanlı olarak veri iletmek için kullanılabilir. Ev sahipleri de enerji tüketimini etkin bir şekilde yönetebilir ve faturalandırmayı zamanla daha doğru hale getirebilir.

4. Uzaktan algılama

Uzaktan izleme ortamları için kullanılan sensörler genellikle internet bağlantısının zayıf olduğu konumlardan veya alanlardan çalışan düşük güçlü çözümlerdir. MQTT, daha düşük öncelikli veri aktarım gereksinimlerine sahip cihazlar arasında iletişime olanak tanıdığı için harika bir seçenektir.

5. Bağlantılı arabalar

MQTT araç telematik sistemlerinde araçlar ve merkezi bir sunucu arasındaki iletişimi kolaylaştırmak için kullanılır. Bu sistemlerde, araçtan konum, hız ve yakıt seviyesi gibi veriler toplanır ve sunucudaki bir MQTT aracısına yayınlanır. Aracın konusuna abone olan sunucu verileri alır ve filo yönetimi, araç bakımı ve sürücü güvenliği gibi çeşitli amaçlar için kullanabilir.

Örneğin, bir teslimat kamyonu konum verilerini sunucuda yayınlayabilir. Sunucu bu verileri kamyonun rotasını takip etmek ve müşteriye gerçek zamanlı güncellemeler sağlamak için kullanabilir. Bu, müşteri memnuniyetini artırır ve teslimat deneyimini geliştirir.

6. Endüstriyel IoT

MQTT, Endüstriyel IoT (IIoT) uygulamalarında da yaygın olarak kullanılmaktadır. Bu uygulamalarda, bir fabrikadaki çeşitli sensörler ve cihazlar, cihazları izleyen ve kontrol eden merkezi bir sunucuya bağlanır.

Örneğin, bir fırındaki sıcaklık sensörü, okumalarını sunucudaki bir MQTT aracısına yayınlayabilir. Sensörün konusuna abone olan sunucu, okumaları alır ve sıcaklık belirli bir eşiği aşarsa uygun eylemi gerçekleştirebilir. Bu, fabrika operasyonlarının gerçek zamanlı olarak izlenmesini ve kontrol edilmesini sağlayarak verimliliği ve güvenliği artırır.

7. Ev otomasyon sistemleri

MQTT, hafif yapısı ve kullanım kolaylığı nedeniyle ev otomasyon sistemlerinde geniş çapta benimsenmiştir. Bu sistemlerde ışıklar, termostatlar ve güvenlik kameraları gibi cihazlar, bir akıllı telefon uygulaması aracılığıyla uzaktan kontrol edilebilen merkezi bir hub’a bağlanır. MQTT, hub ile cihazlar arasındaki iletişimi kolaylaştırmak için kullanılır.

Örneğin, ışıkları açmak için uygulamayı kullandığınızda, uygulama hub üzerinde çalışan MQTT broker’ında bir mesaj yayınlar. İlgili konuya abone olan ışıklar mesajı alır ve açılır. Bu, cihazların gerçek zamanlı olarak kontrol edilmesini sağlar ve kullanıcı deneyimini geliştirir.

MQTT Mimarisi

MQTT’de IoT’ye bağlı cihazlar istemci olarak bilinir ve veri iletimi ve istemci iletişimi görevini üstlenen “aracı” adı verilen bir sunucu ile iletişim kurar.

Bir istemci herhangi bir bilgi yayınlamak istediğinde, bunu belirli bir konuda yapar ve ardından aracı bilgiyi o konuya abone olan tüm istemcilere gönderir.

Bir istemci hem yayıncı hem de abone olabilir. Bir aracı, iletilmeden önce mesajları etiketlere ayırır. Ayrıca mesajları filtreler ve her mesaja kimin abone olduğunu belirler. Mesajların göndericisi ve alıcısı birbirinden ayrılmıştır.

MQTT’nin Uygulanması

Bir MQTT istemcisi, MQTT kütüphanesini çalıştıran ve MQTT aracısına bağlanan herhangi bir cihaz olabilir. Birincisi, kimlik doğrulama anahtarlarını kullanarak aracıya bağlanır.

İstemcinin ana bileşeni, mesajları bir konuya yayınlamak ve ardından bunları aracıya göndermek için kullanılan komut dosyasıdır. Tercih ettiğiniz programlama diline bağlı olarak çeşitli MQTT istemci kütüphaneleri kullanılabilir.

Daha önce de belirtildiği gibi, bir MQTT aracısı protokolün çekirdeğini oluşturur ve milyonlarca IoT cihazını idare eder. Aracı, uygulamaya bağlı olarak tüm mesajları alır, filtreler ve iletir.

IoT Kullanım Durumları için MQTT 5.0 vs MQTT 3.1.1

MQTT 3.1.1’in yayınlanmasından ve bir OASIS standardı haline gelmesinden dört yıl sonra MQTT 5.0 yayınlandı. Bu büyük gelişme ve yükseltme, sadece mevcut endüstri ihtiyaçlarını karşılamak için değil, aynı zamanda endüstrinin gelecekteki gelişimine hazırlanmak için tasarlanmıştır.

MQTT 5.0, modern IoT uygulamalarının ihtiyaçlarını daha iyi karşılayan oturum/mesaj gecikmesi, neden kodları, konu takma adları, kullanıcı özellikleri, paylaşılan abonelikler ve benzeri birçok temel özellik ekler. Büyük sistemlerin performansını, kararlılığını ve ölçeklenebilirliğini artırır. Şu anda, MQTT 5.0 çoğu IoT kuruluşu için tercih edilen protokol haline gelmiştir ve MQTT’ye yeni başlayan geliştiricilerin doğrudan bu sürümü kullanması önerilir.

MQTT vs HTTP

HTTP veya Hypertext Transfer Protocol, dünya çapında web üzerinde veri iletişiminin bel kemiğini oluşturan bir protokoldür. HTTP bir istek-yanıt protokolüdür, yani istemci sunucudan veri talep eder ve sunucu talep edilen veriyle yanıt verir.

Buna karşılık, MQTT daha önce de belirtildiği gibi bir yayınla-abone ol protokolüdür. Bu, MQTT cihazlarının sunucuyla sürekli bir bağlantı kurduğu ve verilerin kullanılabilir hale geldikçe cihazlara gönderildiği anlamına gelir. Bu, verilerin gerçek zamanlı olarak gönderileceği senaryolarda HTTP’den daha verimli olabilir.

MQTT ve HTTP karşılaştırması

  • Minimum mesaj boyutu 2 bayt olan MQTT, HTTP’ye göre daha az ağ yükü alır.
  • Hem MQTT hem de HTTP TCP bağlantılarını kullanabilir ve istikrarlı ve güvenilir ağ bağlantıları elde edebilir.
  • MQTT yayınla-abone ol modeline dayanırken HTTP istek-yanıt modeline dayanır, bu nedenle MQTT çift yönlü iletişimi destekler.
  • MQTT mesajları gerçek zamanlı olarak gönderebilir, ancak HTTP veri güncellemeleri için yoklamaya ihtiyaç duyar.
  • MQTT durumsaldır, ancak HTTP durumsuzdur.
  • MQTT, HTTP’nin başaramadığı anormal bağlantı kopmalarından bağlantıları kurtarabilir.

MQTT vs XMPP

XMPP veya Extensible Messaging and Presence Protocol, başlangıçta sohbet gibi gerçek zamanlı iletişim için tasarlanmış bir iletişim protokolüdür. XMPP son derece genişletilebilirdir ve IoT uygulamalarında kullanılmak üzere benimsenmiştir.

XMPP ve MQTT’nin her ikisi de merkezi bir sunucu (broker) kullanır ve her ikisi de yayınla-abone ol modelini destekler. MQTT protokolü tasarım açısından basit ve hafif, yönlendirme açısından ise esnektir. Mobil internet ve IoT mesajlaşma alanlarında PC dönemi XMPP protokolünün yerini tamamen alacaktır.

MQTT ve XMPP karşılaştırması

  • MQTT mesajları küçüktür ve kodlanması ve çözülmesi kolaydır, XMPP ise ağır XML’e dayanır ve mesajlar etkileşim için büyük ve hantaldır.
  • MQTT, XMPP’nin JID tabanlı noktadan noktaya mesaj yönlendirmesinden daha esnek olan bir yayınla-abone ol modeline dayanmaktadır.
  • MQTT, JSON, ikili vb. gibi farklı mesaj türlerini destekler. XMPP mesajları taşımak için XML kullanır ve binary Base64 kodlanmalı ve diğer yöntemlerle işlenmelidir.
  • MQTT, QoS aracılığıyla güvenilir mesaj iletimini garanti eder; XMPP protokolü benzer bir mekanizma tanımlamaz.

MQTT ve CoAP Arasındaki Fark

MQTT, merkezi bir sunucu aracılığıyla birden fazla istemci arasında mesaj iletmek için kullanışlıyken, CoAP istemci ve sunucu arasında durum bilgilerini aktarır.

MQTT mesajları etiketlemek için destek sunmaz ve herhangi bir amaç için kullanılabilir. Ancak, iletişimi sağlamak için tüm istemcilerin mesaj formatlarını önceden bilmesi gerekir.

Öte yandan CoAP, içerik keşfi ve müzakere için yerleşik destek sunarak cihazların veri alışverişi için yollar bulmak üzere birbirlerini araştırmalarını sağlar.

Hem MQTT hem de CoAP mükemmel protokollerdir. Birçok avantajları vardır.

  • CoAP, aktarım mekanizması için durum bilgisi olmayan UDP’yi kullanırken, MQTT durum bilgisi olan TCP’yi kullanır.
  • CoAP öncelikle bire bir iletişim için tasarlanmışken, MQTT’nin yayınla-abone ol modeli bire çok veya çoka çok durumlar için idealdir.
  • CoAP, hizmetlerin ve kaynakların yerleşik keşfini içerirken, MQTT önceden tanımlanmış bir konu ad alanına dayanır.
  • CoAP, MQTT’de bulunmayan özellikler olan çoklu yayın, proxy ve önbelleğe almayı destekler.

MQTT ve CoAP Arasındaki Benzerlikler

İki protokol arasındaki büyük farklılıklara rağmen MQTT ve CoAP birçok açıdan benzerdir. Yeni başlayanlar için, her ikisi de açık standartlardır ve doğal olmayan ortamlarda çalışmak için HTTP’den daha iyidirler.

MQTT ve CoAP eşzamansız iletişime olanak tanıyarak iki cihazın aynı anda bulunmadan iletişim kurmasını ve yürütme için tanımlanmış bir alana sahip olmasını mümkün kılar.

Bu nedenle, protokollerden herhangi birini seçmeden önce, iş gereksinimlerini bilmeniz, protokollerin artılarını ve eksilerini fark etmeniz ve gereksinimlerinize en uygun olanı seçme yeteneğine sahip olmanız bir zorunluluktur.

Bulutistan hizmetlerinin detaylarına ulaşmak için tıklayınız.

MQTT vs. AMQP

AMQP veya Advanced Message Queuing Protocol, sağlam mesajlaşma yetenekleri sağlayan bir protokoldür. AMQP ikili bir protokoldür, bu da onu MQTT ve HTTP gibi metin tabanlı protokollerden daha verimli hale getirir.

AMQP, mesaj yönlendirme, kuyruklama, yönlendirme, güvenilirlik ve güvenlik gibi birçok özelliği kullanıma hazır olarak sunar. Bununla birlikte, AMQP’nin karmaşıklığı kısıtlı ortamlarda bir dezavantaj olabilir. Hafif ve basit olan MQTT, bu tür senaryolar için daha uygundur.

MQTT ve AMQP karşılaştırması

  • AMQP, MQTT’den daha yüksek bir protokol ek yüküne sahiptir, bu da MQTT’yi kısıtlı ortamlar için daha uygun hale getirir.
  • MQTT’nin konu tabanlı filtrelemesi, AMQP’nin değişimlerine ve bağlama anahtarlarına kıyasla daha basit ve sezgiseldir.
  • MQTT daha hafif bir protokoldür ve AMQP’ye kıyasla daha az özelliğe sahiptir, ancak bu, dağıtımı daha basit olduğu ve birçok IoT uygulaması için daha yüksek performans sağladığı anlamına gelir.
  • AMQP eşler arası yeteneğe sahipken, MQTT kesinlikle broker merkezli bir yayınla-abone ol protokolüdür.
  • MQTT yerleşik mesaj onayına sahip değildir ve açık bir PUBACK gerektirir, oysa AMQP yerleşik bir mesaj onay özelliğine sahiptir.
Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Önceki Yazı

MLOps Nedir? Geniş Kapsamlı Rehber

Sonraki Yazı

OSI Modeli Nedir?

İlgili Diğer Yazılar
İletişime Geçin
Kişisel Verilerin Koruması ile ilgili aydınlatma metnini okudum, bu kapsamda bilgilerimin işlenmesini ve saklanmasını kabul ediyorum.
İletişime Geçin
Bulut hizmetleri konusunda yardıma mı ihtiyacınız var? 30 günlük demo talebi için ekibimizle iletişime geçebilirsiniz
Kişisel Verilerin Koruması ile ilgili aydınlatma metnini okudum, bu kapsamda bilgilerimin işlenmesini ve saklanmasını kabul ediyorum.