Skip to content
Metin 2.10'a göre güncellendi; ekran görüntüleri 2.5.0 sürümünden ve arayüzden farklı olabilir.

MQTT İstemci ​

Yaklaşık 7 dk okuma

MQTT istemcisi, 2WinScada'nın bir MQTT sunucusuna (broker) bağlanıp belirlenen konulara (topic) abone olmasını ve gelen mesajlardaki değerleri tag'lere aktarmasını sağlar. Her kanal broker ile tek bir bağlantı kurar; kanal altındaki her cihaz bir konu filtresine abone olur.

Desteklenen başlıca özellikler:

  • TCP veya WebSocket üzerinden bağlantı; MQTT 3.1.0, 3.1.1 ve 5.0 sürümleri
  • Kullanıcı adı / şifre ile kimlik doğrulama ve TLS
  • Düz metin (sayı, metin, true/false) ve JSON mesaj içeriği; JSON nesnelerinin alanlarına ve dizi elemanlarına noktalı yol ile erişim
  • Broker'dan gelen konuların ağaç görünümünde listelenmesi ve tag'lerin toplu içe aktarılması
  • Tag'e yazılan değerin tag adresindeki konuya yayınlanması

Lisans ​

MQTT, Standard ve Professional lisans sürümlerinde kullanılabilir; Starter sürümünde kullanılamaz. Lisans ayrıntıları için Lisans sayfasına bakın.

Kanal Tanımı ​

Yeni kanal penceresinin Genel sekmesinde kanal adı girilir ve Bağlantı Tipi olarak Mqtt seçilir. Diğer sekmelerdeki ayarlar yapıldıktan sonra Kaydet butonuna tıklanır.

MQTT kanalının Bağlantı Parametereleri sekmesi

Bağlantı Parametereleri sekmesi:

AlanAçıklamaVarsayılanAralık
HostBroker'ın IP adresi veya DNS adı. WebSocket bağlantısında tam adres yazılır (aşağıdaki açıklamaya bakın).Yer tutucu bir adres gelir; kaydetmeden önce mutlaka kendi broker adresinizi girinZorunlu; IP adresi, noktalı bir DNS adı veya localhost
PortBroker'ın TCP portu. Yalnızca Tcp bağlantısında kullanılır.1883Sayı
Bağlantı TipiTcp, WebSocket veya WebSocket4NetTcp—
ClientIDBroker'a bildirilen istemci kimliği. Yeni kanalda benzersiz bir değer otomatik üretilir.Otomatik üretilen rastgele değerAynı broker'a bağlanan her istemcide farklı olmalıdır
Temiz Oturumİşaretliyse her bağlantıda broker'da yeni bir oturum açılır ve abonelikler yeniden yapılır. İşaretli değilse ve broker önceki oturumu saklamamışsa, yeniden bağlantıda abonelikler yine yeniden yapılır.İşaretli—
Protokol VersiyonV310 (3.1.0), V311 (3.1.1) veya V500 (5.0). Broker'ınızın desteklediği sürümü açıkça seçin.V311—
Paket ParçalamaBüyük paketlerin parçalı gönderilmesine izin verir. Broker parçalı paketleri desteklemiyorsa (bazı bulut broker'ları) seçimi kaldırın.İşaretli—
JSON Derinlik SeviyesiJSON mesajlarında iç içe nesnelerin kaç seviyeye kadar ayrı tag adreslerine açılacağı (bkz. JSON mesajları)21–15

Bağlantı Tipi seçimine göre Host alanı farklı yazılır:

  • Tcp: Yalnızca adres yazılır, örn. 192.168.1.10 veya broker.local. Port, Port alanından alınır.
  • WebSocket / WebSocket4Net: Şema, port ve yol dahil tam adres yazılır, örn. ws://192.168.1.10:8080/mqtt. Bu durumda Port alanı kullanılmaz. İki seçenek çalışma zamanında aynı şekilde davranır.

Aynı sekmedeki Yetkilendirme grubu:

AlanAçıklamaVarsayılan
Kullanıcı AdıBroker kullanıcı adı. Boş bırakılırsa kimlik bilgisi gönderilmez.Boş
ŞifreBroker şifresi. Kayıtlı şifre güvenlik nedeniyle gösterilmez (********); değiştirmek için yeni değer yazın, alanı boş bırakmak şifreyi silmezBoş
Tls TipNone, Tls, Tls11, Tls12 veya Tls13None
Sertifika Dosyası... butonu Sertifika Dosya Seçimi penceresini açar; .crt, .der, .cer veya .pfx uzantılı bir dosya seçilebilir veya yüklenebilir.Boş

TLS ve sertifika

None dışındaki tüm seçeneklerde bağlantı TLS ile kurulur; broker şifresiz portta çalışıyorsa bağlantı kurulamaz. Bu sürümde istemci sertifikasıyla kimlik doğrulama desteklenmez. Broker'a yalnız güvenilir ağ üzerinden bağlanın ve TLS kullanırken Port değerini broker'ın TLS portuna (genellikle 8883) ayarlayın.

MQTT kanalının Gelişmiş Parametreler sekmesi

Gelişmiş Parametreler sekmesi:

AlanAçıklamaVarsayılanAralık
Zaman aşımı [ms]Broker ile iletişimde yanıt bekleme süresi100003000–86400000
Bağlantıyı yeniden başlatmak için boşta kalma süresi [s]Bu süre boyunca hiçbir tag'e değer gelmezse bağlantı kapatılıp yeniden kurulur. 0 bu denetimi kapatır.00–86400
Keep Alive [sn]Bağlantının canlı tutulması için broker ile yapılan yoklama aralığı. 0 yoklamayı kapatır.60Sayı

Aynı sekmedeki Last-Will grubunda Last-Will Topic, Last-Will QoS (0, 1 veya 2), Last-Will Retain ve Last-Will Mesajı alanları bulunur. MQTT'de Last-Will, istemcinin bağlantısı beklenmedik şekilde koptuğunda broker'ın belirtilen konuya yayınladığı mesajdır.

WARNING

Last-Will bu sürümde desteklenmez. 2WinScada'nın çevrimdışı olduğunu izlemek için broker tarafındaki bağlantı izleme olanaklarını kullanın.

Bağlantı davranışı ​

  • Kanal, altında etkin ve lisansın izin verdiği en az bir cihaz varsa broker'a bağlanır.
  • Bağlantı koptuğunda 2WinScada yeniden bağlanmayı dener; iki deneme arasında en az 30 saniye beklenir. Tek bir bağlantı denemesi en fazla 30 saniye sürer.
  • Bağlantı kurulduğunda etkin cihazların konularına yeniden abone olunur.
  • Bağlantı veya abonelik başarısız olursa cihazın ve tag'lerin kalitesi Bad olur.

Cihaz Tanımı ​

Kanal üzerinde sağ tık menüsünden Yeni Cihaz seçilir. Genel sekmesindeki alanlar diğer protokollerdeki gibi doldurulur.

MQTT cihazının Parametreler sekmesi

Parametreler sekmesi:

AlanAçıklamaVarsayılanAralık
TopicCihazın abone olacağı konu filtresi. # broker'daki tüm konuları, fabrika/hat1/# gibi bir değer yalnızca bu önekle başlayan konuları alır.#Zorunlu; en fazla 2048 karakter
Subscription yeniden başlatmak için boşta kalma süresi [s]Değer kaydedilir ancak bu sürümde aboneliği etkilemez.0Zorunlu; 0–86400

Yeni cihazda Topic alanı # ile dolu gelir. Broker'da çok sayıda konu yayınlanıyorsa gereksiz mesaj almamak için filtreyi cihazın konularıyla daraltın.

Abonelikler QoS 0 ile yapılır. Uzun süre veri gelmediğinde bağlantının yenilenmesi için kanaldaki Bağlantıyı yeniden başlatmak için boşta kalma süresi [s] alanını kullanın.

Konu filtresi

# karakterini yalnızca filtrenin sonunda kullanın. Gelen bir mesaj, konusu filtrenin # çıkarılmış hâliyle başlıyorsa cihaza atanır. + joker karakteri standart MQTT kuralıyla tek bir konu seviyesini eşleştirir (ör. fabrika/+/sicaklik).

Tag'leri içe aktarma ​

MQTT cihazının Gelişmiş Parametreler sekmesi

Gelişmiş Parametreler sekmesinin Değişkenler grubundaki Değişkenleri içe aktar butonu, broker'dan gelen konuları listeler ve seçilen değerleri tag olarak ekler. Buton yalnızca kaydedilmiş cihazlarda etkindir.

  1. Kanalın çalıştığından ve broker'a bağlı olduğundan emin olun.
  2. Değişkenleri içe aktar butonuna tıklayın. Açılan pencerede, cihazın Topic filtresine uyan konular / ayracına göre klasörler hâlinde listelenir.
  3. Adı, Node Id, Veri Tipi ve Değer sütunlarını inceleyin.
  4. Eklenecek satırları seçip Seç butonuna tıklayın ve onay sorusunu kabul edin.

MQTT değişken içe aktarma penceresi

İçe aktarma sonunda eklenen, hata alınan ve desteklenmeyen öğe sayıları bildirilir. Yalnızca değer taşıyan satırlar tag olarak eklenir; klasör satırları desteklenmeyen öğe olarak sayılır. Eklenen tag'lerde:

  • Adres, satırın Node Id değeridir.
  • Tag adı, adresteki / karakterleri . ile değiştirilerek oluşturulur.
  • Veri Tipi, gelen değerden tahmin edilir: sayılar Real, true/false değerleri Bool, diğerleri String olur.
  • Tag Sadece Okuma olarak işaretlenir ve Güncelleme Süresi[s] 2 saniye olur.

TIP

Liste, kanal broker'a bağlandıktan sonra gelen mesajlardan oluşturulur ve en fazla 4096 değer tutar. Seyrek yayınlanan bir konu listede görünmüyorsa bir mesaj gelmesini bekleyin veya tag'i elle tanımlayın. Kanal bağlı değilse liste boş gelir.

Tag Tanımı ​

Tag'ler cihazın tag tablosunda diğer protokollerdeki gibi tanımlanır (bkz. Tag Yönetimi). Adres, mesajın geldiği konudan ve gerekiyorsa JSON içindeki alan yolundan oluşur. Adres büyük/küçük harfe duyarlıdır ve gelen veriyle birebir eşleşmelidir.

MesajTag Adres örneği
Düz değer içeren mesajKonunun tamamı: fabrika/hat1/sicaklik
JSON nesnesinin alanıKonu, nokta ve alan adı: fabrika/hat1/olcum.sicaklik
İç içe JSON alanıfabrika/hat1/olcum.motor.akim
JSON dizisinin elemanıEleman sırası 0'dan başlar: fabrika/hat1/olcum.degerler.0
  • Konu seviyeleri / ile, JSON alanları . ile ayrılır. Konu ile JSON yolu arasında da . kullanılır.
  • { ile başlayıp } ile biten veya [ ile başlayıp ] ile biten mesajlar JSON olarak işlenir. Diğer mesajlar tek bir değer kabul edilir ve adres konunun kendisidir.
  • Gelen değer, tag'in Veri Tipi'ne çevrilir.
  • Güncelleme Süresi[s], değer değişikliklerinin tag'e en sık hangi aralıkla yansıtılacağını belirler; arada gelen son değer bir sonraki aralıkta yansıtılır.
  • 4 MB'tan büyük mesajlar ve 2048 karakterden uzun konular yok sayılır.

JSON mesajları ​

Örnek olarak fabrika/hat1/olcum konusuna şu mesaj gelsin:

json
{
  "motor": {
    "sensor": {
      "akim": 12.5
    }
  }
}

JSON Derinlik Seviyesi, kökteki alanların altında kaç seviyeye kadar inileceğini belirler. Bu seviyenin altında kalan nesne veya dizi tek bir metin değer (JSON metni) olarak alınır:

JSON Derinlik SeviyesiOluşan adresDeğer
1fabrika/hat1/olcum.motor.sensor{"akim":12.5} (metin)
2fabrika/hat1/olcum.motor.sensor.akim12.5 (sayı)

Seviyeyi ihtiyaçtan yüksek seçmek, yoğun mesaj trafiğinde işlem yükünü artırabilir.

Yazma ​

Sadece Okuma işaretli olmayan bir tag'e değer yazıldığında, değer düz metin olarak tag'in Adres alanındaki konuya yayınlanır (QoS 0, retain kapalı). Adres bir JSON yolu içeriyorsa yol da konu adının parçası sayılır; bir JSON alanına yazılamaz. Yazma için yalnızca adresi bir konudan oluşan tag'ler kullanın.

Sorun giderme ​

BelirtiKontroller
Bağlantı kurulamıyorHost, Port ve Bağlantı Tipi değerlerini, güvenlik duvarını, broker'ın kullanıcı adı/şifre gereksinimini ve Protokol Versiyon seçimini kontrol edin. WebSocket için Host alanına tam ws:// veya wss:// adresi yazın.
Bağlantı sürekli kopup yeniden kuruluyorAynı ClientID değerini kullanan başka bir istemci veya kanal olup olmadığını kontrol edin; broker aynı kimlikle bağlanan önceki istemciyi düşürür.
TLS ile bağlanılamıyorTls Tip olarak Tls veya Tls12 seçin ve Port değerini broker'ın TLS portuna ayarlayın.
Tag kalitesi Bad veya değer gelmiyorTag Adres değerinin konu ve JSON yolu ile birebir aynı olduğunu ve cihazın Topic filtresinin bu konuyu kapsadığını kontrol edin.
JSON alanı metin olarak geliyorJSON Derinlik Seviyesi değerini artırın.
Değişkenleri içe aktar listesi boşKanalın bağlı olduğunu ve kanal bağlandıktan sonra konuya en az bir mesaj geldiğini kontrol edin.
Uzun süre veri gelmeyince bağlantı yenilenmiyorKanaldaki Bağlantıyı yeniden başlatmak için boşta kalma süresi [s] değerini 0'dan büyük yapın.

2WinScada 2.10