ابزارهای تست 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 میآیند. چند گزینه کاربردی:
# 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 ببینید.
