MQTT, sensörler, kontrolörler ve ağ geçitleri için veri göndermenin varsayılan yolu haline gelmiş, küçük ve yayınla-abone ol mantığına dayanan bir mesajlaşma protokolüdür. Yavaş veya güvenilmez bağlantılarda kullanılmak üzere tasarlanmıştır ve sensörlerin, kontrolörlerin ve ağ geçitlerinin bir IoT platformuna veri göndermesi için en yaygın yöntem olmuştur. Bu kılavuz, endüstriyel cihazları MQTT ile bağlamak için bilmeniz gerekenleri ve kaçınmaya değer hataları kapsar.
MQTT nasıl çalışır
MQTT’nin üç rolü vardır.
- Yayıncılar mesaj gönderir. Bir sıcaklık sensörü okumalarını yayınlar.
- Aboneler mesaj alır. Bir platform, ihtiyaç duyduğu okumalara abone olur.
- Broker ortada yer alır. Her mesajı alır ve onu isteyen abonelere iletir.
Cihazlar birbirleriyle doğrudan konuşmaz. Her biri broker’a tek bir bağlantıyı açık tutar. Bu, MQTT’yi güvenlik duvarları ve mobil ağlar açısından uyumlu kılar: cihaz giden bir bağlantı açar ve sahaya dışarıdan erişilmesi gerekmez.
Konular
Her mesaj bir konuya yayınlanır; site-a/line-2/filler/temperature gibi metin tabanlı bir yoldur. Aboneler, joker karakterler kullanarak aynı anda birçok konuyu alabilir. Konu tasarımı ilk bakışta göründüğünden daha önemlidir.
- Sabit bir sıra koruyun, örneğin site, alan, cihaz, ölçüm.
- Boşluk ve özel karakterlerden kaçının.
- Konuya değer veya zaman damgası koymayın; bunlar yükte (payload) yer almalıdır.
- Bir platform konuları sizin için tanımlıyorsa, onları kullanın. Hermetry, her cihaza hangi konuları kullanacağını bildirir; böylece veriler özel eşleme gerektirmeden doğru cihaza ulaşır.
Hizmet kalitesi (QoS)
MQTT, QoS adı verilen üç teslimat seviyesi sunar.
- QoS 0, en fazla bir kez. Mesaj onay alınmadan bir kez gönderilir. Bir okumanın kaybolmasının önemli olmadığı sık okumalar için uygundur.
- QoS 1, en az bir kez. Broker onaylayana kadar mesaj tekrarlanır. İki kez gelebilir, bu yüzden alıcı yinelenen mesajlara tolerans göstermelidir. Telemetri için genellikle tercih edilen seviyedir.
- QoS 2, tam olarak bir kez. Dört adımlı bir el sıkışma, mesajın tam olarak bir kez ulaşmasını sağlar. Daha fazla trafik maliyeti getirir ve okumalar için nadiren gereklidir.
Pratik bir kural: ölçümler ve olaylar için QoS 1 kullanın ve yinelenen mesajların tanınabilmesi için yüke bir zaman damgası ekleyin.
Saklanan mesajlar ve son vasiyet
Saklanan (retained) bir mesaj broker tarafından depolanır ve daha sonra abone olan herkese iletilir. Bir yapılandırma ya da bir vananın son bilinen konumu gibi yavaş değişen durumlar için kullanışlıdır. Hızlı okumaları saklamayın; yeni bir abone, uyarı almadan eski bir değer alır.
Son vasiyet (last will), bir cihazın bağlantısı beklenmedik şekilde koptuğunda broker’ın onun adına yayınladığı bir mesajdır. Bir cihazı çevrimdışı olarak işaretlemenin basit bir yoludur. Bağlantı canlı tutma (keep-alive) aralığıyla birlikte kullanıldığında, seçtiğiniz aralığa bağlı olarak bir cihazın sessizliğe gömüldüğünü saniyeler ya da dakikalar içinde anlamanızı sağlar.
Yükler (payload)
MQTT, bir mesajın içinde ne olduğuyla ilgilenmez. JSON, okunması ve hata ayıklaması kolay olduğu için en yaygın tercihtir. İyi bir yük şunları içerir:
- cihazdan gelen, UTC cinsinden bir zaman damgası;
- temperature_c gibi, t yerine açık birimlere sahip adlandırılmış değerler;
- ölçülen bağlantılarda mesajları küçük tutmak için yalnızca değişen veya gerekli olan bilgiler.
İkili formatlar çok kısıtlı bağlantılarda bant genişliğinden tasarruf sağlar, ancak okunabilirlikten ödün verirsiniz. Ölçülmüş bir gerekçeniz yoksa JSON ile başlayın.
Güvenlik
Bir MQTT bağlantısı platformunuza açılan bir kapıdır. Ona öyle davranın.
- Her zaman TLS kullanın. Kimlik bilgileri ve veriler hiçbir zaman ağ üzerinden düz metin olarak geçmemelidir.
- Her cihaza kendi kimlik bilgilerini verin. Bir cihaz filosu için ortak bir kullanıcı adı, sızan tek bir cihazın hepsini açığa çıkarması anlamına gelir.
- Her cihazın yayınlayabileceği ve abone olabileceği şeyleri sınırlayın. Bir sensör yalnızca kendi konularına yazabilmelidir.
- Kimlik bilgilerini döndürün bir cihaz değiştirildiğinde veya bir teknisyen ayrıldığında.
- Cihazların gerektirdiği yerlerde sertifika kullanın. Bazı cihazlar ve bazı müşteriler, parolalara ek olarak sertifika tabanlı kimlik ister.
Hermetry üzerinde MQTT cihazları, cihaz başına bir kullanıcı adı ve parola ile şifreli bir bağlantı üzerinden bağlanır; platformun sertifika hizmeti ise cihazların gerektirdiği yerlerde sertifika üretir.
MQTT konuşmayan ağ geçitleri ve cihazlar
Endüstriyel ekipmanların çoğu bunun yerine Modbus, SNMP veya bir üreticiye özgü protokol konuşur. Genel çözüm, sahada bir ağ geçididir: yerel cihazları okur ve verilerini tek bir MQTT ya da HTTP bağlantısı üzerinden yayınlar. Ayrıca sahadaki yalnızca bir makinenin internete erişmesine izin verildiği durumlarda da işe yarar.
Canlıya geçmeden önce kontrol listesi
- Konular sabit bir kalıba uyar ve belgelenmiştir.
- Telemetri için QoS 1, her yükte zaman damgaları ile.
- TLS açık, cihaz başına bir kimlik bilgisi ve bunları döndürme planı.
- Keep-alive ve son vasiyet ayarlanmış, böylece çevrimdışı cihazlar fark edilir.
- Cihaz profilleri, her cihaz tipinin ne gönderdiğini tanımlar; böylece yüz cihaz da tek bir cihazla aynı şekilde kurulur.
Cihaz profillerinin ve sağlamanın nasıl çalıştığını cihazlar sayfasında okuyun ya da tam protokol listesini dokümantasyonda görün.

