Обновление прошивки OMA с использованием сервера Leshan: где сохранить файлы?
Я совершенно новичок в мире IOT (протоколы). Я хочу обновить некоторые устройства удаленно (они будут установлены на расстоянии около 8000 км от моего рабочего места). Я узнал, что LWM2M будет соответствовать моему объему.
Поскольку интернет-соединение там нестабильно и пропускная способность мала, я решил также установить Raspberry Pi для сбора данных с датчиков и установить сервер Leshan для запуска обновлений.
Я проверил устройства и могу зарегистрировать их на сервере Leshan на Pi, прочитать некоторые данные и перезагрузить устройства. Проблема в том, что я не знаю, где сохранить бинарный файл для обновления, чтобы устройство могло их загрузить.
Я попробовал следующие шаги:
- Сохраните файл в [leshan-dir]/update.bin.
- Напишите "URI пакета": coap://[raspi-IP]:5683/update.bin
После этого цвет фона кнопки "Запись" меняется на зеленый. - Выполнить обновление
Ответ сервера - 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