Gerçek zamanlı veri alışverişi günümüzde birçok yazılımın temel gereksinimlerinden biri haline gelmiştir. Mobil uygulamalardan IoT cihazlarına, üretim takip sistemlerinden canlı dashboard’lara kadar pek çok senaryoda anlık iletişim büyük önem taşır.
ClomosyLearn’e eklenen TCLMqttClient bileşeni, uygulamaların standart MQTT broker’larına bağlanmasını ve publish/subscribe mimarisi ile gerçek zamanlı mesajlaşmasını sağlar.
Bu yazıda TCLMqttClient bileşenini kullanarak ilk MQTT uygulamanızı nasıl geliştireceğinizi adım adım inceleyeceğiz.
TCLMqttClient Nedir?
TCLMqttClient, ClomosyLearn içerisinde bulunan ve MQTT protokolünü destekleyen istemci bileşenidir.
Bu bileşen sayesinde uygulamanız;
- MQTT Broker’a bağlanabilir
- Topic dinleyebilir
- Mesaj gönderebilir
- Gelen mesajları Event üzerinden işleyebilir
- Otomatik yeniden bağlanabilir
- Kullanıcı adı ve şifre ile kimlik doğrulaması yapabilir
- KeepAlive desteği kullanabilir
- Last Will & Testament (LWT) desteğinden yararlanabilir.

Desteklenen MQTT Broker’lar
TCLMqttClient herhangi bir standart MQTT Broker ile çalışabilir.
Örneğin;
- Eclipse Mosquitto
- HiveMQ
- EMQX
- VerneMQ
- AWS IoT
- Azure IoT Hub (MQTT)
- Özel MQTT Sunucuları
Bu sayede Clomosy uygulamaları yalnızca kendi ekosistemleriyle değil, MQTT standardını kullanan diğer sistemlerle de haberleşebilir.
Adım 1: MQTT Client Oluşturma
İlk olarak form üzerine bir MQTT Client eklenir.
var
clMqttClient : TCLMqttClient;
void impl{
clMqttClient = MyForm.AddNewMQTTClient(MyForm,'clMqttClient');
}
Bu satır uygulamanın MQTT istemcisini oluşturur.
Adım 2: Event’leri Tanımlama
MQTT tamamen olay (event) tabanlı çalışır.
Bu nedenle bağlantı ve mesaj olaylarını yakalamamız gerekir.
MyForm.AddNewEvent(clMqttClient,tbeOnMQTTClientConnected,'MQTTClientOnConnected');
MyForm.AddNewEvent(clMqttClient,tbeOnMQTTClientDisconnected,'MQTTClientOnDisconnected');
MyForm.AddNewEvent(clMqttClient,tbeOnMQTTClientMessage,'MQTTClientOnMessage');
Bu üç event çoğu MQTT uygulaması için yeterlidir.
Adım 3: Broker Bilgilerini Tanımlama
Daha sonra bağlanılacak MQTT Broker bilgileri girilir.
clMqttClient.BrokerHost = '192.168.1.24';
clMqttClient.Port = 1883;
clMqttClient.Username = 'sa';
clMqttClient.Password = '123';
clMqttClient.Channel ='chat/eminozeloda';
Burada kullanılan bilgiler örnek amaçlıdır.
Gerçek projelerde Broker adresi, kullanıcı bilgileri ve topic yapısı projeye göre değişebilir.
Adım 4: Broker’a Bağlanma
Tüm ayarlar tamamlandıktan sonra bağlantı başlatılır.
clMqttClient.Connect;
Bağlantı başarılı olursa otomatik olarak
MQTTClientOnConnected
event’i çalışacaktır.
OnConnected Event’i
Broker bağlantısı kurulduğunda çalışan event’tir.
Genellikle burada Subscribe işlemleri yapılır.
void MQTTClientOnConnected{
noteMemo.Lines.Add('Broker bağlantısı başarılı.');
clMqttClient.Subscribe('chat/#',1);
}
Buradaki
chat/#
ifadesi
chat altındaki bütün topic’leri dinlemeye başlar.
Subscribe Kullanımı
Belirli bir topic’i dinlemek oldukça kolaydır.
clMqttClient.Subscribe('factory/line1/temp',1);
Artık bu topic’e gönderilen tüm mesajlar uygulamaya ulaşacaktır.
Publish (Mesaj Gönderme)
Mesaj göndermek için Send() metodu kullanılır.
clMqttClient.Send('Merhaba', 1, False);
Parametreler
- Mesaj
- QoS
- Retain
şeklindedir.
Button ile Publish Örneği
Kullanıcının yazdığı metni göndermek için:
void testButtonOnClick{
if(testEdit.Text<>'')
{
clMqttClient.Send(testEdit.Text,1,False);
testEdit.Text='';
}
}
Bu yapı canlı sohbet uygulamaları veya anlık bildirim sistemleri için oldukça kullanışlıdır.
Gelen Mesajları Yakalama
Subscriber olduğunuz topic’lerden gelen tüm mesajlar
MQTTClientOnMessage
event’ine düşer.
void MQTTClientOnMessage{
noteMemo.Lines.Add('[Topic] : ' +MyForm.clTopic);
noteMemo.Lines.Add('[Payload] : '+MyForm.clPayload);
}
Böylece mesaj içeriği uygulama içerisinde işlenebilir.
Gönderen Client Bilgisini Alma
Mesajı gönderen istemcinin ClientID bilgisi de alınabilir.
MyForm.clSenderClientID
Örneğin
noteMemo.Lines.Add(MyForm.clSenderClientID);
özellikle çok istemcili sistemlerde oldukça faydalıdır.
Bağlantı Kesildiğinde
Broker bağlantısı kesildiğinde
MQTTClientOnDisconnected
çalışacaktır.
void MQTTClientOnDisconnected{
noteMemo.Lines.Add('Broker bağlantısı kesildi.');
}
Bu event içerisinde kullanıcı bilgilendirilebilir veya yeniden bağlanma işlemleri başlatılabilir.
Gerçek Hayat Senaryoları
TCLMqttClient birçok farklı projede kullanılabilir.
Chat Uygulamaları
chat/general
topic’i dinlenebilir.
Sensör Takibi
factory/temp
Akıllı Ev
home/light
home/alarm
home/garage
Dashboard
dashboard/live
Araç Takibi
vehicle/location
Kullanım İpuçları
Projeye başlamadan önce aşağıdaki öneriler işinizi kolaylaştıracaktır.
Topic yapısını önceden planlayın
factory/
factory/temp
factory/humidity
factory/alarm
gibi hiyerarşik yapı oluşturun.
QoS değerini doğru seçin
Her mesaj için QoS 2 kullanmak doğru değildir.
Mesaj önemine göre
- QoS 0
- QoS 1
- QoS 2
tercih edilmelidir.
Güvenli Bağlantı Kullanın
Canlı sistemlerde
- TLS
- SSL
- Username
- Password
kullanılması önerilir.
AutoReconnect’i Aktif Kullanın
İnternet bağlantısı kopabilir.
TCLMqttClient’in otomatik yeniden bağlanma desteği sayesinde uygulama kullanıcı müdahalesi olmadan broker ile iletişimini sürdürebilir.
Neden TCLMqttClient?
ClomosyLearn’de MQTT desteği sunan TCLMqttClient, standart MQTT protokolünü kullanan sistemlerle entegrasyonu kolaylaştırır. Event tabanlı yapısı sayesinde geliştiriciler, karmaşık ağ iletişimi ayrıntılarıyla uğraşmadan gerçek zamanlı uygulamalar geliştirebilir.
Mobil uygulamalardan kurumsal otomasyon sistemlerine kadar farklı projelerde kullanılabilen bu bileşen, Clomosy ekosisteminin bulut bağlantılı ve ölçeklenebilir mimarisini destekleyen önemli araçlardan biridir.
Sonuç
TCLMqttClient, ClomosyLearn içerisinde MQTT tabanlı uygulamalar geliştirmeyi kolaylaştıran güçlü ve kullanımı basit bir bileşendir.
Broker’a bağlanmak, topic dinlemek, mesaj göndermek ve gelen mesajları event’ler aracılığıyla işlemek birkaç satır kodla gerçekleştirilebilir.
Bu sayede geliştiriciler; IoT çözümleri, gerçek zamanlı dashboard’lar, mobil uygulamalar, üretim takip sistemleri ve canlı mesajlaşma altyapıları gibi birçok farklı projeyi ClomosyLearn ile hızlı şekilde geliştirebilir.
Sık Sorulan Sorular
TCLMqttClient hangi broker’ları destekler?
MQTT standardını destekleyen Eclipse Mosquitto, HiveMQ, EMQX ve benzeri tüm broker’larla çalışabilir.
Birden fazla topic’e abone olabilir miyim?
Evet. Farklı topic’lere veya wildcard (#, +) kullanarak birden fazla topic’e abone olabilirsiniz.
Gelen mesajlara nasıl erişebilirim?
tbeOnMQTTClientMessage event’i tetiklendiğinde MyForm.clTopic, MyForm.clPayload ve MyForm.clSenderClientID değerlerini kullanarak gelen mesaj bilgilerine erişebilirsiniz.
MQTT bağlantısı kesilirse ne olur?
OnDisconnected event’i tetiklenir. Ayrıca bileşen, desteklenen otomatik yeniden bağlanma (AutoReconnect) özelliği sayesinde bağlantıyı yeniden kurmayı deneyebilir.




Bir yanıt yazın