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

> ما هو MQTT وكيف تختبر الاتصال بالـ broker؟ المنافذ، أكواد CONNACK، تعارض client ID، الاشتراك بالـ wildcard، دورة النشر والاشتراك، وأخطاء TLS، باستخدام MQTT test client مجاني.

Kaynak: https://ranaliz.com/ar/blog/mqtt-broker-test-ar · Yazar: Ahmet Korkmaz · Güncelleme: 2026-10-19


**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: المنفذ والوصول الشبكي

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

| المنفذ | الاستخدام |
|---|---|
| 1883 | MQTT بدون تشفير |
| 8883 | MQTT عبر TLS |
| 8083 / 8084 | WebSocket / 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](https://ranaliz.com/ar/product/iot-tester) في جانب MQTT كـ **MQTT test client**: الاتصال بالـ broker، والاشتراك، والنشر، مع TLS اختياري. يمكنك التحقق من صحة الـ topic ووصول الحمولة دون تثبيت MQTT Explorer منفصل.

وما يميزه أن التطبيق نفسه يختبر Modbus وIEC 104 أيضاً. عندما تقرأ بوابةٌ بيانات Modbus وتنشرها عبر MQTT، يمكنك التحقق من الجانبين في نافذة واحدة: اقرأ أولاً [سجل Modbus](https://ranaliz.com/ar/blog/free-modbus-tester-ar)، ثم راقب وصول القيمة نفسها إلى الـ 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
