IoT Eğitimleri

Test, Betik ve Hata Ayıklama için En İyi MQTT CLI Araçları

mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, MQTT.js CLI, curl ve mqttui'nin uygulamalı karşılaştırması; betik yazma ve hata ayıklama için doğru aracı seçebilmeniz için aynı test broker.connectmq.com üzerinde çalıştırıldı.

Aynı bulut MQTT broker topic'ine abone olan mqtt cli araçlarını karşılaştıran birkaç terminal bölmesi
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

MQTT CLI araçları, tek satır kod yazmadan "cihazım gerçekten yayın yapıyor mu?" sorusunu yanıtlamanın en hızlı yoludur. Bu karşılaştırma aynı görevleri altı komut satırı istemcisiyle çalıştırır: mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, MQTT.js CLI, curl ve mqttui. Böylece sözdizimlerini yan yana görüp doğru olanı seçebilirsiniz. Her komut ücretsiz herkese açık broker broker.connectmq.com adresini hedefler; okurken deneyebilirsiniz.

İyi Bir MQTT Komut Satırı İstemcisini Ne Belirler?

Karşılaştırmadan önce bir terminal aracından ne beklediğinizi netleştirmek faydalıdır. Farklı işler farklı araçları öne çıkarır:

  • Hızlı kontroller: tek bir mesaj yayınlamak, tek bir topic'i izlemek. Başlangıç hızı ve kısa sözdizimi önemlidir.
  • Betik yazma ve CI: öngörülebilir çıkış kodları, "N mesaj al ve çık", zaman aşımları, makine tarafından okunabilir çıktı.
  • Protokol hata ayıklama: paket akışını, reason code'ları ve MQTT 5 özelliklerini göstermek.
  • Keşif: tanımadığınız bir topic ağacında etkileşimli olarak gezinmek.
  • Yük ve simülasyon: çok sayıda istemci, üretilmiş payload'lar (ayrıca MQTT yük testi araçları yazısında ele alınır).

Herkese açık broker'da her zaman benzersiz bir client ID ayarlayın, connectmq/demo/c1t9/ gibi benzersiz bir topic öneki kullanın ve oradaki her şeyin herkes tarafından okunabildiğini unutmayın.

Bir Bakışta Altı MQTT CLI Aracı

Araç Kurulum MQTT 5 TLS Güçlü yanı Zayıf yanı
mosquitto_pub / mosquitto_sub İşletim sistemi paketi mosquitto-clients Evet Evet Her yerde bulunur, küçük, betiklenebilir, mükemmel çıktı biçimlendirme Ayrı binary'ler, kısa ve öz hata mesajları
MQTTX CLI npm, Homebrew veya binary Evet Evet Kullanıcı dostu çıktı, yerleşik benchmark ve simülatörler Daha büyük kurulum (Node tabanlı)
HiveMQ MQTT CLI Homebrew, paket veya JAR Evet (varsayılan) Evet Etkileşimli shell modu, net MQTT 5 çıktısı Bazı kurulumlar için Java çalışma zamanı gerekir
MQTT.js CLI npm install -g mqtt Evet Evet Node kullanıyorsanız zaten elinizde Diğerlerinden daha az seçenek
curl Genellikle önceden kurulu Hayır (3.1.1) Evet (mqtts://) Çoğu sistemde kurulum gerektirmez Yalnızca QoS 0, temel özellikler
mqttui Cargo veya binary Sürüme bağlı Evet Topic ağacı içeren etkileşimli terminal arayüzü Betik yazmak için tasarlanmamıştır

mosquitto_pub ve mosquitto_sub

Başvuru araçlarıdır. Bir sunucuda veya Raspberry Pi'de herhangi bir MQTT istemcisi varsa büyük olasılıkla budur.

mosquitto_sub -h broker.connectmq.com -p 1883 -i cli-cmp-sub1 -t 'connectmq/demo/c1t9/#' -v
mosquitto_pub -h broker.connectmq.com -p 1883 -i cli-cmp-pub1 -t connectmq/demo/c1t9/test -m 'hello' -q 1

Betik yazma açısından öne çıkanlar -C (N mesajdan sonra çık), -W (zaman aşımı) ve jq'ya aktarabileceğiniz JSON çıktısı için %j ile kullanılan -F seçenekleridir. -d her paketi yazdırır; bu da QoS davranışıyla ilgili tartışmaları anında sonlandırır. Kullanıma hazır 25 komutu mosquitto_pub ve mosquitto_sub örnekleri yazısında topladık.

# Betikte sağlık kontrolü: 10 saniye içinde okuma gelmezse başarısız ol
if ! mosquitto_sub -h broker.connectmq.com -p 1883 -i health-c1t9 \
     -t connectmq/demo/c1t9/sensor/temp -C 1 -W 10 > /dev/null; then
  echo "sensor silent" >&2; exit 1
fi

MQTTX CLI

MQTTX CLI, MQTTX masaüstü uygulamasının komut satırı kardeşidir. Çıktısı renkli ve okunaklıdır; diğer araçlarda bulunmayan bench ve simulate alt komutlarını içerir.

mqttx sub -h broker.connectmq.com -p 1883 -i cli-cmp-sub2 -t 'connectmq/demo/c1t9/#' -v
mqttx pub -h broker.connectmq.com -p 1883 -i cli-cmp-pub2 -t connectmq/demo/c1t9/test -m 'hello' -q 1
mqttx conn -h broker.connectmq.com -p 8883 -l mqtts -i cli-cmp-conn2

-l mqtts bayrağı TLS'yi seçer; -V 5 veya -V 3.1.1 protokol sürümünü belirler (güncel sürümlerde varsayılan MQTT 5'tir). Hızlıca gerçekçi veri üretmek için simulate komutu, yerleşik veya özel senaryolardan üretilen payload'ları yayınlar; bu, yazılım henüz hazır olmadığında işe yarar. Üretilen hızları broker sınırları içinde tutun; herkese açık broker'da bu, istemci başına saniyede en fazla 10 mesaj demektir.

HiveMQ MQTT CLI

HiveMQ'nun CLI aracı alt komutlara sahip tek bir mqtt komutudur ve varsayılan olarak MQTT 5 kullanır. Öne çıkan özelliği shell modudur: bir kez bağlanırsınız ve ardından komutları etkileşimli olarak yazarsınız; MQTT için bir REPL gibi hissettirir.

mqtt sub -h broker.connectmq.com -p 1883 -i cli-cmp-sub3 -t 'connectmq/demo/c1t9/#'
mqtt pub -h broker.connectmq.com -p 1883 -i cli-cmp-pub3 -t connectmq/demo/c1t9/test -m 'hello' -q 1

# Etkileşimli shell
mqtt shell

Shell içinde con -h broker.connectmq.com -i cli-cmp-shell3 bir bağlantı açar ve sonraki pub ve sub komutları bu bağlantıyı yeniden kullanır. MQTT 3.1.1 davranışını test etmeniz gerektiğinde -V 3, varsayılan trust store ile TLS için -s ekleyin.

Bir ad çakışmasına dikkat edin: hem HiveMQ CLI hem de MQTT.js CLI mqtt adlı bir komut kurar. İkisi de kuruluysa PATH üzerinde önce gelen kazanır.

MQTT.js CLI

Zaten Node.js ile çalışıyorsanız MQTT.js paketi kendi CLI aracıyla gelir. Temel ihtiyaçları karşılar ve yaygın bayraklar için mosquitto ile aynı seçenek harflerini kullanır.

npm install -g mqtt
mqtt sub -h broker.connectmq.com -p 1883 -i cli-cmp-sub4 -t 'connectmq/demo/c1t9/#' -v
mqtt pub -h broker.connectmq.com -p 1883 -i cli-cmp-pub4 -t connectmq/demo/c1t9/test -m 'hello'

En zengin özellikli seçenek değildir, ancak Node uygulamanızın kullandığı kütüphanenin aynısıdır; dolayısıyla davranış birebir eşleşir. Uygulama kodu için Node.js'te MQTT.js yazısıyla devam edin.

curl

curl'ün MQTT konuştuğunu az kişi bilir. Yalnızca QoS 0 ile MQTT 3.1.1'i destekler ve retained veya Will seçenekleri yoktur, ancak çoğu Linux ve macOS sisteminde ve pek çok konteyner temel imajında kuruludur (protokol listesinde mqtt olup olmadığını curl -V ile kontrol edin).

# Abone ol (ham payload'ları yazdırır; durdurmak için Ctrl+C)
curl -s mqtt://broker.connectmq.com:1883/connectmq%2Fdemo%2Fc1t9%2Ftest

# Yayınla
curl -d 'hello from curl' mqtt://broker.connectmq.com:1883/connectmq%2Fdemo%2Fc1t9%2Ftest

Topic'teki eğik çizgileri %2F olarak kodlayın. curl kendi client ID'sini üretir; bu nedenle kimlik bilgisi başına belirli bir client ID gerektiren broker'larda kullanamazsınız. Bir duman testinden (smoke test) fazlası için özel araçlardan birini kullanın.

mqttui

mqttui, Rust ile yazılmış bir terminal kullanıcı arayüzüdür. Canlı bir topic ağacını, son payload'ı ve sayısal değerler için basit geçmiş grafiklerini terminalde gösterir; bu da masaüstü uygulaması çalıştıramadığınız SSH bağlantıları için mükemmeldir.

mqttui --broker mqtt://broker.connectmq.com:1883 'connectmq/demo/c1t9/#'

Bu bir keşif aracıdır, betik aracı değildir. Daha zengin bir grafik görünüm için masaüstü MQTT explorer uygulamalarına bakın.

Her Araçta Aynı Test

Adil bir karşılaştırma, her yerde yapılan tek bir görevdir: connectmq/demo/c1t9/# topic'ine abone olmak, connectmq/demo/c1t9/test topic'ine bir QoS 1 mesajı yayınlamak ve mesajı aldıktan sonra çıkmak.

Araç Al ve çık (tek mesaj veya zaman aşımı)
mosquitto_sub mosquitto_sub -h broker.connectmq.com -i s1-c1t9 -t 'connectmq/demo/c1t9/#' -C 1
MQTTX CLI timeout 10 mqttx sub -h broker.connectmq.com -i s2-c1t9 -t 'connectmq/demo/c1t9/#' (veya sürümünüzde varsa bir sayı seçeneği)
HiveMQ CLI timeout 10 mqtt sub -h broker.connectmq.com -i s3-c1t9 -t 'connectmq/demo/c1t9/#'
MQTT.js CLI timeout 10 mqtt sub -h broker.connectmq.com -i s4-c1t9 -t 'connectmq/demo/c1t9/#'
curl timeout 5 curl -s mqtt://broker.connectmq.com/connectmq%2Fdemo%2Fc1t9%2Ftest

mosquitto_sub aracının CI hatlarında varsayılan seçim olarak kalmasının nedeni budur: -C ve -W, "tam olarak bir mesaj bekle ya da başarısız ol" işlemini tek satıra indirir. Seçenekler sürümler arasında değiştiği için diğer araçların kurulu sürümlerinde --help çıktısını kontrol edin.

Hangi MQTT CLI Aracını Kullanmalısınız?

  1. Sunucularda, Raspberry Pi'lerde ve CI'da: mosquitto istemcileri. Küçüktür, her yerde paketlenmiştir, betikler için en iyisidir.
  2. Dizüstü bilgisayarda günlük geliştirme için: MQTTX CLI veya HiveMQ CLI. Varsayılan olarak okunaklı çıktı ve MQTT 5 ayrıntıları.
  3. MQTT 5 davranışında etkileşimli hata ayıklarken: HiveMQ CLI shell modu.
  4. Bir Node projesinde: testlerin üretim davranışıyla eşleşmesi için MQTT.js CLI.
  5. Hiçbir şeyin kurulu olmadığı yalın bir konteynerde: QoS 0 duman testi için curl.
  6. Bilinmeyen topic'leri SSH üzerinden keşfederken: mqttui.

Pek çok ekip iki araç tutar: otomasyon için mosquitto istemcileri ve insanlar için daha kullanıcı dostu bir araç. Düzenleyicinizden hiç çıkmamayı tercih ederseniz VS Code MQTT eklentisi rehberi bu iş akışını gösterir.

CLI Araçlarını Özel Bir Broker ile Kullanmak

Yukarıdaki her araç, bir üretim broker'ı için aynı üç şeyi kabul eder: host ve TLS portu, kimlik bilgileri ve client ID. ConnectMQ ile portal, bir broker oluşturduğunuzda üçünü de üretir:

mosquitto_sub -h YOUR_BROKER_HOST -p 8883 --capath /etc/ssl/certs \
  -i YOUR_CLIENT_ID -u YOUR_USERNAME -P YOUR_PASSWORD -t '#' -v

Client ID'ler verilen kimlik bilgilerine bağlı olduğu için portaldaki client ID'yi birebir kullanın; rastgele bir ID reddedilir. Sertifika Let's Encrypt tarafından verildiği için çoğu Linux dağıtımında sistem trust store'ları ek dosya gerektirmeden çalışır. Broker ayrıca bunu destekleyen araçlar için /mqtt yolunda 8083 portunda WebSocket'i ve 8084 portunda güvenli WebSocket'i kabul eder.

Öğrenme ve hızlı denemeler için ücretsiz herkese açık MQTT broker, gerçek cihaz veya veri içeren her şey için yönetilen bir MQTT broker kullanın. CLI testlerinin daha geniş bir geliştirme iş akışına nasıl oturduğunu görmek için MQTT istemci kütüphanelerine genel bakış yazısı, CLI kontrollerini her dildeki koda eşler.

ConnectMQ ile Başlayın

app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz Serverless planda özel bir broker oluşturun ve en sevdiğiniz CLI aracını ona yöneltin. Portalın tarayıcı içi MQTT istemcisi ve canlı topic gezgini, terminalden hata ayıklarken kullanışlı ikinci bir görünüm sunar.

Sık Sorulan Sorular

Yeni başlayanlar için en iyi MQTT CLI aracı hangisi?

MQTTX CLI veya HiveMQ CLI; çünkü çıktıları daha kolay okunur ve varsayılan olarak MQTT 5 kullanırlar. Ardından mosquitto_pub ve mosquitto_sub öğrenin, çünkü bunları neredeyse her sunucuda bulacaksınız.

Hiçbir şey kurmadan MQTT test edebilir miyim?

Çoğu zaman evet: curl, çoğu sistemde temel MQTT publish ve subscribe işlemlerini destekler. ConnectMQ portalı da kendi broker'ınız için tarayıcı içi bir MQTT istemcisi içerir.

Hangi CLI aracı MQTT 5 reason code'larını gösterir?

MQTT 5 destekli tüm araçlar bunları bildirir, ancak -d ile mosquitto istemcileri ve HiveMQ CLI paket alışverişini en net şekilde gösterir.

CLI istemcimin bağlantısı neden sürekli kesiliyor?

Genellikle başka bir istemci aynı client ID'yi kullanıyordur ve broker eski bağlantıyı keser. Her terminale kendi ID'sini verin.

İlgili yazılar

Python ile MQTT Verisini InfluxDB'ye Kaydetme

paho-mqtt ve influxdb-client ile bir broker'a abone olan, topic seviyelerini InfluxDB tag'lerine dönüştüren, sayısal JSON değerlerini field olarak toplu yazan ve hatalı payload'ları ile tip çakışmalarını yöneten bir Python köprüsü kurun.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.