MQTT sürücüsü
Bir MQTT sunucusuna (broker) bağlanıp konulara abone olarak tag değeri almak, tag yazmayı konuya yayın (publish) olarak göndermek; TLS, kullanıcı / şifre, QoS ve JSON alan adresleri.
Ne zaman kullanılır
MQTT sürücüsü, Live'ı MQTT 3.1.1 istemcisi yapar. Live sunucuya (broker) bağlanır, tag'lerin konularına abone olur; konuya gelen son yayın o tag'in değeri olur. Tag'e yazmak, değeri konuya yayınlamaktır. Cihazlar, ağ geçitleri ve IoT sistemleri veriyi genellikle bu yolla paylaşır.
Bu sürücü yenidir ve Tanıtım projesinde bağlantısı yoktur. Gerçek bir MQTT sunucusuyla sahada denenmemiştir.
Sunucu tarafında ön koşullar
- MQTT sunucusu Live bilgisayarından erişilebilir olmalı (varsayılan port
1883, TLS ile genellikle8883). - Kimlik doğrulama kullanılıyorsa sunucuda kullanıcı tanımlı olmalı ve kullanıcının okuma / yazma izni bulunmalı. İzin yoksa sunucu aboneliği reddeder.
- Cihazların yayınladığı konu adlarını ve yük (payload) biçimini (düz değer ya da JSON) bilin.
Bağlantı kurma
- Bağlantı ekleyin
Bağlantılar bölümünde Ekle, sürücü MQTT; sunucunun adresini yazın, port
1883gelir. TLS kullanıyorsanız portu8883yapın ya da adresimqtts://sunucu:8883biçiminde yapıştırın (güvenlik TLS'e geçer). - Parametreleri girin

MQTT bağlantısının parametreleri; Hedef kartı mqtt://ya damqtts://adresini gösterir.- Güvenlik
- Yok (şifrelenmemiş), TLS (sunucu sertifikası doğrulanır) ya da TLS (sertifika doğrulanmaz). TLS 1.2 kullanılır.
- Kimlik doğrulama
- Anonim ya da Kullanıcı adı ve şifre.
- Kullanıcı adı
- Şifre proje dosyasına yazılmaz; Live'da girilir (Bağlantı güvenliği).
- İstemci kimliği
- Boşsa
fv-<bilgisayar>-<bağlantı>biçiminde otomatik üretilir. Aynı kimlikle bağlanan iki istemciden eskisi sunucu tarafından atılır. - Abonelik kalitesi (QoS)
- QoS 0 — en çok bir kez (varsayılan) ya da QoS 1 — en az bir kez.
- Yazma kalitesi (QoS)
- QoS 0 — yanıt beklenmez ya da QoS 1 — sunucunun onayı beklenir (varsayılan).
- Yazılanı sunucuda tut (retain)
- Açıksa yazılan mesaj sunucuda saklanır ve sonradan abone olanlara hemen gönderilir. Varsayılan kapalı.
- Bool yazma biçimi
true / false(varsayılan),1 / 0ya daON / OFF.- Canlı tutma süresi (sn)
- 0 – 3600, varsayılan
30. Sessiz kalan bağlantıda bu aralıkla sunucuya ping gider; 1,5 katı süre hiçbir şey gelmezse bağlantı kopmuş sayılır.0= kapalı.
- Tag ekleyin
Tag'in adresine konu adını yazın (Tag adresleri).
Konu adresleri
| Adres | Anlamı |
|---|---|
fabrika/hat1/sicaklik | Yükün tamamı tag'in değeridir (sayı, true / false, on / off, metin, ISO tarih). |
hat1/durum#motor.hiz | Yük JSON belgesidir; tag belgenin içindeki değerdir (# konu ile JSON yolunu ayırır). |
hat1/olcumler#deger[2] | JSON dizisinin elemanı (sıra 0'dan başlar). |
cihaz/role/durum|cihaz/role/komut | Okuma ve yazma ayrı konularda (| ile ayrılır). |
- Konu joker karakter (
+,#) içermez; tag tek bir konunun değeridir. Konu ve JSON yolu büyük / küçük harfe duyarlıdır. Yazma konusu$ile başlayamaz. - JSON yolu nokta ile ayrılmış alan adları ve dizi sıralarıdır (
motor.hiz,dizi[0].alan); başındaki$.isteğe bağlıdır; en çok 16 adım.
Okuma ve yazma davranışı
- Okuma: sürücü her konuya bir kez abone olur. Sunucu tutulan (retained) mesajı aboneliğe hemen gönderir. Henüz hiç yayın gelmemiş konunun tag'i hata vermez; değer gelene kadar bekler (kalitesiz görünür).
- Değer çevirme:
Booliçintrue/false/1/0/on/off/yes/nookunur. Tag tipine sığmayan değer kırpılmaz, tag hata alır.DateTimeiçin ISO 8601 ya da unix saniye / milisaniye kabul edilir. Yük UTF-8 metindir; 1 MB'tan büyük yük okunmaz. - Yazma: değer, tag'in yazma konusuna yayınlanır. Okuma konusuyla aynıysa değer, sunucudan dönmesi beklenmeden tag'e de işlenir. Bağlantı kopmuşsa yazma reddedilir.
- JSON alanı yazma: konuya son gelen belgenin yalnızca ilgili alanı değiştirilir, diğer alanlar korunur. Konuda henüz belge yoksa ya da yazma konusu ayrıysa ve önceki belge bilinmiyorsa yalnızca o alanı içeren yeni bir belge yayınlanır.
Sürücü başvurusu
MQTT
MQTT 3.1.1 istemcisi: Live sunucuya (broker) bağlanır, tag'lerin konularına abone olur ve gelen son yayını tag değeri yapar; yazma konuya yayın (publish) olarak gider. Adres bir konudur (ör. fabrika/hat1/sicaklik); yük JSON ise "konu#yol" ile içindeki alan seçilir; okuma ve yazma konuları ayrıysa "okuma|yazma" yazılır.
- Sürücü kimliği
mqtt(proje dosyasındaki ad)- Bağlantı
- IP adresi / bilgisayar adı ve port gerekir (varsayılan port
1883) - Veri tipleri
BoolByteSIntIntUIntDIntUDIntRealLRealStringDateTime- Aynı adres
- Aynı adrese birden çok bağlantı tanımlanabilir.
Bağlantı parametreleri
Bağlantı seçiliyken Denetçi penceresinde görünür.
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| Güvenlik | seçim | Yok (şifrelenmemiş) | TLS için port genellikle 8883'tür. Kendinden imzalı sertifika kullanan sunucularda sertifikayı Windows'a güvenilen olarak ekleyin; "doğrulanmaz" yalnızca kapalı ağlarda kullanılmalıdır. Yok (şifrelenmemiş) · TLS (sunucu sertifikası doğrulanır) · TLS (sertifika doğrulanmaz) |
| Kimlik doğrulama | seçim | Anonim | Anonim · Kullanıcı adı ve şifre |
| Kullanıcı adı | metin | — | Şifre proje dosyasına yazılmaz; Live bilgisayarında girilir. |
| İstemci kimliği | metin | — | Boşsa otomatik üretilir (fv-bilgisayar-bağlantı). Aynı kimlikle bağlanan iki istemciden eskisi sunucu tarafından atılır. |
| Abonelik kalitesi (QoS) | seçim | QoS 0 — en çok bir kez | QoS 0 — en çok bir kez · QoS 1 — en az bir kez |
| Yazma kalitesi (QoS) | seçim | QoS 1 — sunucunun onayı beklenir | QoS 0 — yanıt beklenmez · QoS 1 — sunucunun onayı beklenir |
| Yazılanı sunucuda tut (retain) | açma / kapama | kapalı | Yazılan mesaj sunucuda saklanır ve sonradan abone olanlara hemen gönderilir. |
| Bool yazma biçimi | seçim | true / false | true / false · 1 / 0 · ON / OFF |
| Canlı tutma süresi (sn) | sayı (0 – 3600) | 30 | Sessiz kalan bağlantıda bu aralıkla sunucuya ping gider; 1,5 katı süre hiçbir şey gelmezse bağlantı kopmuş sayılır. 0 = kapalı. |
Adres biçimleri
| Biçim | Anlamı |
|---|---|
topic | Yükün tamamı tag'in değeridir (sayı, true / false, on / off, metin, ISO tarih) |
topic#alan.altalan | Yük JSON belgesidir; tag belgenin içindeki değerdir |
topic#dizi[2].alan | JSON dizisinin elemanı (sıra 0'dan başlar) |
readTopic|writeTopic | Okuma ve yazma ayrı konularda (ör. durum | komut) |
Örnek adresler
| Veri tipi | Örnekler |
|---|---|
Bool | cihaz/role/durum cihaz/role/durum|cihaz/role/komut hat1/durum#motor.calisiyor |
String | hat1/urun hat1/durum#ad |
| Diğer tipler | fabrika/hat1/sicaklik hat1/durum#motor.hiz hat1/olcumler#deger[2] |
Sık hatalar
Her satırın başındaki işaret, iletinin Live'da nerede görüneceğini söyler: [bağlantı] sistem menüsünün Bağlantılar bölümünde; [yazma] yazmayı yapan operatöre bildirim penceresinde; [Studio] Studio'daki adres hücresinde görünür. [tag] okuma sırasındaki tag hatasıdır: tag kalitesiz kalır, iletinin metni bu sürümde Live'da gösterilmez (Tag hataları); metni nedeni anlamak için okuyun.
| İleti | Neden ve çözüm |
|---|---|
[bağlantı] MQTT sunucusu 2000 ms içinde yanıt vermedi (…). Adresi, portu ve ağ bağlantısını kontrol edin. | Sunucuya ulaşılamıyor. |
[bağlantı] MQTT sunucusu kullanıcı adını ya da şifreyi reddetti. Kullanıcı adını bağlantı parametrelerinden, şifreyi Live'daki bağlantı şifresi penceresinden kontrol edin. | Kullanıcı ya da şifre yanlış; şifre Live'da girilmemiş olabilir. |
[bağlantı] MQTT sunucusu bu istemcinin bağlanmasına izin vermedi (yetkisiz). … | Sunucuda bu kullanıcı ya da istemci için erişim tanımı yok. |
[bağlantı] MQTT sunucusu istemci kimliğini reddetti (kimlik geçersiz ya da başka bir istemci aynı kimlikle bağlı). … | İstemci kimliği'ni değiştirin. |
[tag] MQTT sunucusu bu konuya aboneliği reddetti (kullanıcının bu konuyu okuma yetkisi olmayabilir): konu | Kullanıcının o konuyu okuma izni yok. |
[bağlantı] Sunucu sertifikasına bu bilgisayar güvenmiyor (kendinden imzalı ya da bilinmeyen sertifika otoritesi). … | Sertifikayı Windows'a güvenilen olarak ekleyin; yalnızca kapalı ağlarda TLS (sertifika doğrulanmaz) seçin. |
[bağlantı] Sunucu sertifikasının adı "…" ile uyuşmuyor (adres olarak IP yerine sertifikadaki bilgisayar adını yazın …). | Adrese sertifikadaki adı yazın. |
[tag] "…" Bool olarak okunamıyor (true / false, 1 / 0, on / off, yes / no beklenir). · "…" bir sayı değil; Int olarak okunamıyor. | Yükün biçimi tag tipine uymuyor. |
[tag] Yük geçerli bir JSON belgesi değil (…). Adreste "#yol" yazdıysanız yük JSON olmalıdır. · JSON yolu "…" yükte bulunamadı (… alanı yok). | Yük JSON değil ya da yol belgede yok. |
[yazma] MQTT sunucusu yayını onaylamadı (PUBACK gelmedi). | Yazma kalitesi QoS 1 iken sunucu yayını onaylamadı. |