Wakaama (เดิมคือ Liblwm2m) เป็นการดำเนินการตามโปรโตคอล M2M ที่มีน้ำหนักเบาของ Open Mobile Alliance (LWM2M)
ผู้พัฒนารายชื่อผู้รับจดหมาย: https://dev.eclipse.org/mailman/listinfo/wakaama-dev
การเปิดตัวอย่างเป็นทางการของ Wakaama รุ่น 1.0 ได้รับผลกระทบจากปัญหาด้านความปลอดภัยที่หลากหลาย (CVE-2019-9004, CVE-201-41040)
โปรดใช้การกระทำล่าสุดในสาขาหลัก ไม่รองรับรีลีส 1.0 อีกต่อไป
งานนี้ได้รับใบอนุญาตคู่ภายใต้ใบอนุญาตสาธารณะ Eclipse V2.0 และ Eclipse Distribution License V1.0
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
git clone https://github.com/eclipse-wakaama/wakaama.git
เมื่อทำงานกับ Wakaama เองหรือตั้งใจที่จะเรียกใช้แอปพลิเคชันไคลเอนต์ตัวอย่างต้องตรวจสอบ submodules:
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
สไตล์นั้นขึ้นอยู่กับสไตล์ LLVM แต่ด้วย 4 แทนการเยื้อง 2 ช่องว่างและอนุญาตให้ 120 แทน 80 อักขระต่อบรรทัด
เพื่อตรวจสอบว่ารหัสของคุณตรงกับสไตล์ที่คาดหวังคำสั่งต่อไปนี้มีประโยชน์:
git clang-format-18 --diff : แสดงสิ่งที่ต้องเปลี่ยนเพื่อให้ตรงกับรูปแบบรหัสที่คาดหวังgit clang-format-18 : ใช้การเปลี่ยนแปลงที่จำเป็นทั้งหมดโดยตรงโดยตรงgit clang-format-18 --commit main : แก้ไขรูปแบบรหัสสำหรับการเปลี่ยนแปลงทั้งหมดตั้งแต่หลัก หากรหัสที่มีอยู่ได้รับการจัดรูปแบบใหม่สิ่งนี้จะต้องทำในการกระทำที่แยกต่างหาก ID การกระทำของมันจะต้องเพิ่มลงในไฟล์ .git-blame-ignore-revs และมุ่งมั่นในการกระทำอื่น
รหัส CMAKE ทั้งหมดจะต้องจัดรูปแบบด้วย CMAKE-Format
เพื่อตรวจสอบว่ารหัสของคุณตรงกับสไตล์ที่คาดหวังคำสั่งต่อไปนี้มีประโยชน์:
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
มีตัวอย่างแอปพลิเคชันที่มีให้สำหรับการทดสอบความสามารถของเซิร์ฟเวอร์ไคลเอนต์และ bootstrap ของ Wakaama สูตรอาหารต่อไปนี้ถือว่าคุณอยู่บนแพลตฟอร์ม Unix Like และคุณมี 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 เก้าวัตถุ:
วัตถุรักษาความปลอดภัย (ID: 0)
วัตถุเซิร์ฟเวอร์ (ID: 1)
วัตถุควบคุมการเข้าถึง (ID: 2) เป็นโครงกระดูก
วัตถุอุปกรณ์ (ID: 3) ที่มีค่ารหัสฮาร์ดจากตัวอย่างไคลเอนต์ LWM2M ของภาคผนวก E ของข้อกำหนดทางเทคนิค LWM2M
วัตถุการตรวจสอบการเชื่อมต่อ (ID: 4) เป็นโครงกระดูก
วัตถุอัพเดตเฟิร์มแวร์ (ID: 5) เป็นโครงกระดูก
วัตถุตำแหน่ง (ID: 6) เป็นโครงกระดูก
วัตถุสถิติการเชื่อมต่อ (ID: 7) เป็นโครงกระดูก
วัตถุทดสอบ (ID: 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 ไบนารี:
-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 สำหรับข้อมูลเพิ่มเติม