Обновление прошивки OMA с использованием сервера Leshan: где сохранить файлы?

Я совершенно новичок в мире IOT (протоколы). Я хочу обновить некоторые устройства удаленно (они будут установлены на расстоянии около 8000 км от моего рабочего места). Я узнал, что LWM2M будет соответствовать моему объему.

Поскольку интернет-соединение там нестабильно и пропускная способность мала, я решил также установить Raspberry Pi для сбора данных с датчиков и установить сервер Leshan для запуска обновлений.

Я проверил устройства и могу зарегистрировать их на сервере Leshan на Pi, прочитать некоторые данные и перезагрузить устройства. Проблема в том, что я не знаю, где сохранить бинарный файл для обновления, чтобы устройство могло их загрузить.

Я попробовал следующие шаги:

  1. Сохраните файл в [leshan-dir]/update.bin.
  2. Напишите "URI пакета": coap://[raspi-IP]:5683/update.bin
    После этого цвет фона кнопки "Запись" меняется на зеленый.
  3. Выполнить обновление

Ответ сервера - 404 [Не найдено].

Я искал любой API, чтобы узнать, где я могу сохранить файл.bin, но безуспешно. И поскольку никто, похоже, не имел подобной ошибки, я начинаю думать, что упустил некоторые моменты.

Где я должен сохранить файлы на Raspbery Pi, чтобы я мог выполнить обновление?

1 ответ

Я нашел решение для проблемы, которую я выставил выше.

Я использую из калифорнийского проекта демо-приложение cf-simplefile-server (ссылка: https://github.com/eclipse/californium/tree/2.0.x/demo-apps/cf-simplefile-server)

Примечание: вы должны зайти в git-branch 2.0.x, чтобы использовать его.

Чтобы запустить сервер leshan и файловый сервер на одной машине, мне пришлось изменить порт одного из серверов, используя файл Californium.properties. Я решил поменять файловый сервер на 5685 и 5686

Когда оба сервера работают, я могу вставить в Package URI что-то вроде:

COAP://[[ip_of_the_pi]]:5685/ данные /[[name_of_the_firmware_file]]

Вероятно, есть лучшее решение для этого, но для новичка coap/lwm2m, как это работает очень хорошо.

Примечание. Если у вас есть файл большего размера для передачи, вы также можете изменить свойство MAX_RESOURCE_BODY_SIZE

Я надеюсь, что это может кому-то помочь.

С Уважением,

Elvys

Другие вопросы по тегам