شرح MQTT: كيف تختبر اتصال MQTT broker في 6 خطوات

شرح MQTT: كيف تختبر اتصال MQTT broker في 6 خطوات
دليل
Ahmet Korkmaz7 دقائق

شرح MQTT: كيف تختبر اتصال MQTT broker

MQTT بروتوكول مراسلة خفيف: تنشر الأجهزة (publish) رسائلها على قنوات مسمّاة تُسمى topics عبر خادم مركزي يُسمى broker، وتشترك (subscribe) أطراف أخرى في هذه القنوات لتستقبلها. اختبار اتصال MQTT يعني أن تتحقق بالترتيب من أن الـ broker قابل للوصول، وأن المصادقة تنجح، وأن الرسائل تصل إلى الـ topic الصحيح بالصيغة الصحيحة. يشرح هذا الدليل ذلك في ست خطوات باستخدام MQTT test client.

خمسة مفاهيم تحتاجها في MQTT

المفهومالمعنى
Brokerالخادم الذي يستقبل الرسائل ويوزعها على المشتركين (Mosquitto وEMQX وHiveMQ…)
Topicعنوان الرسالة، مثل site1/inverter3/power
Client IDهوية فريدة لكل اتصال
QoSضمان التسليم: 0 (مرة على الأكثر)، 1 (مرة على الأقل)، 2 (مرة واحدة بالضبط)
Retainedيحتفظ الـ broker بآخر رسالة على الـ topic ويرسلها فوراً لكل مشترك جديد

الخطوة 1: المنفذ والوصول الشبكي

المنافذ الافتراضية:

المنفذالاستخدام
1883MQTT بدون تشفير
8883MQTT عبر TLS
8083 / 8084WebSocket / WebSocket آمن (يختلف حسب الـ broker)

إذا تعذّر الاتصال فتأكد أولاً أن عنوان الـ broker والمنفذ قابلان للوصول من شبكتك. الشبكات المؤسسية ومودمات الجوال كثيراً ما تحجب المنفذ 1883.

الخطوة 2: اتصل واقرأ رد CONNACK

يرسل الـ client رسالة CONNECT، ويرد الـ broker بـ CONNACK. أكواد الرد في MQTT 3.1.1:

الكودالمعنىماذا تفعل
0مقبولتابع
1إصدار البروتوكول غير مدعومبدّل الـ client بين 3.1.1 و5.0
2الـ Client ID مرفوضلا تستخدم معرّفاً فارغاً أو بأحرف غير صالحة
3الخادم غير متاحافحص خدمة الـ broker
4اسم المستخدم أو كلمة المرور خاطئةتحقق من بيانات الدخول
5غير مصرّحالمستخدم لا يملك إذن الاتصال

الخطوة 3: انتبه لتعارض الـ Client ID

عند فتح اتصال ثانٍ بنفس الـ client ID يقطع الـ broker الاتصال الأول. إذا نسخت client ID لجهاز في الموقع إلى أداة الاختبار فسيقطع كل منهما الآخر في حلقة لا تنتهي. استخدم دائماً معرّفاً فريداً للاختبار (مثل test-laptop-01).

الخطوة 4: اشترك على نطاق واسع أولاً

إذا لم تكن متأكداً من الـ topic الذي تصل عليه البيانات فابدأ باشتراك واسع:

  • # ← كل الـ topics على الـ broker (إن كان مسموحاً لك)
  • site1/# ← كل ما تحت site1
  • site1/+/power ← الـ topic power لكل انفرتر

ضيّق الاشتراك بعد أن ترى الرسائل. على broker مزدحم أو مشترك قد يجلب # آلاف الرسائل، فاستخدمه بحذر.

الخطوة 5: انشر رسالة واقرأها

انشر رسالة اختبار (مثل test/ping ← hello) وتأكد أنها تصل إلى نافذة مشتركة في الـ topic نفسه. هذا يثبت أن أذونات الكتابة (ACL) تعمل أيضاً.

افحص الحمولة (payload) كذلك: إذا كان الجهاز يرسل JSON، فهل أسماء الحقول وصيغة الأرقام مطابقة لما يتوقعه البرنامج المستقبِل؟

الخطوة 6: كرّر الاختبار عبر TLS

بيئات الإنتاج تستخدم المنفذ 8883 وTLS. أخطاء TLS الشائعة:

  • فشل التحقق من الشهادة: ملف الـ CA الذي وقّع شهادة الـ broker غير متوفر لدى الـ client.
  • عدم تطابق اسم المضيف: تتصل بعنوان IP بينما الشهادة صادرة لاسم نطاق.
  • مطلوب شهادة client: الـ broker يستخدم TLS متبادلاً (mTLS).

الأعطال الشائعة

العَرَضالسبب المحتمل
انتهاء مهلة الاتصالمنفذ مغلق، عنوان خاطئ، جدار ناري
يتصل ثم ينقطع بعد ثوانٍتعارض client ID أو إعداد keep-alive
متصل لكن لا رسائلاسم الـ topic مختلف (حالة الأحرف، / في البداية)
النشر ناجح والمشترك لا يستقبللا يوجد إذن ACL، أو توقع مختلف للـ QoS أو retained
تصل قيمة قديمةرسالة retained ما زالت على الـ topic

brokers عامة للاختبار السريع

إن لم يكن لديك broker خاص يمكنك استخدام test.mosquitto.org أو broker.hivemq.com أو broker.emqx.io. هذه خوادم عامة ومشتركة، فلا ترسل عليها بيانات حقيقية أو كلمات مرور.

اختبار MQTT مع Ranaliz iOT Tester

يعمل Ranaliz iOT Tester في جانب MQTT كـ MQTT test client: الاتصال بالـ broker، والاشتراك، والنشر، مع TLS اختياري. يمكنك التحقق من صحة الـ topic ووصول الحمولة دون تثبيت MQTT Explorer منفصل.

وما يميزه أن التطبيق نفسه يختبر Modbus وIEC 104 أيضاً. عندما تقرأ بوابةٌ بيانات Modbus وتنشرها عبر MQTT، يمكنك التحقق من الجانبين في نافذة واحدة: اقرأ أولاً سجل Modbus، ثم راقب وصول القيمة نفسها إلى الـ topic. التطبيق مجاني ويعمل على Windows وmacOS.

أسئلة شائعة

كيف أتحقق من أن MQTT يعمل؟

اتصل بأداة MQTT test client وتأكد أن كود CONNACK هو 0، ثم اشترك في topic وانشر رسالة على الـ topic نفسه. إذا عادت الرسالة فالاتصال والأذونات تعمل.

ما المنفذ الذي يستخدمه MQTT؟

1883 بدون تشفير و8883 عبر TLS، أما منافذ WebSocket فتختلف حسب الـ broker.

ما الفرق بين MQTT Explorer وMQTTX؟

كلاهما MQTT test client. يركز MQTT Explorer على عرض شجرة الـ topics، بينما يركز MQTTX على الاتصالات المتعددة والسكربتات. وإذا أردت اختبار البروتوكولات الصناعية في المكان نفسه فإن iOT Tester بديل مناسب.

المصادر

  • OASIS — MQTT Version 3.1.1 Specification
  • OASIS — MQTT Version 5.0 Specification
A

Ahmet Korkmaz

مهندس كهرباء وإلكترونيات

منصة Ranaliz

راقب محطتك مع Ranaliz

أدِر منشآت الطاقة من منصة واحدة عبر المراقبة الآنية والتنبيهات الذكية والتحليلات المدعومة بالذكاء الاصطناعي.

طلب عرض تجريبي