Hermetry, MQTT 3.1.1 protokolünü destekler. Bu sayfa cihaz geliştiricileri için bağlantı başvuru kılavuzudur: broker’a nasıl ulaşılacağı, nasıl oturum açılacağı, oturumların nasıl davrandığı, neyin ne zaman onaylandığı ve bir bağlantı reddedildiğinde ne yapılacağı. Konular ve yük içerikleri MQTT konuları ve yük başvurusu sayfasında yer almaktadır.
Bağlantı
| Öğe | Değer |
|---|---|
| Protokol | MQTT 3.1.1 (protokol seviyesi 4). MQTT 5 için yapılan bir CONNECT, CONNACK 1 ile reddedilir. |
| Port, TLS | 8883 |
| Port, düz | 1883, yalnızca düz MQTT’ye izin veren bir profilin cihazları için |
| Ana makine | Cihazın Bağlantı ayrıntıları kartındaki broker ana makinesi. Kuruluşunuzun bölgesinin ana makinesini kullanın. |
| Temiz oturum | true gönderin. false ile yapılan bir CONNECT, temiz oturum olarak işlenir. |
| Canlılık süresi | MQTT keepalive kullanın. 0 olan veya broker’ın maksimumunun (varsayılan kurulumda 300 saniye) üzerindeki bir keepalive, maksimum değerle işlenir. |
| Son mesaj (Will) | İzin verilir, yok sayılır. Bağlantı durumuna Hermetry kendisi karar verir. |
| Retain bayrağı | Yok sayılır. Mesaj işlenir, saklanmaz. |
| Bağlantı süresi | TCP bağlantısından kabul edilen bir CONNECT’e kadar (TLS el sıkışması ve oturum açma dahil) cihazın birkaç saniyesi vardır (varsayılan 5 saniye). |
Çevrimdışıyken bir cihaz için, işaretli kalıcı komutlar dışında hiçbir şey kuyruğa alınmaz. Her bağlantıdan sonra cihaz yeniden abone olur ve paylaşılan özniteliklerini ister; böylece güncel değerleri alır.
TLS
- En az TLS 1.2, tercihen TLS 1.3.
- TLS 1.2 paketleri:
ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-CHACHA20-POLY1305. RSA anahtar değişimi ve CBC yok. - SNI gereklidir. IP adresiyle değil, ana makine adıyla bağlanın.
- Üçüncü taraf cihazlar için sunucu sertifikası herkese açık bir sertifikadır. Normal CA paketinize ve ana makine adına göre doğrulayın.
- Sunucu istemci sertifikası ister ancak zorunlu kılmaz; böylece tek bir port her oturum açma türüne hizmet eder.
- Küçük cihazlar 4 KB TLS kayıtları isteyebilir (
max_fragment_length).
Bir profil, cihazlarının düz porta hiç erişip erişemeyeceğine karar verir (profilin Taşıma ve kimlik doğrulama sekmesindeki Düz MQTT). Varsayılan yalnızca TLS’tir. Bkz. Cihaz taşıma güvenliği.
Oturum açma
| Kimlik bilgisi | İstemci kimliği | Kullanıcı adı | Parola |
|---|---|---|---|
| Erişim belirteci | geçerli herhangi bir kimlik | erişim belirteci | boş |
| Temel MQTT | herhangi biri veya sabitlenmiş istemci kimliği | kullanıcı adı | parola |
| X.509 sertifikası | cihaz seri numarası (sertifikanın CN değerine eşit olmalıdır) | seri numarası (yok sayılır) | boş |
- Bir istemci kimliği,
A–Z a–z 0–9 . _ : -karakterlerinden 1 ila 64 karakterden oluşur. Bunların dışındaki her şey CONNACK 2 ile reddedilir. - Kullanıcı adı olup parolası olmayan bir CONNECT, erişim belirteci olarak okunur. Kullanıcı adı olmayan bir CONNECT reddedilir.
- Bir istemci sertifikası sunulduğunda karar onun ile verilir. Parolaya geri dönüş yoktur. Güvenilmeyen bir sertifika TLS el sıkışmasını sonlandırır.
provisionkullanıcı adı bir sağlama oturumu açar (bkz. Cihaz ekleme ve sahiplenme).- Profil; kimlik bilgisi türüne, cihazın ağına ve porta (TLS veya düz) izin vermelidir; aksi halde oturum açma CONNACK 5 ile reddedilir.
Oturumlar
- Cihaz başına bir oturum. Aynı cihazın ikinci bir bağlantısı birincisini devralır ve kapatır. Oturumu iki ağdan tekrar tekrar devralınan bir cihaz bir süre geri tutulur ve yöneticileriniz bir bildirim alır (“devralma çekişmesi”); aynı kimlik bilgisini paylaşan iki cihaz olup olmadığını kontrol edin.
- Yeniden kontroller. Her etkin oturum yaklaşık her 60 saniyede bir yeniden denetlenir. Döndürülmüş veya iptal edilmiş bir kimlik bilgisi, devre dışı bırakılmış veya silinmiş bir cihaz, askıya alınmış bir kuruluş ya da oturumun artık karşılamadığı bir profil değişikliği, oturumu hemen sonlandırır.
- Karantinadaki cihazlar bağlanır, ancak bir yönetici etkinleştirene kadar telemetrileri ve öznitelikleri onaylanır ve atılır.
- Yeni ağ bildirimi. Bir cihaz önceki seferden farklı bir ağdan oturum açtığında, yöneticileriniz bir bildirim alabilir (cihaz başına en fazla saatte bir), böylece çalınmış bir kimlik bilgisi fark edilmeden kalmaz.
- Bağlı cihaz sınırı. Planınız aynı anda bağlı olabilecek cihaz sayısını sınırlıyorsa, bu sınırın üzerindeki bir CONNECT, CONNACK 5 ile reddedilir.
Onaylar ve QoS
- QoS 1 ile yayımlayın. QoS 0 kabul edilir; QoS 2, QoS 1 gibi işlenir.
- Hermetry, PUBACK’i yalnızca mesaj güvenle kuyruğa alındıktan sonra gönderir. PUBACK’ler cihazın yayımladığı sırayla gider.
- Bir mesaj kuyruğa alınamazsa PUBACK almaz (o oturumdaki sonraki hiçbir şey de almaz) ve oturum birkaç saniye sonra kapatılır. Cihaz yeniden bağlandıktan sonra onaylanmamış mesajları yeniden gönderir.
- Bir cihaz, varsayılan olarak en fazla 20 onaylanmamış QoS 1 mesajına sahip olabilir (profilin Onaylanmamış en fazla mesaj (MQTT) ayarı, 1 ila 1.000).
- Aynı cihaza, anahtara ve zaman damgasına ait yinelenen mesajlar bir kez saklanır; bu nedenle yeniden göndermek güvenlidir.
Sınırlar
| Sınır | Varsayılan | Nerede ayarlanır |
|---|---|---|
| Telemetri mesajları | 10:1,300:60 (saniyede 10 ve dakikada 300) | Profil Sınırlar |
| Telemetri veri noktaları | 200:1,6000:60 | Profil Sınırlar |
| Öznitelik mesajları | 5:1,60:60 | Profil Sınırlar |
| Mesaj boyutu | 64 KiB, en fazla 1.000 anahtar-değer noktası | Profil Mesaj yükü üst sınırı (bayt) |
| Cihaza gönderilen mesajlar | 64 KiB (lisanslı cihazlar için 4 KiB) | Profil Aşağı yönlü yük üst sınırı (bayt) |
- Bir hız sınırının üzerinde, mesaj onaylanır ve atılır. Sınırını sürekli aşan bir cihaz (bir dakikalık hakkının üç katından fazlası bir dakika içinde atılırsa) oturumu kapatılır. Sahipler ve yöneticiler cihaz başına saatte bir bildirim alır.
- Çok büyük bir mesaj bütünüyle atılır; bağlantı açık kalır.
- Kuruluşunuzun bir bütün olarak planından gelen hız sınırları da vardır.
- Bir kesintiden sonra bir cihazın gönderdiği, arabelleğe alınmış okumalar (her kayıt daha eski bir
tstaşır) ayrıca profilin Saniyede yeniden oynatılan mesaj sınırına uymalıdır. - Telemetri ve öznitelik mesajları aylık mesaj kotanıza sayılır; bağlantı olayları, komutlar ve alarmlar sayılmaz. Bkz. Mesaj kotası ve kullanım.
CONNACK kodları
| Kod | Anlamı | Cihazın yapması gereken |
|---|---|---|
| 0 | Kabul edildi | Devam edin. |
| 1 | Protokol sürümü desteklenmiyor | Yeniden denemeyi durdurun; istemciyi düzeltin. |
| 2 | İstemci kimliği reddedildi | Yapılandırma değişene kadar durun. |
| 3 | Sunucu kullanılamıyor: hizmet meşgul, başlıyor ya da durduruluyor veya adres kısa süreliğine engelli | Geri çekilin ve rastgele gecikmeyle yeniden deneyin. |
| 4 | Hatalı kullanıcı adı veya parola | En az 5 dakika (en fazla 1 saat) bekleyin. |
| 5 | Yetkisiz: cihaz devre dışı, sertifika iptal edilmiş veya süresi dolmuş, kuruluş askıya alınmış ya da cihaz veya bağlı cihaz sınırını aşmış, oturum açma türü, ağ veya port profil tarafından izin verilmiyor | Uzun programla geri çekilin. |
Kod 5’in arkasındaki neden cihaza hiçbir zaman gönderilmez. Cihazın Günlük sekmesine yazılır.
Not
Tek bir adresten tekrarlanan başarısız oturum açmalar, o adresi arkasındaki her cihaz için kısa süreliğine engeller. Bu nedenle yanlış yapılandırılmış bir cihaz, aynı NAT arkasındaki komşularını kilitleyebilir. Hatalı kimlik bilgilerini hızla düzeltin.
Bağlantı kesme nedenleri
Cihazın Günlük sekmesi, bir oturumun neden sona erdiğini gösterir:
| Neden | Anlamı |
|---|---|
client_disconnect | Cihaz bağlantıyı kapattı. |
keepalive_timeout | Canlılık süresi içinde hiçbir şey gelmedi. |
takeover | Aynı cihazın başka bir bağlantısı devraldı. |
auth_revoked | Kimlik bilgisine, cihaza veya kuruluşa artık izin verilmiyor. |
rate_limit | Cihaz hız sınırını sürekli aştı. |
server_shutdown | Broker düğümü yeniden başlatıldı; yeniden bağlanın. |
protocol_error, inflight_exceeded, socket_error | İstemci protokolü bozdu, çok fazla onaylanmamış mesaj gönderdi ya da ağ arızalandı. |
Önerilen cihaz davranışı
- Ana makine adıyla TLS üzerinden bağlanın; canlılık süresi 30 ila 300 saniye olsun.
- CONNACK 0 aldıktan sonra aşağı yönlü konulara abone olun, paylaşılan öznitelikleri isteyin, istemci özniteliklerini bildirin, ardından canlı veriden önce arabelleğe alınmış telemetriyi gönderin.
- QoS 1 kullanın ve arabelleğe alınmış bir okumayı silmeden önce PUBACK’i bekleyin.
- Saniyede birden fazla örnek gönderdiğinizde okumaları toplu gönderin.
- Reddedilen bir bağlantıda CONNACK tablosundaki geri çekilme süresini izleyin; bir filonun aynı anda yeniden bağlanmaması için rastgele gecikme ekleyin.

