Publisher
Publisher, veri üreten ve bu veriyi belirli bir Topic üzerinden MQTT Broker'a gönderen cihaz veya uygulamadır.
- PLC
- RTU
- IoT sensörü
- Gateway
- SCADA sistemi
- Endüstriyel uygulama
MQTT, bir cihazın veya uygulamanın ürettiği bilgileri diğer cihaz ve uygulamalara ulaştırmasını sağlayan mesajlaşma tabanlı bir haberleşme protokolüdür.
MQTT'nin temel özelliği, iletişim yapan cihazların doğrudan birbirlerine bağlanmak zorunda olmamasıdır. Mesajlar merkezi bir MQTT Broker üzerinden taşınır.
Bir cihaz belirli bir konuya, yani Topic'e veri yayınlayabilir. Veriye ihtiyaç duyan diğer cihaz veya uygulamalar ise aynı Topic'e abone olarak bu verileri alabilir.
Bu yapı sayesinde veri üreten cihaz ile veriyi kullanan uygulamalar birbirinden bağımsız olarak geliştirilebilir. MQTT bu nedenle IoT, IIoT, SCADA, veri toplama, makine haberleşmesi ve dağıtık sistemlerde yaygın olarak kullanılmaktadır.
MQTT haberleşmesinin temelinde üç ana bileşen bulunur: Publisher, Subscriber ve Broker.
Publisher, veri üreten ve bu veriyi belirli bir Topic üzerinden MQTT Broker'a gönderen cihaz veya uygulamadır.
Broker, MQTT sisteminin merkezi mesajlaşma bileşenidir. Publisher'lardan gelen mesajları alır ve ilgili Topic'lere abone olan Subscriber'lara iletir.
Subscriber, ilgilendiği Topic veya Topic filtrelerine abone olarak bu konular üzerinden yayınlanan mesajları alan MQTT Client'tır.
EOS SCADA MQTT istemcisinde veri adresi, MQTT topic adı kullanılarak oluşturulur. Adres M# prefix'i ile başlar ve devamında MQTT topic'i bulunur.
Örneğin:
MQTT topic'i hiyerarşik bir yapıya sahip olmalıdır. Topic bölümleri / karakteri ile ayrılır.
EOS SCADA içerisindeki veri adresi ile MQTT broker üzerindeki topic arasında doğrudan bir ilişki kurulabilir.
MQTT'nin klasik cihazdan cihaza haberleşme yöntemlerinden en önemli farkı Publish / Subscribe modelini kullanmasıdır.
Publisher doğrudan belirli bir cihaza veri göndermez. Bunun yerine mesajı bir Topic üzerinde yayınlar. Broker ise bu Topic'e abone olan tüm Subscriber'lara mesajı iletir.
Örneğin bir rüzgar türbini
plant/turbine01/power
Topic'i üzerinden anlık gücünü yayınlayabilir.
SCADA, veri tabanı ve analiz uygulaması aynı Topic'e
abone olarak bu veriyi bağımsız şekilde kullanabilir.
Publisher:
Rüzgar Türbini
Topic:
plant/turbine01/power
Payload:
2450
Subscriber:
SCADA, Data Logger, Dashboard veya
analiz uygulaması
MQTT'de verinin hangi bilgi kanalına ait olduğunu belirlemek için Topic adı kullanılır. Topic, klasik endüstriyel protokollerdeki bir veri adresi gibi düşünülebilir; ancak MQTT'de daha çok mesajların yönlendirileceği mantıksal bir kanal görevi görür.
Topic'ler genellikle hiyerarşik bir yapı kullanılarak
oluşturulur. Seviye ayırıcı olarak /
karakteri kullanılır.
plant01/turbine01/power
plant01/turbine01/wind_speed
plant01/turbine01/temperature
plant01/turbine01/status
Subscriber'lar yalnızca tek bir Topic'e değil,
Topic filtreleri kullanarak bir Topic grubuna da
abone olabilir. MQTT'de bu amaçla
+ ve # gibi wildcard
karakterleri kullanılabilir.
MQTT, mesajların teslim edilme şeklinin uygulamanın ihtiyacına göre belirlenebilmesi için üç farklı Quality of Service (QoS) seviyesi tanımlar. :contentReference[oaicite:2]{index=2}
Mesaj mümkün olan en düşük haberleşme yüküyle gönderilir. Mesajın ulaşmaması mümkündür. Sürekli tekrar gönderilen anlık ölçümlerde uygun olabilir.
Mesajın karşı tarafa ulaşması sağlanır; ancak bazı durumlarda aynı mesaj birden fazla kez alınabilir. Uygulamanın duplicate mesajları yönetebilmesi gerekir.
Mesajın tam olarak bir kez teslim edilmesini hedefleyen en yüksek QoS seviyesidir. Diğer seviyelere göre daha fazla haberleşme yükü oluşturur.
MQTT'de bir Topic için son mesajın Broker tarafından saklanması sağlanabilir. Bu özellik Retained Message olarak adlandırılır.
Böylece yeni bir Subscriber ilgili Topic'e abone olduğunda, Publisher'ın yeniden veri göndermesini beklemek zorunda kalmadan Topic'in en son durumunu alabilir.
Bu özellik özellikle cihaz durumu, çalışma modu, son ölçüm değeri veya benzeri durum bilgilerinin paylaşılmasında kullanışlıdır. MQTT standardı, retained mesajların Topic'e yeni abone olan istemcilere iletilmesini tanımlar. :contentReference[oaicite:3]{index=3}
MQTT başlangıçta düşük bant genişliği ve uzak sistemlerde mesajlaşma ihtiyacına yönelik geliştirilmiş bir protokol olmakla birlikte günümüzde üretim, enerji, otomasyon ve Industrial IoT uygulamalarında da kullanılmaktadır. :contentReference[oaicite:4]{index=4}
Endüstriyel sistemlerde MQTT kullanılarak saha cihazlarından, PLC'lerden, RTU'lardan, gateway'lerden veya SCADA sistemlerinden toplanan bilgiler merkezi bir MQTT altyapısına aktarılabilir.
SCADA tarafından toplanan proses verilerinin farklı uygulamalara MQTT üzerinden dağıtılması.
Saha cihazları ile merkezi veya bulut uygulamaları arasında ölçeklenebilir veri iletişimi.
Sensör, PLC, RTU ve diğer cihazlardan alınan verilerin merkezi veri toplama sistemlerine aktarılması.
Endüstriyel verilerin analiz, raporlama, dashboard ve yapay zeka uygulamalarına aktarılması.
Birden fazla tesis, makine veya uygulamanın ortak bir mesajlaşma altyapısı üzerinden haberleşmesi.
MQTT yalnızca cihazlardan veri toplamak için değil, uygulamalardan cihazlara mesaj göndermek için de kullanılabilir.
MQTT ile SCADA sistemleri birlikte kullanıldığında, SCADA tarafından toplanan verilerin farklı yazılım sistemlerine aktarılması kolaylaştırılabilir.
Örneğin bir SCADA sistemi Modbus, OPC UA, IEC 60870 veya başka bir protokolden aldığı saha verilerini MQTT Publisher olarak bir Broker'a gönderebilir. Aynı verileri kullanan Data Logger, Dashboard, raporlama, analiz veya yapay zeka uygulamaları ise MQTT Subscriber olarak çalışabilir.
PLC / RTU / Sensör
↓
SCADA / Gateway
↓
MQTT Broker
↓
SCADA • Data Logger • Dashboard • Database • AI
Bu mimaride MQTT, uygulamaların birbirine doğrudan bağımlı olmasını azaltan bir mesajlaşma katmanı olarak görev yapar.
MQTT'nin kendisi mesajın içeriğinin nasıl yapılandırılacağını veya endüstriyel cihazların hangi Topic isimlendirme standardını kullanacağını zorunlu olarak belirlemez. Bu durum farklı üreticilerin sistemleri arasında birlikte çalışabilirlik açısından ek bir standardizasyon ihtiyacı oluşturabilir.
Sparkplug, MQTT altyapısının özellikle endüstriyel otomasyon ve IIoT uygulamalarında daha standart ve birlikte çalışabilir şekilde kullanılmasını amaçlayan açık bir spesifikasyondur.
Sparkplug; MQTT üzerinde endüstriyel kullanıma yönelik Topic Namespace, Payload ve State Management tanımları sağlar. Eclipse Foundation tarafından geliştirilen Sparkplug, özellikle SCADA ve gerçek zamanlı endüstriyel sistemler için tasarlanmıştır. :contentReference[oaicite:5]{index=5}
Endüstriyel sistemlerde MQTT kullanılırken yalnızca haberleşmenin çalışması değil, haberleşmenin güvenli olması da önemlidir.
MQTT bağlantıları TLS kullanılarak şifrelenebilir ve ağ üzerinden taşınan verilerin korunması sağlanabilir.
Broker'a bağlanan Client'ların kimlik doğrulaması yapılabilir ve kullanıcı erişimleri kontrol edilebilir.
Client'ların hangi Topic'lere veri yayınlayabileceği veya hangi Topic'lerden veri okuyabileceği sınırlandırılabilir.
MQTT altyapısının güvenliği, özellikle üretim tesisleri ve kritik altyapılarda ağ mimarisi, Broker yapılandırması, kimlik doğrulama, erişim yetkileri ve sertifika yönetimi birlikte değerlendirilerek tasarlanmalıdır. MQTT'nin TLS ve modern kimlik doğrulama yöntemleriyle kullanılabilmesi standart ekosisteminde desteklenen güvenlik yaklaşımının bir parçasıdır. :contentReference[oaicite:6]{index=6}
MQTT'nin farklı sürümleri bulunmaktadır. Günümüzde özellikle MQTT 3.1.1 ve MQTT 5.0 ile karşılaşılır. MQTT 5.0, OASIS tarafından 7 Mart 2019 tarihinde standart olarak yayımlanmıştır. :contentReference[oaicite:7]{index=7}
Küçük mesaj başlıkları ve basit protokol yapısı sayesinde düşük haberleşme yükü oluşturur.
Publisher ve Subscriber'ların birbirinden bağımsız çalışabilmesi dağıtık sistemlerin oluşturulmasını kolaylaştırır.
Çok sayıda cihaz ve uygulamanın aynı Broker altyapısına bağlanmasına uygun bir mimariye sahiptir.
Düşük bant genişliği ve güvenilirliği sınırlı ağlar düşünülerek tasarlanmıştır.
Aynı verinin çok sayıda uygulama veya sisteme dağıtılmasını kolaylaştırır.
Farklı işletim sistemleri, programlama dilleri, cihazlar ve uygulamalar için MQTT istemci ve Broker çözümleri bulunmaktadır.
Bu bölümde MQTT haberleşmesini test etmek, Topic'leri izlemek, mesaj yayınlamak, mesajlara abone olmak ve endüstriyel uygulamalarda MQTT haberleşmesini geliştirmek için kullanılabilecek araçlar paylaşılacaktır.
MQTT Client, MQTT Publisher, MQTT Subscriber, MQTT Broker test araçları ve endüstriyel haberleşme uygulamalarına yönelik yardımcı yazılımlar burada paylaşılacaktır.
MQTT, cihazların ve uygulamaların birbirleriyle doğrudan bağlantı kurmak yerine bir Broker üzerinden mesaj alışverişi yapmasını sağlayan hafif ve esnek bir haberleşme protokolüdür.
Publisher, veriyi Topic üzerinden yayınlar; Subscriber ise ihtiyaç duyduğu Topic'lere abone olur. Broker bu iki taraf arasındaki mesaj dağıtımını gerçekleştirir.
Bu mimari MQTT'yi özellikle IoT, Industrial IoT, SCADA, veri toplama, uzak cihazlar, enerji sistemleri, makine haberleşmesi ve dağıtık endüstriyel uygulamalar için kullanışlı hale getirir.
MQTT'nin endüstriyel uygulamalarda daha standart bir veri ve durum yönetimiyle kullanılabilmesi için Sparkplug gibi tamamlayıcı spesifikasyonlar da kullanılabilir. :contentReference[oaicite:8]{index=8}