MQTT 5 Şubat 2026 6 dk okuma

MQTT ile IoT Veri İletimi

Publish/Subscribe modeli, QoS seviyeleri ve IoT platform entegrasyonu. Hafif ve güvenilir mesajlaşma protokolünün temelleri.

IoT ağ bağlantıları ve veri iletimi

Giriş

MQTT (Message Queuing Telemetry Transport), 1999 yılında IBM tarafından geliştirilen, hafif ve güvenilir bir mesajlaşma protokolüdür. Düşük bant genişliği, yüksek gecikme veya güvenilir olmayan ağlar için optimize edilmiştir.

Günümüzde IoT uygulamalarının de facto standardı haline gelen MQTT, milyarlarca cihazın bulut platformlarıyla iletişim kurmasını sağlamaktadır.

Neden MQTT?

01
Hafif Protokol
Minimum 2 byte header. HTTP'ye göre 10 kat daha az overhead. Kısıtlı kaynaklı cihazlar için ideal.
02
Güvenilir İletim
3 farklı QoS seviyesi. Mesaj kaybını önleyen mekanizmalar. Otomatik yeniden bağlanma.
03
Ölçeklenebilirlik
Pub/Sub modeli ile binlerce cihazı tek broker üzerinden yönetme. Cihazlar birbirini bilmek zorunda değil.
04
Güvenlik
TLS/SSL şifreleme desteği. Username/password ve sertifika tabanlı kimlik doğrulama.

Publish/Subscribe Modeli

MQTT, geleneksel istemci-sunucu modelinden farklı olarak Publish/Subscribe mimarisini kullanır.

MQTT Mimarisi
Publishers
Sensörler, Gateway'ler
MQTT Broker
Mesaj Yönlendirme
Subscribers
SCADA, Dashboard, DB
Temel Kavramlar
  • Publisher: Mesaj yayınlayan cihaz (sensör, gateway)
  • Subscriber: Mesajlara abone olan istemci (SCADA, uygulama)
  • Broker: Mesajları yöneten merkezi sunucu (Mosquitto, HiveMQ)
  • Topic: Mesajların kategorize edildiği hiyerarşik adres

Topic Yapısı

MQTT'de mesajlar topic adı verilen hiyerarşik adresler üzerinden yönlendirilir:

Topic Örnekleri
fabrika/hat1/sicaklik fabrika/hat1/basinc fabrika/hat2/sicaklik bina/kat3/oda5/nem

Wildcard Karakterleri

Wildcard Açıklama Örnek
+ Tek seviye eşleştirme fabrika/+/sicaklik
# Çoklu seviye eşleştirme fabrika/#
Dikkat

# wildcard'ı sadece topic sonunda kullanılabilir. fabrika/#/sicaklik geçersizdir!

QoS Seviyeleri

MQTT, mesaj teslimatı için üç farklı güvenilirlik seviyesi sunar:

QoS 0
At Most Once
Mesaj en fazla bir kez iletilir. Onay beklenmez. En hızlı, mesaj kaybı olabilir.
QoS 1
At Least Once
Mesaj en az bir kez iletilir. PUBACK onayı beklenir. Tekrarlı mesaj olabilir.
QoS 2
Exactly Once
Mesaj tam olarak bir kez iletilir. 4 aşamalı el sıkışma. En yavaş, en güvenilir.
Pratik İpucu

IoT uygulamalarının büyük çoğunluğunda QoS 1 yeterlidir. QoS 2 sadece gerçekten kritik ve duplikasyona toleranssız durumlarda kullanılmalıdır.

Özel Mesaj Türleri

Retained Message

Broker, retain=true ile gönderilen son mesajı saklar. Yeni bir subscriber bağlandığında, topic'in son değerini hemen alır.

Last Will and Testament (LWT)

Cihazın beklenmedik şekilde bağlantısı koparsa, broker tarafından otomatik yayınlanan mesajdır. Cihaz durumu izleme için kullanılır.

Python
# LWT tanımlama client.will_set( topic="device/status", payload="offline", qos=1, retain=True )

MQTT Broker'lar

Broker Tip Kullanım
Mosquitto Açık Kaynak Küçük-orta projeler, edge
HiveMQ Ticari Büyük ölçekli IoT
EMQX Açık Kaynak Yüksek trafikli sistemler
AWS IoT Core Bulut AWS ekosistemi
Azure IoT Hub Bulut Microsoft ekosistemi

Python Örneği

publisher.py
import paho.mqtt.client as mqtt import json, time client = mqtt.Client() client.connect("broker.example.com", 1883) while True: data = {"sicaklik": 25.5, "nem": 60} client.publish("fabrika/hat1/sensor01", json.dumps(data), qos=1) time.sleep(10)
subscriber.py
import paho.mqtt.client as mqtt import json def on_message(client, userdata, msg): data = json.loads(msg.payload) print(f"Sıcaklık: {data['sicaklik']}°C") client = mqtt.Client() client.on_message = on_message client.connect("broker.example.com", 1883) client.subscribe("fabrika/+/sensor01", qos=1) client.loop_forever()

Güvenlik

Sonuç

MQTT, IoT uygulamaları için tasarlanmış hafif, güvenilir ve ölçeklenebilir bir protokoldür. Publish/Subscribe modeli, esnek QoS seviyeleri ve geniş ekosistem desteği ile endüstriyel IoT projelerinin vazgeçilmez bileşeni haline gelmiştir.

StepIO + MQTT
Saha verilerinizi MQTT ile buluta taşıyın.
StepIO'yu İncele