Sözlük · Protokol
MQTT nedir?
Message Queuing Telemetry Transport
MQTT, cihazların bir broker üzerinden topic'lere mesaj yayınladığı ve abone olduğu, düşük bant genişliğinde çalışan hafif bir yayınla/abone ol protokolüdür.
VOLSOFT mühendislik ekibi ·
MQTT, cihazların ve uygulamaların birbirine doğrudan bağlanmak yerine merkezi bir broker üzerinden haberleştiği, yayınla/abone ol (publish/subscribe) modelinde çalışan hafif bir mesajlaşma protokolüdür. Mesajlar topic adı verilen hiyerarşik adreslere yayınlanır; o topic’e abone olan herkes mesajı alır. Az bant genişliği ve kararsız bağlantılarda bile çalışabildiği için IoT ve endüstriyel veri taşımada yaygın olarak kullanılır.
MQTT ne işe yarar?
MQTT, veri üreten taraf ile veriyi kullanan tarafı birbirinden ayırır. Bir gateway makine verisini tek bir yere yayınlar; MES, dashboard, historian ve analiz uygulamaları aynı veriye birbirinden habersiz abone olur. Yeni bir tüketici eklemek için sahadaki cihaza dokunmak gerekmez. Bu yapı, tesis genelinde tek bir veri omurgası kurmayı amaçlayan Unified Namespace (UNS) yaklaşımının da temelidir.
Nasıl çalışır?
MQTT, TCP üzerinde çalışır. Varsayılan portlar şifresiz bağlantı için 1883, TLS ile şifreli bağlantı için 8883’tür. Sahada kullanılan sürümler OASIS standardı MQTT 3.1.1 (ISO/IEC 20922) ve MQTT 5.0’dır.
Temel kavramlar:
- Topic:
fabrika/hat1/pres3/sicaklikgibi eğik çizgiyle ayrılan hiyerarşik adres. Aboneler+(tek seviye) ve#(alt seviyelerin tümü) joker karakterlerini kullanabilir. - QoS: Teslim garantisi seviyesi.
- Retained mesaj: Broker, topic’teki son mesajı saklar; yeni abone bağlanır bağlanmaz son değeri alır.
- Last Will (LWT): İstemci beklenmedik şekilde koparsa broker’ın onun adına yayınladığı mesaj; cihazın çevrim dışı olduğunu bildirmek için kullanılır.
| QoS | Anlamı | Tipik kullanım |
|---|---|---|
| 0 | En fazla bir kez, onay yok | Sık gelen ölçümler |
| 1 | En az bir kez, tekrar gelebilir | Sayaç, durum değişikliği |
| 2 | Tam olarak bir kez | Kaybı ve tekrarı kabul edilmeyen olaylar |
MQTT ile OPC UA farkı
OPC UA bir bilgi modeli sunar: bir değerin veri tipi, birimi, hangi makineye ait olduğu sunucuda tanımlıdır. MQTT ise yalnızca taşıma katmanıdır; mesajın içinde JSON mu, Protobuf mu, hangi alanlar olduğu protokol tarafından tanımlanmaz. Bu yüzden MQTT kullanan projelerde topic yapısı ve yük formatı ayrıca standartlaştırılmalıdır. Sparkplug B bu boşluğu doldurmak için geliştirilmiştir. İki protokol birbirinin rakibi değildir; sık görülen mimaride makinelerden OPC UA veya Modbus ile okunan veri, bir gateway tarafından MQTT broker’ına yayınlanır.
Veri toplama açısından dikkat edilmesi gerekenler
- Topic yapısını baştan tasarlayın. Saha, hat, makine, sinyal sırasını izleyen tutarlı bir şema, sonradan yapılacak düzeltmelerden çok daha ucuzdur.
- Yük formatında anlaşın. Değerin yanında zaman damgası, birim ve kalite bilgisi taşınmalıdır.
- Broker’ı güvenceye alın. Üretim ortamında 8883 ile TLS, kullanıcı adı/parola veya istemci sertifikası ve topic bazlı yetkilendirme kullanılmalıdır.
- QoS’u gereğinden yüksek seçmeyin. QoS 2 her mesaj için ek el sıkışma gerektirir; yüksek frekanslı ölçümlerde gereksiz yük oluşturur.
- Bağlantı kopmasını planlayın. Gateway tarafında yerel tamponlama yoksa ağ kesintisinde veri kaybolur.
VOLSOFT, makine verisini MQTT üzerinden Proxus platformuna taşır.
