MQTT İstemci
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.

Bağlantı Parametereleri sekmesi:
| Alan | Açıklama | Varsayılan | Aralık |
|---|---|---|---|
| Host | Broker'ı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 girin | Zorunlu; IP adresi, noktalı bir DNS adı veya localhost |
| Port | Broker'ın TCP portu. Yalnızca Tcp bağlantısında kullanılır. | 1883 | Sayı |
| Bağlantı Tipi | Tcp, WebSocket veya WebSocket4Net | Tcp | — |
| ClientID | Broker'a bildirilen istemci kimliği. Yeni kanalda benzersiz bir değer otomatik üretilir. | Otomatik üretilen rastgele değer | Aynı 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 Versiyon | V310 (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çalama | Bü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 Seviyesi | JSON mesajlarında iç içe nesnelerin kaç seviyeye kadar ayrı tag adreslerine açılacağı (bkz. JSON mesajları) | 2 | 1–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.10veyabroker.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:
| Alan | Açıklama | Varsayılan |
|---|---|---|
| Kullanıcı Adı | Broker kullanıcı adı. Boş bırakılırsa kimlik bilgisi gönderilmez. | Boş |
| Şifre | Broker şifresi. Kayıtlı şifre güvenlik nedeniyle gösterilmez (********); değiştirmek için yeni değer yazın, alanı boş bırakmak şifreyi silmez | Boş |
| Tls Tip | None, Tls, Tls11, Tls12 veya Tls13 | None |
| 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.

Gelişmiş Parametreler sekmesi:
| Alan | Açıklama | Varsayılan | Aralık |
|---|---|---|---|
| Zaman aşımı [ms] | Broker ile iletişimde yanıt bekleme süresi | 10000 | 3000–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. | 0 | 0–86400 |
| Keep Alive [sn] | Bağlantının canlı tutulması için broker ile yapılan yoklama aralığı. 0 yoklamayı kapatır. | 60 | Sayı |
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.

Parametreler sekmesi:
| Alan | Açıklama | Varsayılan | Aralık |
|---|---|---|---|
| Topic | Cihazı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. | 0 | Zorunlu; 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

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.
- Kanalın çalıştığından ve broker'a bağlı olduğundan emin olun.
- 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. - Adı, Node Id, Veri Tipi ve Değer sütunlarını inceleyin.
- Eklenecek satırları seçip Seç butonuna tıklayın ve onay sorusunu kabul edin.

İç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/falsedeğ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.
| Mesaj | Tag Adres örneği |
|---|---|
| Düz değer içeren mesaj | Konunun 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:
{
"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 Seviyesi | Oluşan adres | Değer |
|---|---|---|
| 1 | fabrika/hat1/olcum.motor.sensor | {"akim":12.5} (metin) |
| 2 | fabrika/hat1/olcum.motor.sensor.akim | 12.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
| Belirti | Kontroller |
|---|---|
| Bağlantı kurulamıyor | Host, 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 kuruluyor | Aynı 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ıyor | Tls Tip olarak Tls veya Tls12 seçin ve Port değerini broker'ın TLS portuna ayarlayın. |
| Tag kalitesi Bad veya değer gelmiyor | Tag 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 geliyor | JSON 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ı yenilenmiyor | Kanaldaki Bağlantıyı yeniden başlatmak için boşta kalma süresi [s] değerini 0'dan büyük yapın. |