عن المشروع

# wolfMQTT wolfMQTT هو تطبيق عميل MQTT مدمج وفعّال مكتوب بلغة C، مصمم للأنظمة المدمجة والبيئات محدودة الموارد. يتكامل مع مكتبة wolfSSL لتوفير دعم TLS قوي، بما في ذلك TLS 1.3. ## الميزات الرئيسية - **دعم MQTT v3.1.1 وv5.0**: دعم كامل للمواصفات لـ QoS 0-2، والوصية الأخيرة (LWT)، والعديد من ميزات v5 مثل حزمة AUTH، وخصائص المستخدم، وفصل الخادم، ورموز الأسباب، والأسماء المستعارة للمواضيع. - **دعم MQTT-SN**: لشبكات الاستشعار ذات النطاق الترددي المنخفض، بناءً على مواصفات OASIS MQTT-SN v1.2، تعمل عبر UDP. - **TLS 1.3 مع دعم ما بعد الكم**: يمكن بناؤه مع wolfSSL لدعم خوارزميات ما بعد الكم مثل ML-KEM-768 وML-DSA-65 للاتصال الآمن. - **وسيط خفيف**: يتضمن وسيط MQTT بسيط مناسب للبيئات المدمجة، يدعم عملاء v3.1.1 وv5.0 مع TLS اختياري ونقل WebSocket. - **دعم WebSocket**: الاتصال بوسطاء MQTT عبر WebSockets القياسية أو الآمنة. - **متعدد المنصات**: قابل للبناء على Linux وmacOS وWindows (Visual Studio) وMinGW وZephyr RTOS وArduino. - **تشغيل غير محجوب ومتعدد الخيوط**: ميزات اختيارية لتعزيز التزامن والأداء. ## البناء ### Mac/Linux/Unix 1. `./autogen.sh` (إذا تم الاستنساخ من GitHub) 2. `./configure` (راجع `./configure --help` للخيارات) 3. `make` 4. `sudo make install` ### Windows Visual Studio قم ببناء wolfSSL أولاً، ثم افتح حل `wolfmqtt.sln` وابنِ بنفس البنية المعمارية. ### CMake ``` mkdir build && cd build cmake .. -DWITH_WOLFSSL=/prefix/to/wolfssl/install/ cmake --build . ``` ### vcpkg التثبيت عبر `./vcpkg install wolfmqtt`. ## البنية المعمارية تتكون المكتبة من ثلاثة مكونات رئيسية: 1. **mqtt_client**: واجهات التطبيق عالية المستوى لعمليات عميل MQTT (الاتصال، النشر، الاشتراك، إلخ). 2. **mqtt_packet**: يتعامل مع ترميز/فك ترميز الحزم لجميع أنواع حزم MQTT. 3. **mqtt_socket**: طبقة النقل التي تغلف TLS اختياريًا وتستخدم عمليات استدعاء الشبكة الخاصة بالمنصة. ## الأمثلة - **mqttclient**: مثال عميل عام مع العديد من ميزات MQTT v5. - **mqttsimple**: عميل مستقل يستخدم مقابس BSD القياسية. - **nbclient**: مثال على الإدخال/الإخراج غير المحجوب. - **firmware**: مثال على تحديث البرامج الثابتة مع نشر الصور الموقعة والتحقق منها. - **Azure IoT Hub**: مثال للاتصال بـ Azure IoT Hub. - **AWS IoT**: مثال لـ AWS IoT مع مصادقة شهادة عميل TLS. - **Watson IoT**: مثال لمنصة IBM Watson IoT. - **sn-client**: مثال عميل MQTT-SN لشبكات الاستشعار. - **multithread**: يوضح النشر متعدد الخيوط وانتظار الرسائل. - **pub-sub**: أمثلة بسيطة للنشر والاشتراك للاختبار السريع. - **websocket**: مثال عميل WebSocket. ## التوافق مع الوسطاء تم اختباره مع Adafruit IO وAWS وAzure وflespi وHiveMQ وIBM WIoTP وMosquitto وPaho MQTT-SN Gateway وVerneMQ وEMQX. ## دعم MQTT لما بعد الكم قم ببناء wolfSSL مع `--enable-dilithium --enable-mlkem`، ثم قم ببناء wolfMQTT بشكل طبيعي. استخدم مثال `mqttclient` مع خيار `-Q` لتحديد مجموعة ما بعد الكم (مثل `SecP384r1MLKEM768`). ## دعم WebSocket قم بالبناء مع `--enable-websocket` وثبّت `libwebsockets`. يتصل المثال بوسيط عبر WebSockets، مع TLS اختياري والمصادقة المتبادلة. ## الوسيط قم بالبناء مع `--enable-broker` لتضمين وسيط MQTT خفيف. راجع `BROKER.md` للحصول على التفاصيل الكاملة. ## خيارات إضافية - `--enable-debug` أو `--enable-debug=verbose` للتسجيل. - `--enable-nonblock` للإدخال/الإخراج غير المحجوب. - `--enable-mt` لتعدد الخيوط. - `--enable-v5` لدعم MQTT v5. - `--enable-sn` لدعم MQTT-SN. - `--enable-curl` لاستخدام واجهة المقبس السهلة من libcurl كخلفية. - `--enable-stress` لاختبار الإجهاد مع تعدد الخيوط وعدم الحجب. لمزيد من التفاصيل، راجع [دليل wolfMQTT](https://www.wolfssl.com/documentation/manuals/wolfmqtt/wolfMQTT-Manual.pdf).