MQTT Temelleri

MQTT Sözlüğü: Her IoT Geliştiricisinin Bilmesi Gereken 60 Terim

ACL'den Will Delay Interval'a kadar bu MQTT sözlüğü 60 protokol, broker ve Sparkplug B terimini sade bir dille tanımlar; broker.connectmq.com üzerinde deneyebileceğiniz örneklerle.

Topic ağaçları, QoS rozetleri ve broker simgeleriyle açık bir başvuru kitabı olarak gösterilen MQTT sözlüğü çizimi
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Bu MQTT sözlüğü, spesifikasyonlarda, broker belgelerinde ve client kütüphanesi API'lerinde karşılaşacağınız 60 terimi ACL'den Will Delay Interval'a kadar tanımlar. Her madde kısa ve sade bir tanımdır; varsa daha ayrıntılı bir yazıya yönlendirme içerir. Böylece her MQTT konuşmasını çözebilir ve nereden daha fazlasını okuyacağınızı bilirsiniz.

Bu MQTT Sözlüğü Nasıl Kullanılır

Terimler alfabetik olarak gruplandırılmıştır ve aranabilir olmaları için özgün (İngilizce) adlarıyla verilmiştir. Yalnızca MQTT 5.0'da geçerli olan terimler "(MQTT 5)" olarak işaretlenmiştir. Örnekler broker.connectmq.com adresindeki ücretsiz genel broker'ı ve connectmq/demo/ab12/ gibi bir önek altındaki topic'leri kullanır. Orada yayınlanan her şey herkes tarafından okunabilir; bu yüzden test verilerini zararsız tutun. Protokolde tamamen yeniyseniz eksiksiz MQTT eğitimi daha iyi bir başlangıç noktasıdır; bir terim takıldığında buraya geri dönün.

MQTT Sözlüğü: A'dan C'ye

ACL (Access Control List, Erişim Kontrol Listesi). Bir broker'da hangi client'ların hangi topic'lere yayın yapabileceğine veya abone olabileceğine karar veren kurallar. Uygulama broker'a göre değişir.

Authentication (Kimlik doğrulama). Bir client'ın kimliğini broker'a kanıtlaması; genellikle CONNECT paketindeki kullanıcı adı ve parola, bir client sertifikası veya bir token ile.

Authorization (Yetkilendirme). Kimliği doğrulanmış bir client'ın neler yapmasına izin verildiğine karar vermek. Kimlik doğrulamadan farklıdır, ancak sıklıkla onunla karıştırılır.

AUTH paketi (MQTT 5). Challenge/response mekanizmaları gibi genişletilmiş kimlik doğrulama alışverişleri için bir kontrol paketi.

Bridge (Köprü). Bir broker'ın başka bir broker'ın client'ı gibi davranmasını sağlayarak seçilen topic'lerin aralarında akmasını sağlayan bağlantı. Bkz. MQTT köprüleme.

Broker. Yayınlanan her mesajı alan ve eşleşen abonelere yönlendiren sunucu. Bir MQTT broker'ın ne yaptığı açıklamamız daha derine iner.

Clean Session (MQTT 3.1.1). Bir CONNECT bayrağı. True olduğunda broker client ID için önceki oturum durumunu atar; false olduğunda durum korunur.

Clean Start (MQTT 5). Clean Session'ın MQTT 5'teki karşılığı. Yalnızca mevcut bir oturumun yeniden kullanılıp kullanılmayacağını kontrol eder; bir oturumun ne kadar yaşayacağı Session Expiry Interval ile ayrıca belirlenir.

Client. Yayın yapsın, abone olsun ya da ikisini birden yapsın, bir broker'a bağlanan herhangi bir program veya cihaz.

Client ID. Bir client'ın CONNECT içinde gönderdiği tanımlayıcı. Broker oturumu bulmak için bunu kullanır; bu yüzden her bağlantı için benzersiz olmalıdır. ConnectMQ özel broker'larında client ID'ler verilen kimlik bilgilerine bağlıdır.

Control packet (Kontrol paketi). CONNECT, PUBLISH veya SUBSCRIBE gibi sabit MQTT mesaj türlerinden biri.

Correlation Data (MQTT 5). Bir istekte bulunanın, geri gelen yanıtı eşleştirebilmek için mesaja eklediği baytlar.

B, Birth'ün B'si: Sparkplug Terimleri

Birth certificate (Doğum sertifikası, Sparkplug). Bir düğüm veya cihaz çevrimiçi olduğunda onu ve metriklerinin tam listesini duyuran NBIRTH ve DBIRTH mesajları.

Death certificate (Ölüm sertifikası, Sparkplug). Bir düğüm veya cihazı çevrimdışı olarak işaretleyen NDEATH ve DDEATH mesajları; NDEATH genellikle MQTT Will olarak kaydedilir.

Edge of Network (EoN) node (Sparkplug). Arkasındaki cihazlar adına Sparkplug verisi yayınlayan bir gateway.

Host application (Sparkplug). Düğüm durumunu takip eden ve komut gönderebilen birincil tüketici; çoğunlukla SCADA.

Sparkplug B. MQTT üzerinde topic yapısını, Protobuf payload'larını ve durum yönetimini tanımlayan bir Eclipse spesifikasyonu. Tam resim için Sparkplug B ve Unified Namespace yazısını okuyun.

MQTT Sözlüğü: D'den M'ye

DUP flag (DUP bayrağı). Orijinal onay alınmadığı için yeniden gönderilen bir PUBLISH üzerinde ayarlanır.

Fixed header (Sabit başlık). Her MQTT paketinin ilk iki ila beş baytı: paket türü, bayraklar ve kalan uzunluk.

Inflight window. Bir client veya broker'ın gönderdiği ancak henüz onaylandığını görmediği QoS 1 ve QoS 2 mesajlarının sayısı.

ISA-95. Kurumsal/kontrol hiyerarşisi (kuruluş, tesis, alan, hat, hücre) için bir endüstriyel standart; MQTT topic ağaçlarına sıklıkla yansıtılır.

Keep Alive. Bir client'tan gelen paketler arasındaki saniye cinsinden azami aralık. Başka bir şey gönderilmezse client PINGREQ gönderir; broker aralığın bir buçuk katı boyunca hiçbir şey duymazsa bağlantıyı kapatır.

Last Will and Testament (LWT). Client beklenmedik şekilde bağlantıyı kopardığında broker'ın onun adına yayınladığı mesaj. Genellikle çevrimiçi/çevrimdışı durumu için kullanılır.

Maximum Packet Size (MQTT 5). Her iki tarafın kabul edeceği en büyük paket için bildirebileceği sınır.

Message Expiry Interval (MQTT 5). Teslim edilmemiş bir mesajın atılacağı saniye cinsinden ömür.

MQTT. OASIS tarafından 3.1.1 ve 5.0 sürümleriyle standartlaştırılmış, TCP üzerinde çalışan hafif bir yayınla/abone ol mesajlaşma protokolü.

MQTT-SN. Sensör Ağları için MQTT; UDP ve IP dışı datagram ağları için bir gateway gerektiren varyant. Bkz. MQTT-SN açıklaması.

mTLS (karşılıklı TLS). Client'ın da bir sertifika sunduğu ve böylece broker'ın onun kimliğini doğrulayabildiği TLS.

N'den Q'ya

Payload. Bir PUBLISH içindeki uygulama verisi. MQTT onu opak baytlar olarak ele alır; JSON, Protobuf ve düz metin yaygındır.

Payload Format Indicator (MQTT 5). Payload'ın UTF-8 metin mi yoksa belirtilmemiş baytlar mı olduğunu bildiren bayrak.

Persistent session (Kalıcı oturum). Broker'ın bağlantı kopmaları boyunca koruduğu oturum durumu (abonelikler, kuyruğa alınmış mesajlar).

PINGREQ / PINGRESP. Keep-alive kalp atışı paketleri.

PUBACK. QoS 1 PUBLISH için onay.

PUBREC, PUBREL, PUBCOMP. QoS 2'nin dört adımlı el sıkışmasındaki üç ek paket.

PUBLISH. Broker'a veya broker'dan bir mesaj taşıyan paket.

Publisher (Yayıncı). Bir topic'e mesaj gönderen client.

QoS (Quality of Service, Hizmet Kalitesi). Mesaj başına teslimat garantisi: 0 en fazla bir kez, 1 en az bir kez, 2 tam olarak bir kez. Ayrıntılar MQTT QoS seviyeleri açıklaması yazısında.

Quota (Kota). Bağlantılar, mesaj hızı veya mesaj boyutu gibi broker tarafından uygulanan bir sınır. MQTT 5 broker'ları bir kotanın aşıldığını 0x97 reason code ile bildirebilir.

R'den S'ye

Reason code (MQTT 5). Onaylarda ve DISCONNECT'te başarıyı veya başarısızlığı açıklayan bir baytlık durum; örneğin 0x87 Not authorized.

Receive Maximum (MQTT 5). Bir tarafın aynı anda işlemeye razı olduğu onaylanmamış QoS 1/2 mesajı sayısı; bir akış kontrolü biçimi.

Response Topic (MQTT 5). Bir istekte, yanıtlayanın cevabını yayınlaması gereken topic.

Retained message. Broker'ın bir topic için bilinen son değer olarak sakladığı ve her yeni aboneye teslim ettiği mesaj. Deneyin: mosquitto_pub -h broker.connectmq.com -i gl-ab12 -t connectmq/demo/ab12/state -m on -r.

Session (Oturum). Broker'ın bir client ID için tuttuğu durum: abonelikler, inflight mesajlar ve kuyruğa alınmış mesajlar.

Session Expiry Interval (MQTT 5). Broker'ın bağlantı koptuktan sonra bir oturumu kaç saniye tuttuğu. Genel test broker'ı 30 dakikaya kadar izin verir.

Shared subscription (Paylaşımlı abonelik, MQTT 5). Mesajları bir grubun üyeleri arasında yük dengeleyen $share/group/topic biçimindeki abonelik.

SUBACK. Broker'ın SUBSCRIBE'a yanıtı; topic filtresi başına bir QoS verir veya bir hata döndürür.

Subscriber (Abone). Abone olduğu topic filtreleri için mesaj alan client.

SUBSCRIBE / UNSUBSCRIBE. Topic filtreleri eklemek veya kaldırmak için paketler.

Subscription identifier (MQTT 5). Bir aboneliğe iliştirilen ve eşleşen mesajlarda geri yansıtılan sayı; böylece client teslimata hangi aboneliğin yol açtığını bilir.

$SYS topic'leri. Durum bilgisi sunan, genellikle $SYS/ ile başlayan, broker için ayrılmış topic'ler. Örneğin ConnectMQ bağlantı durumunu $SYS/broker/connection/{clientId}/state adresinde yayınlar.

T'den Z'ye

TLS (Transport Layer Security). TCP bağlantısı için şifreleme; normalde 8883 portunda. MQTT portları açıklaması yazısında ele alınır.

Topic. Mesajları yönlendirmek için kullanılan, plant1/line2/temp gibi seviyeleri / ile ayrılmış bir UTF-8 dizesi.

Topic alias (MQTT 5). Bant genişliğinden tasarruf etmek için aynı bağlantıdaki sonraki PUBLISH paketlerinde uzun bir topic adının yerini alan küçük bir tamsayı.

Topic filter (Topic filtresi). Bir abonelikte kullanılan, joker karakter içerebilen desen.

Topic level (Topic seviyesi). Eğik çizgiler arasındaki bir bölüm. broker.connectmq.com adresindeki genel test broker'ı 8 seviyeye kadar izin verir.

Unified Namespace (UNS). Tüm endüstriyel verilerin tek doğruluk kaynağı olarak tek bir hiyerarşik topic ağacına yayınlandığı mimari.

User Properties (MQTT 5). Paket başlıklarındaki, HTTP başlıklarına benzer özel anahtar/değer çiftleri.

WebSocket taşıma. Tarayıcıların bağlanabilmesi için WebSocket çerçevelerinde taşınan MQTT; tipik olarak /mqtt gibi bir yolla 8083 (ws) veya 8084 (wss) üzerinde.

Wildcard (Joker karakter). + tam olarak bir topic seviyesiyle eşleşir; # kalan tüm seviyelerle eşleşir ve en sonda olmalıdır.

Will Delay Interval (MQTT 5). Broker'ın Will mesajını yayınlamadan önce beklediği saniye; client'a önce yeniden bağlanma şansı verir.

Hızlı Başvuru Tablosu

Duyduğunuz Anlamı Sürüm
QoS 1 PUBACK ile en az bir kez teslimat 3.1.1 ve 5
Retained Topic başına saklanan son değer 3.1.1 ve 5
LWT Beklenmedik bağlantı kopmasında gönderilen mesaj 3.1.1 ve 5
Clean Start Bağlanırken oturumu yeniden kullan veya at 5
Session expiry Broker'ın durumu ne kadar tuttuğu 5
$share/ Paylaşımlı abonelik öneki 5
0x97 Kota aşıldı 5

Kelime Dağarcığını İşe Koyun

Tanımlar, onları kablo üzerinde gördüğünüzde akılda kalır. Herhangi bir client'ı benzersiz bir client ID ile 1883 portundan broker.connectmq.com'a bağlayın, connectmq/demo/<your-id>/# topic'ine abone olun ve retained message'ları, bir Last Will'i ve QoS 1 yayınlarını kendiniz deneyin. Kimlik doğrulama, TLS ve izole bir isim alanına hazır olduğunuzda, ConnectMQ gibi tam yönetilen bir MQTT hizmeti hem MQTT 3.1.1'i hem de 5.0'ı destekler; böylece yukarıdaki terimlerin neredeyse tamamı açıp kullanabileceğiniz bir şeye karşılık gelir.

ConnectMQ ile Başlayın

app.connectmq.com adresini açın, ücretsiz Serverless planını seçin (kredi kartı gerekmez), bir broker oluşturun ve oluşturulan kullanıcı adını, parolayı ve client ID'yi kopyalayın. ConnectMQ'nun tarayıcı içi MQTT client'ı, öğrenirken retained message'ları, LWT'yi ve oturum süresini test etmenin en hızlı yoludur.

Sık Sorulan Sorular

Topic ile topic filtresi arasındaki fark nedir?

Topic, bir mesajın yayınlandığı tam addır. Topic filtresi ise bir abonenin kullandığı ve + ile # joker karakterlerini içerebilen desendir.

Clean Session ile Clean Start aynı şey mi?

İlişkilidirler ama aynı değildirler. MQTT 3.1.1'deki Clean Session bir oturumun hem yeniden kullanımını hem de ömrünü kontrol ederken, MQTT 5 bunu Clean Start ve Session Expiry Interval olarak ikiye ayırır.

Hangi sözlük terimleri yalnızca MQTT 5'te bulunur?

Reason code'lar, user properties, topic alias'lar, paylaşımlı abonelikler, mesaj süresi, oturum süresi, response topic, correlation data ve AUTH paketi MQTT 5 ile gelen eklemelerdir.

Sparkplug terimleri MQTT standardının bir parçası mı?

Hayır. Sparkplug B, MQTT üzerinde kurallar tanımlayan ayrı bir Eclipse spesifikasyonudur; uyumlu herhangi bir broker onu taşıyabilir.

İlgili yazılar

MQTT'yi Kim İcat Etti? Petrol Boru Hatlarından IoT'ye Uzanan Tarih

MQTT, 1999'da IBM'den Andy Stanford-Clark ve Arcom'dan Arlen Nipper tarafından petrol boru hatlarını uydu üzerinden izlemek için icat edildi. Açık kaynağa, OASIS'e, ISO'ya ve bugünün yönetilen bulut broker'larına uzanan yolculuğunu izleyin.

7 dk okuma

MQTT Maksimum Mesaj Boyutu: Sınırlar ve Büyük Payload Stratejileri

MQTT teknik olarak 256 MB'lık bir paket taşıyabilir, ancak broker'lar, istemci kütüphaneleri ve cihazlar çok daha düşük sınırlar uygular. Gerçek sınırların nerede olduğunu, aşıldıklarında ne olduğunu ve büyük payload'ların nasıl gönderileceğini öğrenin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.