TCLMqttClient Kullanımı: ClomosyLearn ile MQTT Broker’a Bağlanma Rehberi

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.

TCLMqttClient Kullanımı - Clomosy


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

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir