Skip to content

MQTT Publisher ​

Yaklaşık 11 dk okuma

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ürKaydedebilir
SystemAdmin grubuEvetEvet
Administrators grubuYalnız kurulu lisans MQTT entegrasyonunu içerdiğindeEvet
Diğer kullanıcılarHayırHayı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ı servisiAnlamıYapılacak
Kurulu değilMQTT yayıncı bileşeni bu kurulumda etkin değil.Bileşeni kurulum aracıyla kurun. Ayarlar şimdiden kaydedilebilir; bileşen kurulunca uygulanır.
ErişilebilirYayıncı servisi cevap veriyor.Karttaki diğer satırları kontrol edin.
ErişilemiyorYayı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ı reddedildiYayı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ğilYayıncı servisi web ayarlarını desteklemeyen eski bir sürüm.Yayıncı servisini ana servisle aynı sürüme yükseltin.
Güvensiz adresYayı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ırBeklenenDeğ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şitlendiEvetAyarların iletilmesini bekleyin.
Broker'a bağlıEvetYayı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çeriyorEvetKurulu lisans MQTT entegrasyonunu içermiyor; yayın yapılmaz.
Servis yayına izinliEvetLisans 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 ​

AlanAçıklama
Broker adresiBroker'ın sunucu adı veya IP adresi. Yayın etkinken zorunludur. En fazla 255 karakter; boşluk içeremez.
Port1–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 ​

AlanAçıklama
Kullanıcı adıBroker kullanıcısı, en fazla 256 karakter. Boş bırakılırsa anonim bağlanılır.
ParolaEn 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ırYalnı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 ​

AlanAçıklama
TLS kullanBroker bağlantısını TLS ile şifreler. Üretim ortamında önerilir.
Güvenilmeyen sertifikalara izin verBroker sertifikası güvenilir değilse de bağlanır.
Sertifika zinciri hatalarını yok saySertifika zinciri doğrulanamasa da bağlanır.
Sertifika iptal kontrolü hatalarını yok saySertifikanı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 ​

AlanAçıklama
Topic biçimiNoktalı (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 topicSeç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:

İfadeSeç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.AktifGuctesis1.Kanal1.Analizor1.AktifGuc
YolKanal1/Analizor1/AktifGuctesis1/Kanal1/Analizor1/AktifGuc
Her ikisiHer iki topic'e ayrı yayınHer iki topic'e ayrı yayın

Yol biçimi MQTT joker karakterleriyle abone olmaya uygundur:

text
Kanal1/#          Kanal1 kanalındaki tüm mesajlar
+/Analizor1/#     Her kanaldaki Analizor1 cihazı
+/+/Sicaklik      Adı Sicaklik olan tüm tag'ler

Kanal, 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:

AlanAnlamıTür
CnKanal adıMetin
DnCihaz adıMetin
TnTag adıMetin
Q2WinScada sayısal kalite koduTam sayı
VTag değeri; sayı, mantıksal değer, metin, nesne veya null olabilirJSON değeri
TsDeğişim zamanı, UTC tabanlı Unix epoch milisaniyeTam sayı
json
{
  "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, Tn ve Ts alanları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 https veya 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:

DurumGeçerli ayar kaynağı
Web sayfasından henüz hiç kaydedilmediServis yapılandırma dosyaları; önceki davranış aynen sürer.
Web sayfasından en az bir kez kaydedildiWeb 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ı ​

MesajYapı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ı ​

KodMesajYapılacak
4930MQTT yayıncı servisine ulaşılamadı.Yayıncı servisinin kurulu ve çalışır durumda olduğunu kontrol edin.
4931MQTT yayıncı servisi bu kurulumun üretici anahtarını reddetti.Kurulumu kurulum aracıyla onarın veya sistem entegratörünüze başvurun.
4932Bu kurulumun lisansı MQTT entegrasyonunu içermediği için bağlantı testi yapılamaz.MQTT entegrasyonunu içeren bir lisans kurun.
4933MQTT broker bağlantı testi başarısız oldu.Mesajın devamındaki ayrıntıya göre yukarıdaki tabloyu kullanın.
4934MQTT 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.

2WinScada 2.10