Wakaama (سابقًا LiBlWM2M) هو تطبيق لبروتوكول M2M الخفيف الوزن (LWM2M).
القائمة البريدية للمطورين: https://dev.eclipse.org/mailman/listinfo/wakaama-dev
يتأثر الإصدار الرسمي الوحيد لـ Wakaama ، الإصدار 1.0 ، بمختلف مشكلات الأمان (CVE-2019-9004 ، CVE-2021-41040).
يرجى استخدام أحدث الالتزام في الفرع الرئيسي. الإصدار 1.0 غير مدعوم بعد الآن.
هذا العمل مرخص له مزدوج بموجب ترخيص Eclipse Public V2.0 وترخيص توزيع Eclipse v1.0.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
git clone https://github.com/eclipse-wakaama/wakaama.git
عند العمل على Wakaama نفسها ، أو تعتزم تشغيل تطبيق العميل على سبيل المثال ، يجب التحقق من العروض الفرعية:
git clone --recurse-submodules https://github.com/eclipse-wakaama/wakaama.git
Wakaama هي مكتبة قابلة للتكوين. وهي مبنية مع cmake. انظر إلى الأمثلة/الخادم/cmakelists.txt للحصول على مثال على كيفية تضمينه.
يمكن تكوين الإعدادات المختلفة مع متغيرات ذاكرة التخزين المؤقت CMAKE (مثل cmake -DLOG_LEVEL=INFO ).
يدعم Wakaama أوضاع متعددة. يجب تعريف وضع واحد على الأقل مع متغيرات ذاكرة التخزين المؤقت CMAKE.
يدعم Wakaama خيارات إضافية تتعلق بالعميل. هذه متوفرة فقط إذا تم تمكين وضع العميل.
يرجى ملاحظة: يتم دعم LWM2M الإصدار 1.0 فقط من قبل العملاء ، في حين أن الخوادم متوافقة مع الوراء.
تنسيقات البيانات التالية قابلة للتكوين لـ Wakaama:
يمكن تكوين البنية التحتية للتسجيل باستخدام متغيرات ذاكرة التخزين المؤقت CMAKE (مثل cmake -DWAKAAMA_LOG_LEVEL=INFO ).
إذا لم يتم اختيار NONE ، يحتاج مستخدم Wakaama إلى تنفيذ طبقة نقل مخصصة. تحقق من التطبيقات المتاحة لمزيد من المعلومات.
إذا لم يتم اختيار NONE ، يحتاج مستخدم Wakaama إلى تنفيذ طبقة تجريد منصة مخصصة. تحقق من تطبيق Posix المتاح لمزيد من المعلومات.
يوفر Wakaama مكتبة CLI بسيطة. يمكن تمكينه مع:
على Ubuntu 24.04 ، المستخدمة في CI ، يمكن تثبيت التبعيات على هذا النحو:
apt install build-essential clang-format clang-format-18 clang-tools-18 cmake cppcheck gcovr git libcunit1-dev ninja-build python3-pippip3 install -r tools/requirements-compliance.txtبالنسبة إلى MacOS ، يمكن تثبيت تبعيات التطوير على هذا النحو:
brew install automake clang-format cmake cppcheck cunit gcc gitlint gnu-getopt make ninja
يجب أن يتم تنسيق رمز C الجديد مع clang-format.
يعتمد النمط على نمط LLVM ، ولكن مع 4 بدلاً من المسافة المسافة المسافة والسماح بـ 120 بدلاً من 80 حرفًا لكل سطر.
للتحقق مما إذا كان الرمز الخاص بك يتطابق مع النمط المتوقع ، فإن الأوامر التالية مفيدة:
git clang-format-18 --diff : أظهر ما يجب تغييره لمطابقة نمط الكود المتوقعgit clang-format-18 : تطبيق جميع التغييرات المطلوبة مباشرةgit clang-format-18 --commit main : إصلاح نمط رمز لجميع التغييرات منذ ذلك الحين إذا تم إعادة تنسيق الكود الحالي ، فيجب القيام بذلك في التزام منفصل. يجب إضافة معرف الالتزام الخاص به إلى الملف .git-blame-ignore-revs والالتزام في التزام آخر.
يجب تنسيق جميع رمز CMAKE مع تنسيق cmake.
للتحقق مما إذا كان الرمز الخاص بك يتطابق مع النمط المتوقع ، فإن الأوامر التالية مفيدة:
tools/ci/run_ci.sh --run-cmake-format : اختبر جميع ملفات cmake ، وطباعة مخالفة مخالفةcmake-format --in-place <unformatted-file> لتجنب الحمل غير الضروري على البنية التحتية لـ GitHub ، يرجى النظر في تشغيل tools/ci/run_ci.sh --all قبل الدفع.
cd wakaama
tools/ci/run_ci.sh --run-build
pytest -v tests/integration
هناك بعض التطبيقات المقدمة لاختبار إمكانيات الخادم والعميل والتمهيد في Wakaama. تفترض الوصفات التالية أنك على نظام UNIX مثل الأساس ولديك cmake وتثبيت.
cmake -S examples/server -B build-servercmake --build build-server./build-server/lwm2mserver [Options]يستمع LWM2MServer على منفذ UDP 5683. ويتميز بواجهة سطر الأوامر الأساسية. اكتب "مساعدة" للحصول على قائمة بالأوامر المدعومة.
الخيارات هي:
Usage: lwm2mserver [OPTION]
Launch a LwM2M server on localhost.
Options:
-4 Use IPv4 connection. Default: IPv6 connection
-l PORT Set the local UDP port of the Server. Default: 5683
-S BYTES CoAP block size. Options: 16, 32, 64, 128, 256, 512, 1024. Default: 1024
cmake -S examples/client/udp -B build-client-udpcmake --build build-client-udp./build-client-udp/lwm2mclient [Options]بجانب LWM2Mclient ، هناك أيضًا أمثلة مع تمكين DTLs ومع تمكين نقل block1 الخام.
يتميز LWM2Mclient بتسعة كائنات LWM2M:
كائن أمان (معرف: 0)
كائن الخادم (معرف: 1)
كائن التحكم في الوصول (المعرف: 2) كهيكل عظمي
كائن الجهاز (المعرف: 3) يحتوي على قيم مرمزة من مثال العميل LWM2M من الملحق E للمواصفات الفنية LWM2M.
كائن مراقبة الاتصال (المعرف: 4) كهيكل عظمي
كائن تحديث البرامج الثابتة (المعرف: 5) كهيكل عظمي.
كائن الموقع (معرف: 6) كهيكل عظمي.
كائن إحصائيات الاتصال (المعرف: 7) كهيكل عظمي.
اختبار كائن (معرف: 31024) مع الوصف التالي:
Multiple
Object | ID | Instances | Mandatory |
Test | 31024 | Yes | No |
Resources:
Supported Multiple
Name | ID | Operations | Instances | Mandatory | Type | Range |
test | 1 | R/W | No | Yes | Integer | 0-255 |
exec | 2 | E | No | Yes | | |
dec | 3 | R/W | No | Yes | Float | |
يفتح LWM2Mclient منفذ UDP 56830 ويحاول التسجيل في خادم LWM2M على 127.0.0.1:5683. يتميز بواجهة سطر الأوامر الأساسية. اكتب "مساعدة" للحصول على قائمة بالأوامر المدعومة.
الخيارات هي:
Usage: lwm2mclient [OPTION]
Launch a LwM2M client.
Options:
-n NAME Set the endpoint name of the Client. Default: testlwm2mclient
-l PORT Set the local UDP port of the Client. Default: 56830
-h HOST Set the hostname of the LwM2M Server to connect to. Default: localhost
-p PORT Set the port of the LwM2M Server to connect to. Default: 5683
-4 Use IPv4 connection. Default: IPv6 connection
-t TIME Set the lifetime of the Client. Default: 300
-b Bootstrap requested.
-c Change battery level over time.
-S BYTES CoAP block size. Options: 16, 32, 64, 128, 256, 512, 1024. Default: 1024
قيم إضافية لـ LWM2MCLIENT_TINYDTLS BINARY:
-i Set the device management or bootstrap server PSK identity. If not set use none secure mode
-s Set the device management or bootstrap server Pre-Shared-Key. If not set use none secure mode
لإطلاق جلسة bootstrap: ./lwm2mclient -b
cmake -S examples/lightclient -B build-lightclientcmake --build build-lightclient./build-lightclient/lightclient [Options]يكون Lightclient أبسط بكثير من أن LWM2Mclient ويتميز فقط بأربعة كائنات LWM2M:
لا يعرض LightClient أي واجهة سطر الأوامر.
الخيارات هي:
Usage: lwm2mclient [OPTION]
Launch a LwM2M client.
Options:
-n NAME Set the endpoint name of the Client. Default: testlightclient
-l PORT Set the local UDP port of the Client. Default: 56830
-4 Use IPv4 connection. Default: IPv6 connection
-S BYTES CoAP block size. Options: 16, 32, 64, 128, 256, 512, 1024. Default: 1024
cmake -S examples/bootstrap_server -B build-bootstrapcmake --build build-bootstrap./build-bootstrap/bootstrap_server [Options]ارجع إلى أمثلة/bootstrap_server/readMe لمزيد من المعلومات.