Wakaama (sebelumnya Liblwm2m) adalah implementasi dari M2M Protokol Open Mobile Alliance (LWM2M).
Mailing Daftar Pengembang: https://dev.eclipse.org/mailman/listinfo/wakaama-dev
Satu-satunya rilis resmi Wakaama, versi 1.0, dipengaruhi oleh berbagai masalah keamanan (CVE-2019-9004, CVE-2021-41040).
Harap gunakan komit terbaru di cabang utama. Rilis 1.0 tidak didukung lagi.
Pekerjaan ini berlisensi ganda di bawah Eclipse Public License v2.0 dan Eclipse Distribution License v1.0.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
git clone https://github.com/eclipse-wakaama/wakaama.git
Saat mengerjakan Wakaama sendiri, atau berniat untuk menjalankan contoh aplikasi klien, submodul harus diperiksa:
git clone --recurse-submodules https://github.com/eclipse-wakaama/wakaama.git
Wakaama adalah perpustakaan yang sangat dapat dikonfigurasi. Itu dibangun dengan cmake. Lihatlah contoh/server/cmakelists.txt untuk contoh bagaimana memasukkannya.
Pengaturan yang berbeda dapat dikonfigurasi dengan variabel cache cmake (misalnya cmake -DLOG_LEVEL=INFO ).
Wakaama mendukung banyak mode. Setidaknya satu mode perlu didefinisikan dengan variabel cache cmake.
Wakaama mendukung opsi terkait klien tambahan. Ini hanya tersedia jika mode klien diaktifkan.
Harap dicatat: LWM2M Versi 1.0 hanya didukung oleh klien, sementara server kompatibel ke belakang.
Format data berikut dapat dikonfigurasi untuk Wakaama:
Infrastruktur logging dapat dikonfigurasi dengan variabel cache cmake (misalnya cmake -DWAKAAMA_LOG_LEVEL=INFO ).
Jika NONE yang dipilih, pengguna Wakaama perlu menerapkan lapisan transportasi khusus. Periksa implementasi yang tersedia untuk informasi lebih lanjut.
Jika NONE yang dipilih, pengguna Wakaama perlu menerapkan lapisan abstraksi platform khusus. Periksa implementasi POSIX yang tersedia untuk informasi lebih lanjut.
Wakaama menyediakan perpustakaan CLI sederhana. Itu dapat diaktifkan dengan:
Pada Ubuntu 24.04, digunakan dalam CI, dependensi dapat dipasang seperti itu:
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.txtUntuk MacOS, dependensi pengembangan dapat diinstal seperti itu:
brew install automake clang-format cmake cppcheck cunit gcc gitlint gnu-getopt make ninja
Kode C baru harus diformat dengan format dentang.
Gaya ini didasarkan pada gaya LLVM, tetapi dengan 4 bukannya 2 ruang indentasi dan memungkinkan untuk 120 bukan 80 karakter per baris.
Untuk memeriksa apakah kode Anda cocok dengan gaya yang diharapkan, perintah berikut sangat membantu:
git clang-format-18 --diff : Tunjukkan apa yang perlu diubah agar sesuai dengan gaya kode yang diharapkangit clang-format-18 : Terapkan semua perubahan yang diperlukan secara langsunggit clang-format-18 --commit main : Memperbaiki Gaya Kode untuk Semua Perubahan Sejak Utama Jika kode yang ada diformat ulang, ini harus dilakukan dalam komit terpisah. ID komit-nya harus ditambahkan ke file .git-blame-ignore-revs dan berkomitmen dalam komit lain.
Semua kode cmake harus diformat dengan format CMake.
Untuk memeriksa apakah kode Anda cocok dengan gaya yang diharapkan, perintah berikut sangat membantu:
tools/ci/run_ci.sh --run-cmake-format : Uji semua file CMake, cetak yang menyinggungcmake-format --in-place <unformatted-file> : Terapkan semua perubahan yang diperlukan langsung ke Untuk menghindari beban yang tidak dibutuhkan pada infrastruktur GitHub, harap pertimbangkan untuk menjalankan tools/ci/run_ci.sh --all sebelum mendorong.
cd wakaama
tools/ci/run_ci.sh --run-build
pytest -v tests/integration
Ada beberapa contoh aplikasi yang disediakan untuk menguji kemampuan server, klien dan bootstrap Wakaama. Resep -resep berikut menganggap Anda berada di platform seperti Unix dan Anda memiliki cmake dan membuat terpasang.
cmake -S examples/server -B build-servercmake --build build-server./build-server/lwm2mserver [Options]LWM2MServer mendengarkan port UDP 5683. Ini fitur antarmuka baris perintah dasar. Ketik 'bantuan' untuk daftar perintah yang didukung.
Pilihannya adalah:
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]Di sebelah LWM2MClient ada juga contoh dengan DTL yang diaktifkan dan dengan transfer block1 mentah diaktifkan.
LWM2MClient menampilkan sembilan objek LWM2M:
Objek Keamanan (ID: 0)
Objek Server (ID: 1)
Objek Kontrol Akses (ID: 2) sebagai kerangka
Objek Perangkat (ID: 3) Berisi nilai-nilai kode keras dari contoh klien LWM2M Lampiran E dari spesifikasi teknis LWM2M.
Objek Pemantauan Konektivitas (ID: 4) sebagai kerangka
Objek Pembaruan Firmware (ID: 5) sebagai kerangka.
Objek Lokasi (ID: 6) sebagai kerangka.
Objek Statistik Konektivitas (ID: 7) sebagai kerangka.
Objek Tes (ID: 31024) dengan deskripsi berikut:
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 membuka port UDP 56830 dan mencoba mendaftar ke server LWM2M di 127.0.0.1:5683. Ini fitur antarmuka baris perintah dasar. Ketik 'bantuan' untuk daftar perintah yang didukung.
Pilihannya adalah:
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
Nilai tambahan untuk biner 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
Untuk meluncurkan sesi bootstrap: ./lwm2mclient -b
cmake -S examples/lightclient -B build-lightclientcmake --build build-lightclient./build-lightclient/lightclient [Options]Lightclient jauh lebih sederhana bahwa LWM2MClient dan hanya memiliki empat objek LWM2M:
LightClient tidak menampilkan antarmuka baris perintah apa pun.
Pilihannya adalah:
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]Lihat contoh/bootstrap_server/readme untuk informasi lebih lanjut.