İçeriğe geç

Haberleşme

MQTT haberleşmesi

Live’ı MQTT 3.1.1 istemcisi yapar: sunucuya (broker) bağlanır, tag’lerin konularına abone olur ve konuya gelen son yayını tag değeri olarak kullanır. Tag’e yazmak, değeri konuya yayınlamaktır.

Genel bilgi

Cihazlar, ağ geçitleri ve IoT sistemleri veriyi genellikle MQTT ile paylaşır. Sürücü her konuya bir kez abone olur ve konuya gelen son yayın o tag’in değeri olur. OPC UA sürücüsü okuma döngüsüyle yoklar, MQTT sürücüsü ise abonelik temellidir.

Sunucu tarafında yapılacaklar

  1. Erişimi sağlayın

    MQTT sunucusu Live bilgisayarından erişilebilir olmalıdır. Varsayılan port 1883’tür, TLS ile genellikle 8883 kullanılır.

  2. Kullanıcıyı tanımlayın

    Kimlik doğrulama kullanılacaksa sunucuda kullanıcı tanımlı olmalı ve kullanıcının okuma / yazma izni bulunmalıdır. İzin yoksa sunucu aboneliği reddeder.

  3. Konuları ve yük biçimini öğrenin

    Cihazların yayınladığı konu adlarını ve yük (payload) biçimini bilin: düz değer ya da JSON.

Studio’da bağlantı kurma

  1. Bağlantı ekleyin

    Bağlantılar bölümünde Ekle’ye tıklayın ve Haberleşme sürücüsü olarak MQTT’yi seçin. Sunucunun adresini yazın; port 1883 olarak gelir. TLS kullanacaksanız portu 8883 yapın ya da adresi mqtts://sunucu:8883 biçiminde yapıştırın; güvenlik TLS’e geçer.

  2. Parametreleri girin

    Denetçi’de aşağıdaki alanları doldurun. Hedef kartı mqtt:// ya da mqtts:// adresini gösterir.

  3. Tag ekleyin

    HMI Tag’leri bölümünde tag’ler oluşturup Adres hücresine konu adını yazın. Ayrıntı için HMI tag’leri sayfasına bakın.

Alan Anlamı
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.
İstemci kimliği Boşsa fv- ile başlayan bir kimlik bilgisayar ve bağlantı adından ü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ıdır.
Bool yazma biçimi true / false (varsayılan), 1 / 0 ya da ON / OFF.
Canlı tutma süresi (sn) 0 – 3600, varsayılan 30. Sessiz kalan bağlantıda bu aralıkla sunucuya ping gider; bu sürenin 1,5 katı boyunca hiçbir şey gelmezse bağlantı kopmuş sayılır. 0 kapalıdır.

Adres biçimi

Örnek adresler
 fabrika/hat1/sicaklik // Yükün tamamı tag’in değeri (sayı, true / false, on / off, metin, ISO tarih)   hat1/durum#motor.hiz // Yük JSON belgesi; tag belgenin içindeki değer (# konuyla 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; yol en çok 16 adım olabilir.

Veri tipleri

  • Bool
  • Byte
  • SInt
  • Int
  • UInt
  • DInt
  • UDInt
  • Real
  • LReal
  • String
  • DateTime
  • Yük UTF-8 metindir; 1 MB’tan büyük yük okunmaz. WString desteklenmez.
  • Bool için true / false / 1 / 0 / on / off / yes / no okunur.
  • DateTime için ISO 8601 ya da unix saniye / milisaniye kabul edilir.
  • Tag tipine sığmayan değer kırpılmaz, tag hata alır.

Okuma ve yazma davranışı

  • Okuma: sunucu tutulan (retained) mesajı aboneliğe hemen gönderir. Henüz yayın gelmemiş konunun tag’i hata vermez; değer gelene kadar bekler ve kalitesiz görünür.
  • 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şir, diğer alanlar korunur.
  • Bağlantı kopunca sürücü 1 sn, 2 sn, 5 sn sonra, ardından 10 sn’de bir yeniden dener. Ortak davranış için haberleşme sürücüleri sayfasına bakın.

TLS, şifre ve sınırlar

  • TLS (sunucu sertifikası doğrulanır) için sertifikanın Windows’un güvendiği bir otorite tarafından imzalı olması ve adresin sertifikadaki adla aynı olması gerekir. Kendinden imzalı sertifikayı Windows’a güvenilen olarak ekleyin; adrese IP yerine sertifikadaki adı yazın.
  • TLS (sertifika doğrulanmaz) sunucunun kimliğini denetlemez; ortadaki saldırgan trafiği okuyabilir. Yalnızca kapalı ağlarda kullanın.
  • Şifre Live’da sistem menüsünde Bağlantılar altındaki Şifre gir düğmesiyle girilir; bunun için Ayarlar yetkisi gerekir. Şifre Live bilgisayarında baglanti_sifreleri.json dosyasında şifrelenmeden saklanır; proje veri klasörünü yalnızca Live’ı çalıştıran hesaba açın.
  • MQTT 5, istemci sertifikasıyla kimlik doğrulama ve konu jokerleriyle toplu abonelik yoktur.

Sık görülen hatalar

Bağlantı iletileri Live’da sistem menüsünün Bağlantılar bölümünde görünür. Okuma sırasındaki tag hatalarında ileti gösterilmez; tag yalnızca kalitesiz olur.

İleti Neden ve çözüm
MQTT sunucusu 2000 ms içinde yanıt vermedi Sunucuya ulaşılamıyor. Adresi, portu ve ağ bağlantısını kontrol edin.
MQTT sunucusu kullanıcı adını ya da şifreyi reddetti Kullanıcı ya da şifre yanlış, şifre Live’da girilmemiş olabilir.
MQTT sunucusu istemci kimliğini reddetti Kimlik geçersiz ya da başka bir istemci aynı kimlikle bağlı. İstemci kimliği alanını değiştirin.
MQTT sunucusu bu konuya aboneliği reddetti Kullanıcının o konuyu okuma izni yok.
Sunucu sertifikasına bu bilgisayar güvenmiyor Sertifika kendinden imzalı ya da otorite bilinmiyor. Sertifikayı Windows’a güvenilen olarak ekleyin.
Sunucu sertifikasının adı … ile uyuşmuyor Adrese IP yerine sertifikadaki bilgisayar adını yazın.
… Bool olarak okunamıyor · … bir sayı değil; Int olarak okunamıyor Yükün biçimi tag tipine uymuyor.
Yük geçerli bir JSON belgesi değil · JSON yolu … yükte bulunamadı Adreste # ve bir yol yazdıysanız yük JSON olmalıdır. Yol belgede yoksa alan adını denetleyin.

Sık sorulanlar

Bir JSON alanını nasıl okurum?

Konu adının ardına # ve alan yolunu yazın: hat1/durum#motor.hiz. Alana yazarken yalnızca o alan değişir, belgenin diğer alanları korunur.

İlgili sayfalar

Demoyu deneyin

Demo sürümünü indirin, örnek projeyi açın ve bu özelliği kendi ekranınızda görün.