MQTT Explorer, bir broker'a abone olan ve aldığı her şeyi canlı, açılıp kapanabilen bir topic ağacı olarak gösteren ücretsiz bir masaüstü client'ıdır. "Bu broker'da gerçekte ne var?" sorusunu yanıtlamanın en hızlı yoludur: hangi topic'ler var, hangilerinde retained mesaj tutuluyor, son payload'da ne değişti ve bir değer zaman içinde nasıl gelişiyor. Bu rehber kurulumu, güvenli bağlantıyı ve debug sırasında işe yarayan özellikleri anlatıyor.
MQTT Explorer'ı kurmak
Thomas Nordquist'in geliştirdiği MQTT Explorer Windows, macOS ve Linux'ta çalışır. mqtt-explorer.com'dan veya projenin GitHub release'lerinden indirin ya da bir paket yöneticisi kullanın:
# macOS (Homebrew)
brew install --cask mqtt-explorer
# Linux (Snap)
sudo snap install mqtt-explorer
# Windows (winget)
winget install thomasnordquist.MQTT-ExplorerLinux'ta AppImage kurulum gerektirmeden de çalışır. Paket adları sürümler arasında değişebilir; biri başarısız olursa build'i release sayfasından alın.
Bir broker'a bağlanmak
Bağlantı penceresi açılışta gelir. Şunları doldurun:
| Alan | Düz TCP | TLS | Güvenli WebSocket |
|---|---|---|---|
| Protocol | mqtt:// | mqtt:// | ws:// |
| Host | broker.connectmq.com | broker.connectmq.com | broker.connectmq.com |
| Port | 1883 | 8883 | 8084 |
| Encryption (tls) | kapalı | açık | açık |
| Validate certificate | — | açık | açık |
| Basepath | — | — | mqtt |
| Username / Password | gerekiyorsa | kimlik bilgileriniz | kimlik bilgileriniz |
Kimlik bilgileri söz konusu olduğunda her zaman TLS'i tercih edin — düz 1883 portunda parola açık metin olarak gider. Validate certificate açık kalsın; kapatmak, hostname uyuşmazlığı gibi gerçek sorunları gizler. Özel CA kullanan bir broker için CA dosyasını Advanced → Certificates altına ekleyin.
Advanced içinde MQTT Client ID de ayarlanabilir. explorer-adiniz gibi tanınabilir bir ad verin; çalışan bir cihazın ID'sini yeniden kullanırsanız broker ikisinden birini düşürür ve hayalet bir hatanın peşine düşersiniz ("session taken over"). Benzersiz bir ID gerekiyorsa client ID oluşturucu yardımcı olur.
İzlenecek veri üretin
Adım adım takip etmek için test önekinize birkaç mesaj publish edin — retained durum mesajları ve değişen bir telemetri değeri:
H=broker.connectmq.com
P=testmqtt/explorer
mosquitto_pub -h $H -t "$P/device-1/status" -m online -r
mosquitto_pub -h $H -t "$P/device-2/status" -m offline -r
mosquitto_pub -h $H -t "$P/config" -m '{"interval":5,"unit":"C"}' -r
for i in $(seq 1 30); do
T=$(awk -v s=$RANDOM 'BEGIN{srand(s); printf "%.1f", 20+rand()*3}')
mosquitto_pub -h $H -t "$P/device-1/temperature" -m "{\"temp\":$T,\"seq\":$i}"
sleep 2
donemosquitto araçları kurulu değilse aynısını tarayıcıdan online MQTT client ile yapabilirsiniz.
Topic ağacını okumak
Sol panel, hiyerarşiyi topic seviyelerinden oluşturur: testmqtt → explorer → device-1 → temperature. Her düğüm kaç alt topic ve mesaj içerdiğini gösterir; yeni bir mesaj geldiğinde düğümler kısa bir süre vurgulanır, böylece hareketli dallar kolayca göze çarpar.
Ağacı topic tasarımınızı kontrol etmek için kullanın:
- Yazım hataları ve büyük/küçük harf farkları hemen görünür —
Device-1vedevice-1ayrı dallardır, çünkü MQTT topic'leri büyük/küçük harfe duyarlıdır. - Baştaki veya sondaki eğik çizgiler boş bir seviye oluşturur (
/testmqtt/...boş bir kök düğüme sahiptir). - Beklenmedik derinlik — yanlışlıkla topic'e kodlanmış payload verisi (
.../temperature/21.5) yüzlerce kardeş düğüm olarak görünür.
Üstteki arama kutusu ağacı topic adına göre filtreler. Bir wildcard aboneliğinin bu topic'lere karşı nasıl davranacağını kontrol etmek için topic matcher kullanın. Yapı hakkında daha fazlası için MQTT topic'leri ve wildcard'lar yazısına bakın.
Değerleri, geçmişi ve farkları incelemek
Bir topic'e tıkladığınızda kenar çubuğu en son değeri gösterir — payload ayrıştırılabiliyorsa JSON olarak biçimlendirilmiş şekilde — ve yanında QoS, retained bayrağı ve alınma zamanı yer alır. Altında o topic'teki son mesajların geçmişi bulunur.
Bir payload değiştiğinde MQTT Explorer önceki mesaja göre bir diff gösterebilir; böylece büyük bir JSON belgesinde değişen tek bir alan bile apaçık ortaya çıkar. "Firmware her raporda hangi alanı güncelliyor?" veya "Deploy sonrası yapılandırma değişti mi?" gibi sorular için idealdir.
Sayısal değerler için — düz bir sayı veya JSON içindeki sayısal bir alan — geçmişteki grafik seçeneğini kullanarak değeri zaman içinde grafiğe dökün. Testere dişi bir desen, takılı kalmış bir sensör veya her yeniden bağlanmada sıfıra dönen bir değer, grafikte mesaj listesine göre çok daha kolay görülür.
Retained mesajları bulmak ve silmek
Retained mesajlar "hayalet" verinin en yaygın kaynağıdır: aylardır çevrimdışı olan bir cihaz, son retained durumu hâlâ broker'da olduğu için çevrimiçi görünmeye devam eder. MQTT Explorer'da retained mesajlar değer panelinde işaretlenir; böylece ağaçta gezinip hangi topic'lerin bir tane tuttuğunu görebilirsiniz.
Birini kaldırmak için topic'i seçin ve Topic bölümündeki silme simgesine tıklayın. Client bu topic'e boş bir retained mesaj publish eder; bu, onu temizlemenin standart yoludur. Bütün bir dal için özyinelemeli silmeyi kullanın. İki uyarı:
- Kullanıcınızın bu topic'lerde publish izni olmalıdır. ACL bunu reddederse birçok broker'da silme işlemi sessizce hiçbir şey yapmaz — bkz. ACL'nin sessizce reddetmesi.
- Yeniden bağlandığında retained durumunu tekrar publish eden bir cihaz mesajı geri getirir. Sadece broker'ı değil, kaynağı düzeltin.
Retained bir mesaj yine de geri gelmeye devam ediyorsa retained mesaj silinmiyor yazısı diğer nedenleri ele alıyor.
Test mesajları publish etmek
Kenar çubuğundaki Publish bölümü, payload düzenleyicisi (raw, JSON veya XML) ile QoS ve retain seçenekleri sunarak herhangi bir topic'e mesaj gönderir. Ağaçta bir topic'e tıklamak adını otomatik doldurur; bu da mevcut bir mesajı yeniden göndermeyi veya değiştirmeyi hızlandırır — örneğin testmqtt/explorer/device-1/set topic'ine bir komut gönderip cihazın durum topic'inin değişmesini izlemek.
Broker sağlığı için $SYS'i izlemek
Birçok broker $SYS/ altında istatistik yayınlar — bağlı client'lar, mesaj hızları, çalışma süresi. Broker'ınız destekliyorsa $SYS/# aboneliğini koruyun ve test ederken $SYS/broker/clients/connected veya yük sayaçlarını grafiğe dökün. Hangi topic'lerin bulunduğu broker'a bağlıdır; MQTT $SYS topic'leri yaygın olanları listeliyor. Yönetilen servisler $SYS'i kısıtlayabilir veya hiç sunmayabilir.
Sık karşılaşılan sorunlar
| Belirti | Neden | Çözüm |
|---|---|---|
| "Connecting"de takılı | Port ve Encryption anahtarı uyuşmuyor ya da port engelli | 8883 + Encryption açık; 1883 + kapalı; önce portu test edin |
| Bağlanıyor, sonra kopuyor | Yinelenen client ID ya da broker # aboneliğini reddediyor | Benzersiz client ID; kendi önekinize abone olun |
| Ağaç boş kalıyor | Abonelik topic'leri kapsamıyor ya da hiçbir şey publish edilmiyor | Advanced altındaki abonelikleri kontrol edin; bir test mesajı publish edin |
| WebSocket bağlantısı başarısız | Basepath eksik veya port yanlış | ws:// + Encryption açık + 8084 portu + basepath mqtt |
| Uygulama yavaşlıyor | Çok fazla topic veya yüksek mesaj hızı | Abonelikleri daraltın; ağacı temizleyip yeniden bağlanın |
MQTT Explorer mı, başka bir client mı?
MQTT Explorer gezinme konusunda rakipsizdir: topic ağaçları, retained mesajlar, diff'ler ve hızlı grafikler. MQTT 5 özelliklerini test etmek veya çok sayıda paralel bağlantıyı yönetmek için daha az uygundur — orada MQTTX daha güçlüdür; geri kalanı masaüstü MQTT client karşılaştırması ele alıyor. Herhangi bir makineden kurulumsuz bir kontrol için tarayıcı client'ını kullanın.
Tarayıcınızdan test verisi publish edin
Geliştirme yaparken MQTT Explorer'ı açık tutun: TLS bağlantısı üzerinden dar bir öneke yönlendirin, cihazlarınızın gerçekte ne publish ettiğini ağacın göstermesine izin verin ve "bir şeyler yanlış" durumunu belirli bir topic ve alana dönüştürmek için diff, grafik ve retained görünümlerini kullanın. Aynı şeyleri otomatik olarak kontrol eden script'li testlerin yerini almaz, onları tamamlar.
Sıkça sorulan sorular
MQTT Explorer'da retained bir mesajı nasıl silerim?
Ağaçta topic'i seçin ve kenar çubuğunun Topic bölümündeki silme (çöp kutusu) simgesine tıklayın. MQTT Explorer bu topic'e boş bir retained mesaj publish eder; bu, broker'a mesajı kaldırmasını söyler. Tüm bir alt ağaç için özyinelemeli silmeyi kullanın ve kullanıcınızın oraya publish etme izni olduğunu kontrol edin.
MQTT Explorer neden connecting'de takılı kalıyor?
Çoğu zaman port ile Encryption anahtarı uyuşmaz: 8883 portu Encryption (TLS) açık, 1883 portu kapalı ister. WebSocket için ws:// protokolünü seçin, WebSocket portunu kullanın ve basepath'i örneğin mqtt olarak ayarlayın. Portu engelleyen bir firewall da aynı belirtiyi verir.
MQTT Explorer MQTT 5'i destekliyor mu?
MQTT Explorer MQTT 3.1.1 etrafında tasarlanmıştır ve topic'lerde ve retained mesajlarda gezinmek için mükemmeldir. User property'ler, mesaj süresi dolumu veya reason code'lar gibi MQTT 5 özelliklerini ayrıntılı incelemeniz gerekiyorsa yanında MQTTX gibi bir client veya online MQTT client kullanın.


