MQTT Nedir?

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 Nasıl Çalışır?

MQTT haberleşmesinin temelinde üç ana bileşen bulunur: Publisher, Subscriber ve Broker.

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 Broker

Broker, MQTT sisteminin merkezi mesajlaşma bileşenidir. Publisher'lardan gelen mesajları alır ve ilgili Topic'lere abone olan Subscriber'lara iletir.

  • Client bağlantılarını yönetir
  • Topic aboneliklerini takip eder
  • Mesajları ilgili abonelere iletir
  • QoS kurallarını uygular
  • Oturum ve mesaj durumlarını yönetebilir

Subscriber

Subscriber, ilgilendiği Topic veya Topic filtrelerine abone olarak bu konular üzerinden yayınlanan mesajları alan MQTT Client'tır.

  • SCADA
  • HMI
  • Veri tabanı uygulamaları
  • Dashboard sistemleri
  • Analiz uygulamaları
  • Bulut uygulamaları

EOS Yazılımları İçin MQTT Veri Adresleme (M#)

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.

M#TOPIC/PATH

Örneğin:

M#WindFarm/WF01/Station/AmbientTemperature

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.

Publish / Subscribe Modeli

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.

Örnek MQTT Haberleşmesi

Publisher: Rüzgar Türbini

Topic: plant/turbine01/power

Payload: 2450

Subscriber: SCADA, Data Logger, Dashboard veya analiz uygulaması

MQTT Topic Nedir?

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.

Örnek Topic Yapısı

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 QoS Seviyeleri

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}

QoS 0 — At Most Once

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.

QoS 1 — At Least Once

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.

QoS 2 — Exactly Once

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.

Retained Message

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 ve Endüstriyel Otomasyon

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 Veri Dağıtımı

SCADA tarafından toplanan proses verilerinin farklı uygulamalara MQTT üzerinden dağıtılması.

IoT ve IIoT

Saha cihazları ile merkezi veya bulut uygulamaları arasında ölçeklenebilir veri iletişimi.

Veri Toplama

Sensör, PLC, RTU ve diğer cihazlardan alınan verilerin merkezi veri toplama sistemlerine aktarılması.

Veri Analizi

Endüstriyel verilerin analiz, raporlama, dashboard ve yapay zeka uygulamalarına aktarılması.

Dağıtık Sistemler

Birden fazla tesis, makine veya uygulamanın ortak bir mesajlaşma altyapısı üzerinden haberleşmesi.

Çift Yönlü Haberleşme

MQTT yalnızca cihazlardan veri toplamak için değil, uygulamalardan cihazlara mesaj göndermek için de kullanılabilir.

MQTT ve SCADA

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.

Örnek Endüstriyel Mimari

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 ve Sparkplug

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}

MQTT Güvenliği

Endüstriyel sistemlerde MQTT kullanılırken yalnızca haberleşmenin çalışması değil, haberleşmenin güvenli olması da önemlidir.

TLS

MQTT bağlantıları TLS kullanılarak şifrelenebilir ve ağ üzerinden taşınan verilerin korunması sağlanabilir.

Kimlik Doğrulama

Broker'a bağlanan Client'ların kimlik doğrulaması yapılabilir ve kullanıcı erişimleri kontrol edilebilir.

Erişim Kontrolü

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 Sürümleri

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}

MQTT 3.1.1

  • Yaygın olarak kullanılan MQTT sürümlerinden biridir.
  • Basit ve geniş bir istemci/broker ekosistemine sahiptir.
  • IoT ve endüstriyel uygulamalarda yaygın olarak kullanılmaktadır.

MQTT 5.0

  • MQTT standardının daha gelişmiş sürümüdür.
  • Mesaj özellikleri ve bağlantı yönetimi konusunda ek yetenekler sağlar.
  • Modern IoT ve dağıtık uygulamalar için geliştirilmiş özellikler içerir.

MQTT'nin Avantajları

Hafif Yapı

Küçük mesaj başlıkları ve basit protokol yapısı sayesinde düşük haberleşme yükü oluşturur.

Esnek Mimari

Publisher ve Subscriber'ların birbirinden bağımsız çalışabilmesi dağıtık sistemlerin oluşturulmasını kolaylaştırır.

Ölçeklenebilirlik

Çok sayıda cihaz ve uygulamanın aynı Broker altyapısına bağlanmasına uygun bir mimariye sahiptir.

Zayıf Ağlarda Kullanım

Düşük bant genişliği ve güvenilirliği sınırlı ağlar düşünülerek tasarlanmıştır.

Çoktan Çoğa Veri Dağıtımı

Aynı verinin çok sayıda uygulama veya sisteme dağıtılmasını kolaylaştırır.

Geniş Yazılım Ekosistemi

Farklı işletim sistemleri, programlama dilleri, cihazlar ve uygulamalar için MQTT istemci ve Broker çözümleri bulunmaktadır.

MQTT Araçları

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 Araçları Yakında

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 Kısaca

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}