ابزارهای تست MQTT: MQTTX و MQTT Explorer
عیب‌یابی

ابزارهای تست MQTT: MQTTX و MQTT Explorer

۱۰ آبان ۱۴۰۵۶ دقیقه مطالعه

تنظیم MQTTX، MQTT Explorer و mosquitto_pub برای تست بروکر MQTT با TLS: شناسه دستگاه، نسخه پروتکل، اشتراک درست و پاک کردن پیام ماندگار.

چرا ابزار تست؟#

قبل از اینکه سراغ کد دستگاه بروید، بهتر است با یک ابزار مطمئن ببینید اطلاعات اتصال درست است و پیام‌ها روی تاپیک درست می‌رسند. این‌طور اگر چیزی کار نکرد، می‌دانید مشکل از کد است نه از تنظیمات. سه ابزار رایج را بررسی می‌کنیم و سه تنظیم را که در mqttcloud.ir اهمیت دارند:

  • شناسه دستگاه (Client ID): ابزارها معمولاً یک شناسه تصادفی می‌سازند که رد می‌شود. برای ابزار تست یک دستگاه جدا در داشبورد ثبت کنید، مثلاً pc-test، و همان را وارد کنید.
  • نسخه پروتکل: بروکر از MQTT 3.1.1 پشتیبانی می‌کند. اگر ابزار روی نسخه 5 باشد، اتصال برقرار نمی‌شود.
  • اشتراک: فقط تاپیک‌هایی که با نام‌کاربری/ شروع می‌شوند، مثل alice/#.

MQTTX#

MQTTX ابزار رایگان و متن‌باز با رابط گرافیکی برای ویندوز، مک و لینوکس است و نسخه وب هم دارد. یک اتصال جدید بسازید:

  • Host: mqtts:// و mqtt.mqttcloud.ir، پورت 8883
  • Client ID: شناسه ثبت‌شده، مثلاً pc-test (شناسه تصادفی پیش‌فرض را پاک کنید)
  • Username و Password: اطلاعات اکانت MQTT
  • SSL/TLS: روشن، با گزینه گواهی امضاشده توسط CA (CA signed server certificate)
  • در بخش Advanced، گزینه MQTT Version را روی 3.1.1 بگذارید؛ پیش‌فرض MQTTX نسخه 5 است.

بعد از اتصال، اشتراک alice/# بسازید و از پایین صفحه روی alice/test پیام بفرستید. نسخه وب MQTTX از WebSocket استفاده می‌کند: wss://، میزبان mqtt.mqttcloud.ir، پورت 443 و مسیر /mqtt.

MQTT Explorer#

MQTT Explorer همه تاپیک‌ها را به شکل درخت نمایش می‌دهد و برای دیدن ساختار تاپیک‌ها و پیام‌های ماندگار عالی است.

  • Protocol: mqtt://، Host: mqtt.mqttcloud.ir، Port: 8883
  • Encryption (tls) و Validate certificate: روشن
  • Username و Password: اطلاعات اکانت MQTT
  • دکمه Advanced را بزنید و MQTT Client ID را شناسه ثبت‌شده بگذارید.

مهم‌ترین نکته: MQTT Explorer به‌صورت پیش‌فرض روی # و $SYS/# مشترک می‌شود. بروکر این دو اشتراک را رد می‌کند، چون خارج از فضای نام شما هستند؛ نتیجه این است که اتصال برقرار است ولی هیچ پیامی نمی‌بینید. در همان صفحه Advanced هر دو را حذف کنید و alice/# را اضافه کنید.

mosquitto_pub و mosquitto_sub#

ابزارهای خط فرمان mosquitto برای اسکریپت‌نویسی و تست سریع بهترین گزینه‌اند. در لینوکس بسته mosquitto-clients را نصب کنید و در ویندوز همراه نصب‌کننده رسمی mosquitto می‌آیند. چند گزینه کاربردی:

bash
# Subscribe and print topic names (-v); exit after 5 messages (-C 5)
mosquitto_sub -h mqtt.mqttcloud.ir -p 8883 --capath /etc/ssl/certs \
  -i pc-test -u alice -P 'YOUR_PASSWORD' -t 'alice/#' -v -C 5

# Publish with QoS 1 and keep it as the retained value (-r)
mosquitto_pub -h mqtt.mqttcloud.ir -p 8883 --capath /etc/ssl/certs \
  -i pc-test -u alice -P 'YOUR_PASSWORD' -t 'alice/lamp/state' -m 'on' -q 1 -r

# Clear a retained message: empty payload (-n) with -r
mosquitto_pub -h mqtt.mqttcloud.ir -p 8883 --capath /etc/ssl/certs \
  -i pc-test -u alice -P 'YOUR_PASSWORD' -t 'alice/lamp/state' -n -r
  • گزینه -d جزئیات هر بسته را چاپ می‌کند؛ برای دیدن کد پاسخ CONNACK و SUBACK مفید است.
  • در ویندوز /etc/ssl/certs وجود ندارد؛ فایل PEM گواهی ISRG Root X1 را از letsencrypt.org/certificates بگیرید و به جای --capath از --cafile isrgrootx1.pem استفاده کنید.
  • دو اتصال هم‌زمان نمی‌توانند یک Client ID داشته باشند. اگر mosquitto_sub در یک ترمینال باز است، mosquitto_pub باید شناسه دیگری داشته باشد.

یک نکته درباره سقف دستگاه#

ابزار تست هم یک دستگاه حساب می‌شود و یکی از جای‌های ثبت دستگاه پلن را می‌گیرد؛ در پلن رایگان دو دستگاه دارید. بعد از تمام شدن تست می‌توانید آن را از داشبورد حذف کنید. اگر ابزار وصل نشد، دلیل‌های رایج را در عیب‌یابی اتصال MQTT ببینید.

#MQTTX#MQTT_Explorer#mosquitto