MQTT Publisher
MQTT Publisher, 2WinScada'daki tag'lerin değer ve kalite değişimlerini bir MQTT broker'a yayınlar. IoT platformları, enerji yönetimi, MES/ERP ve bakım sistemleri ya da Node-RED gibi MQTT istemcileri SCADA verisini veritabanına veya API'ye bağlanmadan bu yolla alabilir.
Bu özellik, cihazlardan MQTT ile veri okuyan MQTT İstemci kanalından farklıdır. MQTT Publisher veri okumaz; çalışan SCADA'daki tag değişimlerini dışarıya aktarır.
Yayın, ana servisten ayrı çalışan MQTT yayıncı servisi tarafından yapılır. Ana servis tag değişimlerini filtreler ve yayıncı servisine iletir; yayıncı servisi de bunları broker'a gönderir.
Ana sistem etkilenmez
MQTT Publisher isteğe bağlıdır. Yayıncı servisi veya broker kapalı, erişilemez ya da yanlış yapılandırılmış olsa bile tag okuma/yazma, arşiv, alarm ve web arayüzü çalışmaya devam eder.
Gereksinimler
- Kurulu lisans MQTT entegrasyonunu içermelidir. Lisans bu hakkı içermiyorsa ayarlar kaydedilebilir, ancak hiçbir veri yayınlanmaz ve bağlantı testi yapılamaz.
- MQTT yayıncı bileşeni kurulum aracıyla kurulmuş ve etkinleştirilmiş olmalıdır.
- Erişilebilir bir MQTT broker ve bu broker'da yayıncı için tanımlı bir kullanıcı gerekir.
Sayfaya erişim
Ayarlar Ayarlar > MQTT Yayıncı Ayarları sayfasından yönetilir.
| Kullanıcı | Menüde görür | Kaydedebilir |
|---|---|---|
| SystemAdmin grubu | Evet | Evet |
| Administrators grubu | Yalnız kurulu lisans MQTT entegrasyonunu içerdiğinde | Evet |
| Diğer kullanıcılar | Hayır | Hayır |
Yetki her istekte sunucuda, kullanıcının kayıtlı grubuna göre yeniden denetlenir. Sayfa adresi elle yazılsa da yetkisiz kullanıcı ayarları göremez.
Sayfanın üstünde duruma göre şu bilgi bantları görünebilir:
- Bu kurulumun lisansı MQTT entegrasyonunu içermiyor...: Ayarlar kaydedilir, ancak lisans bu özelliği içerene kadar veri yayınlanmaz.
- Henüz web üzerinden ayar kaydedilmedi...: Form, servis yapılandırma dosyalarındaki mevcut değerlerle dolduruldu (bkz. Yapılandırma dosyasıyla ilişki).
- MQTT yayıncı ayarları henüz yapılandırılmadı.: Kayıtlı bir web ayarı yok ve yapılandırma dosyasındaki değerler okunamadı; form varsayılan değerlerle açıldı.
- Bu ayarları değiştirme yetkiniz yok...: Değerler salt okunur gösterilir.
Servis durumu
Servis durumu kartı, ana servisin yayıncı servisini nasıl gördüğünü gösterir. Kartın sağ üstündeki Durumu yenile düğmesi bilgileri yeniden okur.
| Yayıncı servisi | Anlamı | Yapılacak |
|---|---|---|
| Kurulu değil | MQTT yayıncı bileşeni bu kurulumda etkin değil. | Bileşeni kurulum aracıyla kurun. Ayarlar şimdiden kaydedilebilir; bileşen kurulunca uygulanır. |
| Erişilebilir | Yayıncı servisi cevap veriyor. | Karttaki diğer satırları kontrol edin. |
| Erişilemiyor | Yayıncı servisi durmuş, adresi yanlış veya ağ erişimi engelli. | Servisin çalıştığını kontrol edin. Kaydedilen ayarlar servis erişilebilir olduğunda otomatik uygulanır. |
| Üretici anahtarı reddedildi | Yayıncı servisi ile ana servis arasındaki doğrulama başarısız oldu. | Kurulumu kurulum aracıyla onarın veya sistem entegratörünüze başvurun. |
| Güncel değil | Yayıncı servisi web ayarlarını desteklemeyen eski bir sürüm. | Yayıncı servisini ana servisle aynı sürüme yükseltin. |
| Güvensiz adres | Yayıncı servisinin adresi uzak bir http adresi; parola güvenlik nedeniyle gönderilmez. | https veya aynı sunucuda yerel bir adres kullanın. |
Kartın diğer satırları:
| Satır | Beklenen | Değilse |
|---|---|---|
| Etkin ayar kaynağı | Kayıttan sonra Web ayarları | Servis yapılandırma dosyası görünüyorsa ayarlar yayıncı servisine henüz iletilmedi. Yaklaşık 30 saniye bekleyip Durumu yenile düğmesine basın. |
| Ayarlar eşitlendi | Evet | Ayarların iletilmesini bekleyin. |
| Broker'a bağlı | Evet | Yayıncı servisi broker bağlantısını yalnız gönderilecek mesaj olduğunda açar. Tag değişimi varken Hayır kalıyorsa Bağlantıyı test et ile broker'ı doğrulayın. |
| Lisans MQTT içeriyor | Evet | Kurulu lisans MQTT entegrasyonunu içermiyor; yayın yapılmaz. |
| Servis yayına izinli | Evet | Lisans değişikliğinden sonra yayıncı servisini yeniden başlatın; sorun sürerse sistem entegratörünüze başvurun. |
Ayarlar
Genel
Yayın etkin: Açıkken tag değişiklikleri broker'a yayınlanır. MQTT yayıncı bileşeni kurulu değilse bu ayarın etkisi olmaz. Yayını geçici olarak durdurmak için anahtarı kapatıp kaydedin; yeniden başlatma gerekmez.
Kartın altında ayarların en son ne zaman kaydedildiği (Son güncelleme) gösterilir.
Broker
| Alan | Açıklama |
|---|---|
| Broker adresi | Broker'ın sunucu adı veya IP adresi. Yayın etkinken zorunludur. En fazla 255 karakter; boşluk içeremez. |
| Port | 1–65535. Şifresiz MQTT için genellikle 1883, TLS için genellikle 8883 kullanılır. Varsayılan 1883. |
| İstemci kimliği (Client ID) | Broker'daki MQTT istemci kimliği, en fazla 128 karakter. Boş bırakılırsa servis bir istemci kimliği kullanır. Aynı broker'a bağlanan her yayıncı için benzersiz olmalıdır. |
Kimlik doğrulama
| Alan | Açıklama |
|---|---|
| Kullanıcı adı | Broker kullanıcısı, en fazla 256 karakter. Boş bırakılırsa anonim bağlanılır. |
| Parola | En fazla 512 karakter. Parola kayıtlıysa alanın altında Kayıtlı parola var yazar. Alanı boş bırakmak kayıtlı parolayı korur; değiştirmek için yeni parolayı girin. |
| Kayıtlı parolayı kaldır | Yalnız kayıtlı bir parola varken görünür. İşaretlenip kaydedilirse parola silinir. |
Kayıtlı parola, girildiği bağlantı hedefine bağlıdır. Broker adresi, Port, Kullanıcı adı veya TLS kullan değişirse ya da sertifika istisnalarından biri yeni açılırsa sayfa parolanın yeniden girilmesini ister. Parolayı yeniden girin veya Kayıtlı parolayı kaldır seçeneğini işaretleyin. Bir sertifika istisnasını kapatmak parolayı korur.
Kayıtlı parola çözülemedi uyarısı, parolanın başka bir kurulumdan geri yüklendiği gibi durumlarda görünür. Parolayı yeniden girin.
TLS
| Alan | Açıklama |
|---|---|
| TLS kullan | Broker bağlantısını TLS ile şifreler. Üretim ortamında önerilir. |
| Güvenilmeyen sertifikalara izin ver | Broker sertifikası güvenilir değilse de bağlanır. |
| Sertifika zinciri hatalarını yok say | Sertifika zinciri doğrulanamasa da bağlanır. |
| Sertifika iptal kontrolü hatalarını yok say | Sertifikanın iptal durumu denetlenemese de bağlanır. |
Sertifika istisnaları yalnız TLS kullan işaretliyken seçilebilir.
Sertifika istisnaları
Sertifika istisnaları bağlantıyı ortadaki adam saldırılarına açık bırakır. Yalnız test ortamlarında veya güvenilir ağlarda kullanın.
Yayın
| Alan | Açıklama |
|---|---|
| Topic biçimi | Noktalı (Kanal.Cihaz.Etiket), Yol (Kanal/Cihaz/Etiket) veya Her ikisi. Her ikisi her değişimi iki ayrı topic'e yayınlar. |
| Topic ön eki | İsteğe bağlı, en fazla 128 karakter. Topic'in başına, seçilen biçimin ayıracıyla eklenir. / ile başlayamaz; + veya # içeremez. |
| Örnek topic | Seçilen biçim ve ön ekle oluşacak topic'leri gösterir. |
| Hizmet kalitesi (QoS) | 0 - En fazla bir kez, 1 - En az bir kez (varsayılan) veya 2 - Tam olarak bir kez. |
| Mesajları sakla (retain) | Açıkken broker her topic'in son mesajını saklar; yeni bağlanan abone son değeri hemen alır. Varsayılan kapalı. |
- Ön ekin sonuna
/veya.koymayın; ayıraç otomatik eklenir. Sonda ayıraç olursa topic'te boş bir seviye oluşur. - QoS 2'yi seçmeden önce broker'ın desteklediğini doğrulayın; bazı broker'lar QoS 2'yi desteklemez veya düşürür.
- Retain açıkken topic biçimini veya ön ekini değiştirirseniz eski topic'lerde saklanan mesajlar broker'da kalır. Bunları broker araçlarıyla temizleyin.
Abone sistemler için değişiklik
Topic biçimi ve ön eki, abone sistemlerin dinlediği adresi belirler. Bunları değiştirmeden önce abone sistemleri yeni topic'lere hazırlayın.
Etiket filtreleri
Hangi tag'lerin yayınlanacağını belirler. Her satıra bir düzenli ifade (regex) yazılır. İfade, tag'in Kanal.Cihaz.Etiket biçimindeki tam adına uygulanır ve büyük/küçük harfe duyarsızdır.
- Liste boşsa tüm tag'ler yayınlanır (Tüm etiketler yayınlanır.).
- Bir tag, ifadelerden herhangi biriyle eşleşirse yayınlanır.
- En fazla 100 ifade tanımlanabilir; her ifade en fazla 512 karakter olabilir.
- İleri/geri bakış (lookaround), geri başvuru ve atomik gruplar desteklenmez.
Örnekler:
| İfade | Seçilen tag'ler |
|---|---|
^Kanal1\..* | Kanal1 kanalındaki tüm tag'ler |
^Kanal1\.Analizor1\..* | Kanal1 kanalındaki Analizor1 cihazının tüm tag'leri |
^.*\.Sicaklik$ | Adı Sicaklik ile biten tüm tag'ler |
İlk devreye almada veri hacmini sınırlamak için dar bir filtreyle başlamanız önerilir.
Bağlantı testi ve kaydetme
Bağlantıyı test et düğmesi, formdaki bağlantı bilgileriyle (adres, port, istemci kimliği, kullanıcı adı, parola, TLS seçenekleri) broker'a geçici bir bağlantı açar:
- Test ayarları kaydetmez ve çalışan yayını etkilemez.
- Testi yayıncı servisi yapar; sonuç, yayıncı servisinin çalıştığı sunucunun ağ erişimini yansıtır.
- Geçici bağlantı, istemci kimliğinin sonuna
-test-ve rastgele bir ek koyar. Broker erişim kuralları istemci kimliğine bağlıysa bu biçimi de kapsamalıdır. - Bir test en fazla yaklaşık 10 saniye sürer ve aynı anda yalnız bir test çalışır.
- Lisans MQTT entegrasyonunu içermiyorsa test yapılamaz.
Başarılı testte Broker bağlantısı başarılı (… ms). mesajı görünür. Başarısız testlerde gösterilen mesajlar Sorun giderme bölümündedir.
Kaydet ayarları veritabanına yazar ve hemen yayıncı servisine gönderir; servisleri yeniden başlatmak gerekmez:
- Yayın etkin ve etiket filtreleri hemen geçerli olur.
- Broker adresi, kimlik bilgileri veya TLS seçenekleri değiştiyse yayıncı servisi mevcut bağlantıyı kapatır ve sıradaki mesajla yeni ayarlarla bağlanır.
- Topic biçimi, ön ek, QoS ve retain sıradaki mesajdan itibaren uygulanır.
- Ana servis, ayarların yayıncı servisinde güncel olup olmadığını yaklaşık 30 saniyede bir denetler ve gerekirse yeniden gönderir. Yayıncı servisi erişilemezken kaydedilen ayarlar, servis yeniden erişilebilir olduğunda otomatik uygulanır.
Topic ve mesaj biçimi
Topic'ler kanal, cihaz ve tag adlarından oluşur. Örnekler:
| Topic biçimi | Ön ek yokken | Ön ek tesis1 iken |
|---|---|---|
| Noktalı | Kanal1.Analizor1.AktifGuc | tesis1.Kanal1.Analizor1.AktifGuc |
| Yol | Kanal1/Analizor1/AktifGuc | tesis1/Kanal1/Analizor1/AktifGuc |
| Her ikisi | Her iki topic'e ayrı yayın | Her iki topic'e ayrı yayın |
Yol biçimi MQTT joker karakterleriyle abone olmaya uygundur:
Kanal1/# Kanal1 kanalındaki tüm mesajlar
+/Analizor1/# Her kanaldaki Analizor1 cihazı
+/+/Sicaklik Adı Sicaklik olan tüm tag'lerKanal, cihaz veya tag adının değişmesi topic'i de değiştirir; abone sistemler bunu bir arayüz değişikliği olarak ele almalıdır.
Her mesaj aşağıdaki alanları içeren bir JSON nesnesidir:
| Alan | Anlamı | Tür |
|---|---|---|
Cn | Kanal adı | Metin |
Dn | Cihaz adı | Metin |
Tn | Tag adı | Metin |
Q | 2WinScada sayısal kalite kodu | Tam sayı |
V | Tag değeri; sayı, mantıksal değer, metin, nesne veya null olabilir | JSON değeri |
Ts | Değişim zamanı, UTC tabanlı Unix epoch milisaniye | Tam sayı |
{
"Cn": "Kanal1",
"Dn": "Analizor1",
"Tn": "AktifGuc",
"Q": 192,
"V": 42.5,
"Ts": 1786280400000
}Abone uygulama V alanını yalnız metin olarak değil, JSON değer türünü koruyarak işlemelidir. Topic biçimi, ön ek, QoS ve retain ayarları mesajın içeriğini değiştirmez.
Teslimat davranışı
- QoS 1 (varsayılan) en az bir kez teslim eder; ağ tekrarlarında nadiren aynı mesaj iki kez gelebilir. Gerekiyorsa abone uygulama
Cn,Dn,TnveTsalanlarıyla yinelenen mesajları ayıklamalıdır. - Retain kapalıyken sonradan bağlanan abone son değeri otomatik almaz; bir sonraki değişimi bekler.
- Gönderilmeyi bekleyen değişimler yalnız bellekte ve sınırlı kapasiteli kuyruklarda tutulur. Yayıncı servisi veya broker uzun süre erişilemezse kuyruk dolar ve yeni değişimler düşürülebilir. Servis yeniden başlatıldığında bekleyen değişimler korunmaz.
- Bağlantı geri geldiğinde bekleyen değişimler sırayla gönderilir; abone uygulama gecikmiş zaman damgalarını dikkate almalıdır.
- MQTT Publisher geçmiş verileri yeniden göndermez; yalnız çalışma sırasında oluşan değişimleri aktarır.
- Her ikisi topic biçimi her değişim için iki mesaj üretir ve broker yükünü artırır.
Güvenlik
- Broker parolası şifrelenmiş olarak saklanır ve sayfaya hiçbir zaman geri gönderilmez.
- Üretimde TLS kullan seçeneğini açın ve sertifika istisnalarını kapalı tutun.
- Her tesis veya yayıncı için ayrı bir broker kullanıcısı ve istemci kimliği kullanın; bu kullanıcıya broker'da yalnız gerekli topic'ler için yazma yetkisi verin.
- Ana servis, broker parolasını yayıncı servisine yalnız
httpsveya aynı sunucudaki yerel bir adres üzerinden gönderir. Yayıncı servisinin portlarını dış ağa açmayın.
Yapılandırma dosyasıyla ilişki
2.10 öncesinde MQTT Publisher yalnız servis yapılandırma dosyalarından ayarlanabiliyordu. Bu ayarlar yükseltmeden sonra da çalışmaya devam eder:
| Durum | Geçerli ayar kaynağı |
|---|---|
| Web sayfasından henüz hiç kaydedilmedi | Servis yapılandırma dosyaları; önceki davranış aynen sürer. |
| Web sayfasından en az bir kez kaydedildi | Web ayarları. Dosyadaki yayın anahtarı, broker, TLS, topic, QoS, retain ve filtre değerleri artık kullanılmaz. |
Web'de henüz kayıt yoksa sayfa, formu mevcut dosya ayarlarıyla doldurur:
- Parola içe aktarılmaz. Mevcut yapılandırma parola kullanıyorsa sayfa bunu belirtir; kaydetmeden veya test etmeden önce parolayı girin ya da Parola olmadan kaydet seçeneğini işaretleyin.
- Kaydet düğmesine basılana kadar hiçbir şey değişmez ve dosya ayarları geçerli kalır.
Web'den bir kez kaydettikten sonra arayüzden dosya ayarlarına geri dönülemez. Yayını durdurmak için Yayın etkin anahtarını kapatın.
Bazı teknik ayarlar her durumda servis yapılandırma dosyalarında kalır ve web sayfasından değiştirilemez; bunlar için sistem entegratörünüze başvurun. Yayın etkin anahtarı yalnız bileşen etkinken yayını açar.
Yedekleme ve geri yükleme
MQTT yayıncı ayarları yapılandırma yedeğinde MQTT Yayıncı Ayarları modülü olarak yer alır (bkz. Yedekleme ve Geri Yükleme):
- Broker parolası yedeğe hiçbir zaman yazılmaz.
- Bu modül yalnız bu sayfayı yönetebilen kullanıcıların aldığı yedeğe yazılır ve yalnız onların başlattığı geri yüklemede uygulanır.
- Geri yüklemede hedefteki kayıtlı parola yalnız bağlantı hedefi (adres, port, kullanıcı adı, TLS) aynıysa ve sertifika doğrulaması gevşetilmediyse korunur. Aksi halde parolayı sayfadan yeniden girin.
- Geçersiz ayar içeren bir kayıt, yayın kapalı olarak geri yüklenir.
- Geri yüklenen ayarlar servis yeniden başlatılmadan, yaklaşık 30 saniye içinde uygulanır.
Sorun giderme
Bağlantı testi mesajları
| Mesaj | Yapılacak |
|---|---|
| Kullanıcı adı veya parola hatalı. | Broker kullanıcısını ve parolayı kontrol edin. |
| Broker bu istemciyi yetkilendirmedi. | Broker'da kullanıcının ve istemci kimliğinin yetkilerini kontrol edin. |
| Broker istemci kimliğini kabul etmedi. | Farklı bir İstemci kimliği deneyin. |
| Broker bu istemciyi engelledi. | Broker tarafındaki engeli kaldırın. |
| Broker şu anda hizmet veremiyor. | Broker'ın durumunu kontrol edin. |
| Broker MQTT protokol sürümünü desteklemiyor. | Broker'ın MQTT dinleyicisinin ayarlarını kontrol edin. |
| Bağlantı zaman aşımına uğradı. | Adres, port ve güvenlik duvarı kurallarını kontrol edin. |
| Broker'a ulaşılamadı (adres çözülemedi veya bağlantı reddedildi). | Adresin yayıncı servisinin sunucusundan çözülebildiğini ve portun açık olduğunu kontrol edin. |
| TLS el sıkışması başarısız oldu (sertifika veya protokol hatası). | TLS portunu, broker sertifikasını ve sunucudaki güvenilen sertifikaları kontrol edin. |
| Başka bir bağlantı testi sürüyor; lütfen biraz sonra tekrar deneyin. | Birkaç saniye sonra yeniden deneyin. |
| Kayıtlı parola çözülemedi; parolayı yeniden girin. | Parolayı yeniden girin. |
Hata mesajları
| Kod | Mesaj | Yapılacak |
|---|---|---|
| 4930 | MQTT yayıncı servisine ulaşılamadı. | Yayıncı servisinin kurulu ve çalışır durumda olduğunu kontrol edin. |
| 4931 | MQTT yayıncı servisi bu kurulumun üretici anahtarını reddetti. | Kurulumu kurulum aracıyla onarın veya sistem entegratörünüze başvurun. |
| 4932 | Bu kurulumun lisansı MQTT entegrasyonunu içermediği için bağlantı testi yapılamaz. | MQTT entegrasyonunu içeren bir lisans kurun. |
| 4933 | MQTT broker bağlantı testi başarısız oldu. | Mesajın devamındaki ayrıntıya göre yukarıdaki tabloyu kullanın. |
| 4934 | MQTT yayıncı ayarları geçersiz; hiçbir değişiklik kaydedilmedi. | Alan kurallarını ve parola uyarılarını kontrol edin. |
Durum kartı olumlu ama mesaj gelmiyor
- Tag'in tam adı etiket filtrelerinden biriyle eşleşmelidir.
- Abone olunan topic, seçilen topic biçimi ve ön ekiyle uyumlu olmalıdır.
- Tag gerçekten değer veya kalite değişimi üretmelidir; değeri sabit kalan tag için mesaj gönderilmez.
- Yayıncı servisi yeni başladıysa ayarlar yeniden gönderilene kadar (en fazla yaklaşık 30 saniye) yayın beklenir.
- Uzun süreli kesintilerde kuyruk dolmuş olabilir; etiket filtrelerini daraltarak gereksiz trafiği azaltın.