EOS MQTT Sunucusu Nedir?

EOS MQTT Sunucusu, EOS SCADA Runtime içerisinde çalışan ve MQTT istemcileri ile EOS SCADA arasında veri iletişimi sağlayan bir MQTT sunucusudur.

Sunucu, yapılandırılmış IP adresi ve TCP portu üzerinde dinleme yapar. MQTT istemcileri bu adrese bağlanarak EOS SCADA verilerine SUBSCRIBE olabilir veya MQTT mesajları gönderebilir.

IP_ADRESI:PORT

Sunucu aktif olduğunda MQTT istemcileriyle bağlantı kurabilir. İstemci bağlantıları, bağlantı kesilmeleri, subscription ve unsubscribe işlemleri EOS SCADA tarafından izlenebilir.

EOS MQTT Sunucusu, MQTT'nin publish/subscribe mimarisini EOS SCADA'nın gerçek zamanlı veri yapısıyla birleştirir.

EOS SCADA ile Entegrasyon

EOS MQTT Sunucusu bağımsız bir uygulama olarak çalışmak yerine EOS SCADA'nın veri yapısı ile doğrudan entegre olacak şekilde tasarlanmıştır. Sunucu, EOS veri noktalarının bilgilerini okuyarak MQTT topic'leri oluşturur.

EOS SCADA Verileri

EOS SCADA içerisinde bulunan veri noktalarının güncel değerleri MQTT istemcilerine yayınlanabilir.

MQTT Yayını

Veri değiştiğinde ilgili MQTT topic'i üzerinden yeni değer istemcilere yayınlanır.

MQTT İstemcileri

Birden fazla MQTT istemcisi farklı topic filtrelerine SUBSCRIBE olabilir.

MQTT Haberleşmesi

Sunucu, istemcilerden gelen PUBLISH mesajlarını da alabilir ve topic üzerinden ilgili EOS veri noktasını belirleyebilir.

Sunucu Yapılandırması

EOS MQTT Sunucusunun çalışma parametreleri EOS SCADA Proje Ayarları üzerinden yapılandırılır. Sunucunun hangi IP adresi üzerinde çalışacağı, MQTT istemcilerinin bağlanacağı port ve veri güncelleme aralığı proje ayarlarında belirlenebilir.

Parametre Açıklama Varsayılan Değer
IP Adresi MQTT Sunucusunun istemci bağlantılarını kabul etmek üzere dinleyeceği IP adresidir. mqtt://IP_Adresi (Proje Ayarına bağlı)
MQTT Portu MQTT istemcilerinin EOS MQTT Sunucusuna bağlanmak için kullanacağı TCP portudur. Varsayılan 1883
Veri Tipi MQTT üzerinden yayınlanacak EOS SCADA verilerinin kapsamını belirler. All, Digital, Analog veya Selected seçeneklerinden biri
Güncelleme Aralığı EOS SCADA verilerinin MQTT Sunucusu tarafından kontrol edilme ve değişen değerlerin MQTT üzerinden yayınlanma aralığını belirler. Varsayılan 1 saniye

MQTT Portu için varsayılan değer 1883'tür. Bu değer, standart MQTT TCP iletişim portudur ve ihtiyaç halinde Proje Ayarları üzerinden değiştirilebilir.

Güncelleme Aralığı varsayılan olarak 1 saniye olarak ayarlanmıştır. Bu süre, EOS SCADA verilerinin MQTT Sunucusu tarafından kontrol edilme sıklığını belirler. Bir veri noktasının değeri değiştiğinde, ilgili MQTT topic'ine yeni değer yayınlanır.

MQTT Sunucusu başlatıldığında, Proje Ayarlarında belirlenen IP adresi ve port üzerinde MQTT istemci bağlantılarını kabul edecek şekilde çalışmaya başlar.

Yayınlanacak Verilerin Seçimi

EOS MQTT Sunucusu bütün EOS verilerini zorunlu olarak yayınlamak yerine, yapılandırmaya göre belirlenen veri grubunu MQTT üzerinden sunabilir.

All

Uygun durumdaki bütün EOS veri noktalarının MQTT üzerinden sunulmasına izin verir.

Digital

Veri tipi adında int bulunan tamsayı türündeki verileri kapsar.

Analog

Veri tipi adında real veya double bulunan analog verileri kapsar.

Selected

EOS SCADA içerisinde seçilmiş olan veri noktalarının MQTT üzerinden sunulmasını sağlar.

MQTT Topic Yapısı

EOS MQTT Sunucusu, EOS SCADA veri ağacındaki grup yapısını kullanarak MQTT topic'leri oluşturur. Topic yapısı üst grup isimleri ile veri adının birleştirilmesiyle meydana gelir.

ÜST_GRUP/ALT_GRUP/VERİ_ADI

Örneğin EOS SCADA veri ağacında Santral / Türbin1 / AktifGüç şeklinde bir yapı bulunuyorsa MQTT topic'i aşağıdaki gibi oluşturulabilir:

Santral/Türbin1/AktifGüç

Bu yapı sayesinde MQTT topic hiyerarşisi ile EOS SCADA veri hiyerarşisi arasında doğrudan bir ilişki kurulabilir.

EOS Verilerinin MQTT Üzerinden Yayınlanması

EOS MQTT Sunucusu, yalnızca ilgili topic'e SUBSCRIBE olmuş istemciler için gerekli verileri tarar. Böylece herhangi bir istemcinin talep etmediği veriler gereksiz yere yayınlanmaz.

Her veri noktası için son yayınlanan değer tutulur. EOS SCADA'daki değer önceki yayınlanan değerden farklı olduğunda yeni MQTT mesajı oluşturulur ve ilgili topic üzerinden yayınlanır.

EOS SCADA Değeri
       ↓
Abone istemci var mı?
       ↓
Değer değişti mi?
       ↓
MQTT PUBLISH
       ↓
Topic üzerinden istemcilere gönderim

Bu mekanizma, aynı değerin her tarama döngüsünde tekrar tekrar yayınlanmasını önleyerek MQTT trafiğinin azaltılmasına yardımcı olur.

MQTT Quality of Service

EOS MQTT Sunucusu tarafından oluşturulan yayın mesajlarında MQTT Quality of Service seviyesi At Most Once olarak ayarlanmıştır.

Özellik Değer
QoS 0 – At Most Once
Payload EOS veri değerinin metinsel gösterimi
Topic EOS veri ağacından oluşturulan MQTT topic'i

QoS 0 seviyesinde mesaj için teslim garantisi bulunmadığından yapı düşük ek yükle gerçek zamanlı veri aktarımı için uygundur.

MQTT SUBSCRIBE İşlemleri

MQTT istemcileri istedikleri topic veya topic filtrelerine SUBSCRIBE olabilir. EOS MQTT Sunucusu bu subscription bilgilerini istemci ve veri noktası bazında takip eder.

MQTT Filtre Açıklama Örnek
Topic Tek bir topic'i izler. Santral/Türbin1/AktifGüç
+ Tek bir topic seviyesini eşleştirir. Santral/+/AktifGüç
# Topic'in kalan seviyelerini kapsayan çok seviyeli wildcard. Santral/#

Sunucunun topic eşleştirme mekanizması + ve # wildcard karakterlerini destekler.

İstemci ve Subscription Takibi

EOS MQTT Sunucusu, istemcilerin hangi topic'lere abone olduğunu takip eder. Bunun için istemci kimliği ile veri noktaları arasında ilişki tutulur.

Client → Data

Her MQTT istemcisinin abone olduğu EOS veri noktaları takip edilir.

Data → Client

Her EOS veri noktasına abone olan MQTT istemcileri ayrıca takip edilir.

Topic Matching

İstemci topic filtresi ile EOS topic'i karşılaştırılarak ilgili veri noktaları belirlenir.

Unsubscribe

İstemci aboneliğini kaldırdığında ilgili veri ve istemci eşleştirmeleri güncellenir.

MQTT İstemci Olayları

Sunucu, MQTT istemcilerinin temel bağlantı ve subscription olaylarını izler.

Olay Açıklama
Client Connected Bir MQTT istemcisi sunucuya bağlandığında oluşur.
Client Disconnected Bir MQTT istemcisinin bağlantısı kesildiğinde oluşur.
Client Subscribed İstemci bir topic filtresine SUBSCRIBE olduğunda oluşur.
Client Unsubscribed İstemci bir topic filtresinden UNSUBSCRIBE olduğunda oluşur.
Client Publish İstemci sunucuya bir MQTT mesajı gönderdiğinde alınır.

MQTT PUBLISH Mesajlarının Alınması

MQTT istemcileri EOS MQTT Sunucusuna PUBLISH mesajları gönderebilir. Sunucu mesajın topic ve payload bilgilerini alarak topic'i EOS veri noktalarıyla karşılaştırır.

MQTT Client
    │
    │ PUBLISH
    │ Topic + Payload
    ▼
EOS MQTT Sunucusu
    │
    │ Topic eşleştirme
    ▼
EOS Data ID

Gelen topic, EOS MQTT Sunucusunda tanımlı topic'lerden biriyle eşleşirse ilgili Data ID belirlenebilir. Mesajın veri tipi de EOS veri tanımından alınabilir.

Mevcut uygulama kodunda bu aşamadan sonra payload'ın doğrulanması, veri tipine dönüştürülmesi ve ilgili EOS verisine yazılması için gerekli bölüm henüz tamamlanmamıştır. Bu nedenle mevcut sürümde istemciden alınan PUBLISH mesajı işlenmekte ve ilgili veri eşleştirmesi yapılabilmekte, ancak otomatik EOS veri yazma işlemi henüz gerçekleştirilmemektedir.

MQTT Kullanım Örnekleri

Bir MQTT istemcisi sunucuya bağlandıktan sonra EOS SCADA verilerini ilgili topic'lere SUBSCRIBE olarak izleyebilir.

Belirli bir veri için:

Santral/Türbin1/AktifGüç

Bir grup altındaki tüm verileri izlemek için:

Santral/Türbin1/#

Belirli bir seviyedeki herhangi bir cihazın aynı veri adını izlemek için:

Santral/+/AktifGüç

Örneğin bir MQTT istemcisi ile:

mosquitto_sub -h IP_ADRESI -p 1883 -t "Santral/Türbin1/#"

İstemciden EOS MQTT Sunucusuna mesaj göndermek için:

mosquitto_pub -h IP_ADRESI -p 1883 -t "Santral/Türbin1/AktifGüç" -m "125.4"

Veri Güncelleme Döngüsü

EOS MQTT Sunucusunun veri yayınlama işlemi, EOS SCADA'nın MQTT güncelleme döngüsü içerisinde periyodik olarak gerçekleştirilir.

MQTT Sunucusu çalışıyor mu?
          │
          ▼
Abone veri var mı?
          │
          ▼
EOS veri değeri okunur
          │
          ▼
Veri tipi kontrol edilir
          │
          ▼
Son yayınlanan değer ile karşılaştırılır
          │
       Değişti mi?
       /       \
     Hayır      Evet
      │          │
      │          ▼
      │      MQTT PUBLISH
      │          │
      └──────────┘

Sunucuya herhangi bir MQTT istemcisi abone değilse yayınlanacak verilerin taranması yapılmaz. Böylece kullanılmayan MQTT yayınlarının oluşturduğu gereksiz işlem ve ağ trafiği azaltılır.

Sunucunun Başlatılması ve Durdurulması

EOS MQTT Sunucusu, EOS SCADA tarafından başlatılıp durdurulabilir. Sunucunun çalışma durumu EOS SCADA içerisindeki MQTT durum mekanizması üzerinden takip edilir.

İşlem Açıklama
StartMQTTServer MQTT sunucusunu başlatır ve istemci bağlantılarını kabul etmeye başlar.
UpdateMQTTServer MQTT veri yayınlama döngüsünü çalıştırır.
StopMQTTServer MQTT sunucusunu durdurur.

EOS MQTT Sunucusu Nerelerde Kullanılır?

  • SCADA verilerinin MQTT üzerinden yayınlanması
  • Endüstriyel IoT uygulamaları
  • Gerçek zamanlı veri izleme
  • MQTT tabanlı dashboard uygulamaları
  • Dış uygulamalara veri aktarımı
  • IoT ve SCADA entegrasyonu
  • Çoklu MQTT istemci erişimi
  • Topic tabanlı veri dağıtımı
  • Düşük bant genişlikli haberleşme
  • Endüstriyel veri platformları

MQTT'nin publish/subscribe mimarisi sayesinde EOS SCADA verileri, aynı ağ üzerindeki birden fazla yazılım veya cihaz tarafından standart MQTT istemcileri kullanılarak alınabilir.

Özet

EOS MQTT Sunucusu, EOS SCADA sistemindeki gerçek zamanlı verileri MQTT protokolü üzerinden dış uygulamalara ve MQTT istemcilerine sunan entegre bir MQTT sunucusudur.

Sunucu, EOS veri ağacından otomatik olarak MQTT topic'leri oluşturur, istemcilerin subscription durumlarını takip eder ve yalnızca abone olunan verilerdeki değişiklikleri MQTT üzerinden yayınlar.

+ ve # wildcard desteği sayesinde istemciler tek bir veriye, belirli bir topic seviyesine veya bir topic ağacının tamamına abone olabilir.

MQTT istemcilerinden gelen PUBLISH mesajları da alınarak topic ile EOS Data ID arasında eşleştirme yapılabilir. Mevcut uygulama yapısında istemciden EOS verisine yazma işlemi henüz tamamlanmamıştır.

Bu özellikleriyle EOS MQTT Sunucusu, EOS SCADA sistemlerini MQTT tabanlı endüstriyel IoT, veri izleme ve dış uygulama entegrasyonlarına bağlayan pratik bir iletişim katmanı olarak kullanılabilir.