# MQTT Broker Nasıl Test Edilir?

> MQTT nedir, broker bağlantısı nasıl test edilir? Port, client ID, kullanıcı adı/şifre, TLS, subscribe/publish ve wildcard topic ile adım adım MQTT testi ve sık görülen hataların çözümü.

Kaynak: https://ranaliz.com/tr/blog/mqtt-broker-test · Yazar: Ahmet Korkmaz · Güncelleme: 2026-10-19


**MQTT, cihazların bir merkez sunucu (broker) üzerinden “topic” adı verilen kanallara mesaj yayınladığı (publish) ve bu kanallara abone olduğu (subscribe) hafif bir mesajlaşma protokolüdür.** Bir MQTT bağlantısını test etmek, broker’a ulaşılabildiğini, kimlik doğrulamanın geçtiğini ve mesajın doğru topic’e doğru biçimde düştüğünü sırayla doğrulamak demektir. Bu rehber bunu bir MQTT test client ile altı adımda yapar.

## MQTT’de bilmeniz gereken beş kavram

| Kavram | Anlamı |
|---|---|
| **Broker** | Mesajları alıp abonelere dağıtan sunucu (Mosquitto, EMQX, HiveMQ vb.) |
| **Topic** | Mesajın adresi, ör. `saha1/inverter3/guc` |
| **Client ID** | Her bağlantının benzersiz kimliği |
| **QoS** | Teslim garantisi: 0 (en fazla bir), 1 (en az bir), 2 (tam bir kez) |
| **Retained** | Broker’ın topic’teki son mesajı saklayıp yeni abonelere hemen göndermesi |

## Adım 1: Port ve ağ erişimi

Varsayılan portlar:

| Port | Kullanım |
|---|---|
| 1883 | Şifresiz MQTT |
| 8883 | TLS ile MQTT |
| 8083 / 8084 | WebSocket / güvenli WebSocket (broker’a göre değişir) |

Bağlanamıyorsanız önce broker adresinin ve portun sizin ağınızdan erişilebilir olduğunu kontrol edin. Kurumsal ağlar ve mobil modemler 1883’ü sıklıkla kapatır.

## Adım 2: Bağlan ve CONNACK cevabını oku

Client, broker’a **CONNECT** gönderir; broker **CONNACK** ile cevap verir. MQTT 3.1.1’de dönüş kodları şunlardır:

| Kod | Anlamı | Ne yapmalı |
|---|---|---|
| 0 | Kabul edildi | Devam |
| 1 | Protokol sürümü desteklenmiyor | Client’ta 3.1.1 / 5.0 seçimini değiştirin |
| 2 | Client ID reddedildi | Boş veya geçersiz karakterli ID kullanmayın |
| 3 | Sunucu kullanılamıyor | Broker servisini kontrol edin |
| 4 | Kullanıcı adı / şifre hatalı | Kimlik bilgilerini doğrulayın |
| 5 | Yetkisiz | Kullanıcının bu broker’a bağlanma izni yok |

## Adım 3: Client ID çakışmasına dikkat

Aynı client ID ile ikinci bir bağlantı açıldığında broker **ilk bağlantıyı düşürür**. Sahadaki cihazın client ID’sini test programına yazarsanız cihaz sürekli kopar, test programı da kopar ve döngüye girer. Test için her zaman benzersiz bir ID kullanın (ör. `test-laptop-01`).

## Adım 4: Önce her şeye abone ol

Hangi topic’e veri geldiğinden emin değilseniz geniş bir abonelikle başlayın:

- `#` → broker’daki **tüm** topic’ler (yetkiniz varsa)
- `saha1/#` → `saha1` altındaki her şey
- `saha1/+/guc` → her inverter’ın `guc` topic’i

Mesajları gördükten sonra aboneliği daraltın. Paylaşımlı veya yoğun bir broker’da `#` binlerce mesaj getirebilir; dikkatli kullanın.

## Adım 5: Yayınla ve geri oku

Bir topic’e test mesajı yayınlayın (ör. `test/ping` → `merhaba`) ve aynı topic’e abone olan bir pencerede mesajın geldiğini görün. Bu, yazma (ACL) izinlerinin de çalıştığını gösterir.

Payload’ı da kontrol edin: Cihaz JSON gönderiyorsa alan adları ve sayı biçimi (ondalık nokta/virgül) karşı taraftaki yazılımın beklentisiyle aynı mı?

## Adım 6: TLS ile tekrar dene

Üretim ortamında 8883 ve TLS kullanılır. Sık görülen TLS hataları:

- **Sertifika doğrulanamadı:** Broker sertifikasını imzalayan CA dosyası client’a verilmemiş.
- **Hostname uyuşmuyor:** IP adresiyle bağlanıyorsunuz ama sertifika alan adına kesilmiş.
- **İstemci sertifikası isteniyor:** Broker karşılıklı TLS (mTLS) kullanıyor.

## Sık hatalar

| Belirti | Olası sebep |
|---|---|
| Bağlantı zaman aşımı | Port kapalı, yanlış adres, güvenlik duvarı |
| Bağlanıp birkaç saniyede kopuyor | Client ID çakışması veya keep-alive ayarı |
| Bağlantı var, mesaj yok | Topic adı farklı (büyük/küçük harf, baştaki `/`) |
| Publish başarılı ama abone almıyor | ACL izni yok veya QoS/retained beklentisi farklı |
| Eski değer geliyor | Topic’te retained mesaj kalmış |

## Test için herkese açık broker’lar

Kendi broker’ınız yokken `test.mosquitto.org`, `broker.hivemq.com` veya `broker.emqx.io` kullanılabilir. Bunlar paylaşımlıdır; gerçek saha verisi veya şifre göndermeyin.

## Ranaliz iOT Tester ile MQTT testi

[Ranaliz iOT Tester](https://ranaliz.com/tr/product/iot-tester), MQTT tarafında bir **MQTT test client** gibi çalışır: broker’a bağlanma, subscribe, publish ve isteğe bağlı TLS. Ayrı bir MQTT Explorer kurmadan topic’in doğru olup olmadığını ve payload’ın gelip gelmediğini görürsünüz.

Asıl farkı aynı uygulamada Modbus ve IEC 104 araçlarının da bulunmasıdır. Bir gateway’in Modbus ile okuyup MQTT ile yayınladığı senaryoda iki tarafı aynı pencerede doğrulayabilirsiniz: önce [Modbus register’ını](https://ranaliz.com/tr/blog/modbus-test-programi-ucretsiz) okuyun, sonra aynı değerin MQTT topic’ine düştüğünü görün. Uygulama ücretsizdir; Windows ve macOS’ta çalışır.

## SSS

### MQTT bağlantısı nasıl kontrol edilir?

Bir MQTT test client ile broker’a bağlanın, CONNACK kodunun 0 olduğunu görün, ardından bir topic’e abone olup aynı topic’e mesaj yayınlayın. Mesaj geri geliyorsa bağlantı ve izinler çalışıyordur.

### MQTT hangi portu kullanır?

Şifresiz 1883, TLS ile 8883. WebSocket portları broker’a göre değişir.

### MQTT Explorer ile MQTTX arasındaki fark nedir?

İkisi de MQTT test client’ıdır. MQTT Explorer topic ağacını görselleştirmeye, MQTTX çoklu bağlantı ve script desteğine odaklanır. Endüstriyel protokolleri de aynı yerde test etmek istiyorsanız iOT Tester bir alternatiftir.

## Kaynaklar

- OASIS — MQTT Version 3.1.1 Specification
- OASIS — MQTT Version 5.0 Specification
