Wakaama (ранее LIBLWM2M) - это реализация легкого протокола M2M Open Mobile Alliance (LWM2M).
Список рассылки разработчиков: https://dev.eclipse.org/mailman/listinfo/wakaama-dev
Единственный официальный релиз Wakaama, версия 1.0, влияет на различные проблемы безопасности (CVE-2019-9004, CVE-2021-41040).
Пожалуйста, используйте самый последний коммит в главной филиале. Выпуск 1.0 больше не поддерживается.
Эта работа двойной лицензии в рамках Лицензии Eclipse Public License v2.0 и Eclipse Distribution v1.0.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
git clone https://github.com/eclipse-wakaama/wakaama.git
При работе над самой Вакаамой или намерением запустить пример клиентского приложения, подмодули должны быть проверены:
git clone --recurse-submodules https://github.com/eclipse-wakaama/wakaama.git
Wakaama - очень настраиваемая библиотека. Он построен с Cmake. Посмотрите на примеры/server/cmakelists.txt, чтобы получить пример того, как его включить.
Различные настройки могут быть настроены с помощью переменных кэша cmake (например, cmake -DLOG_LEVEL=INFO ).
Вакаама поддерживает несколько режимов. По крайней мере, один режим должен быть определен с помощью переменных кэша cmake.
Wakaama поддерживает дополнительные варианты, связанные с клиентами. Они доступны только в том случае, если режим клиента включен.
Обратите внимание: LWM2M версия 1.0 поддерживается только клиентами, а серверы обратно совместимы.
Следующие форматы данных настраиваются для Wakaama:
Инфраструктура журнала может быть настроена с помощью переменных кэша cmake (например, cmake -DWAKAAMA_LOG_LEVEL=INFO ).
Если NONE не выбран, пользователю Wakaama должен внедрить пользовательский транспортный уровень. Проверьте доступные реализации для получения дополнительной информации.
Если NONE не выбран, пользователю Wakaama должен реализовать пользовательский уровень абстракции платформы. Проверьте доступную реализацию POSIX для получения дополнительной информации.
Вакаама предоставляет простую библиотеку 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 Spaces Sadpent и позволяет 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-formatcmake-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 прослушивает на порту 5683 UDP. Он имеет базовый интерфейс командной строки. Введите «помощь» для списка поддерживаемых команд.
Варианты:
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 есть также примеры с включенными DTL и с помощью переноса RAW 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 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
Чтобы запустить сеанс начальной загрузки: ./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 для получения дополнительной информации.