عن المشروع
# 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).
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.