updates - 使用乐山服务器更新OMA固件:文件保存在哪里?
问题描述
我对物联网(协议)的世界很陌生。我想远程更新一些设备(它们将安装在离我工作地点大约 8000 公里的地方)。我发现 LWM2M 适合我的范围。
由于那里的互联网连接不稳定,带宽低,我决定也安装一个树莓派来收集传感器的数据,并安装一个乐山服务器来触发更新。
我已经测试了这些设备,我可以将它们注册到 Pi 上的乐山服务器,读取一些数据,然后重新启动设备。问题是,我不知道在哪里保存我的二进制文件以进行更新,以便设备可以下载它们。
我尝试了以下步骤:
- 将文件保存在 [leshan-dir]/update.bin 上。
- 写入“Package URI”:coap://[raspi-IP]:5683/update.bin
之后,“Write”按钮的背景颜色变为绿色。 - 执行更新
服务器的响应是 404 [Not Found]。
我一直在寻找任何 API 来找出可以保存 .bin 文件的位置,但没有成功。而且因为似乎没有人遇到过类似的错误,所以我开始认为我错过了一些要点。
我必须将文件保存在 Raspbery Pi 的哪里,以便我可以执行更新?
解决方案
我找到了解决我上面暴露的问题的方法。
我从 californium-project 使用 demo-app cf-simplefile-server(参考https://github.com/eclipse/californium/tree/2.0.x/demo-apps/cf-simplefile-server)
注意:您必须签出到 git-branch 2.0.x 才能使用它。
要在同一台机器上运行乐山服务器和文件服务器,我必须使用文件Californium.properties更改其中一台服务器的端口。我决定将文件服务器更改为 5685 和 5686
当两个服务器都运行时,我可以在包 URI中插入类似的内容:
coap://[[ip_of_the_pi]]:5685/data/[[name_of_the_firmware_file]]
可能有更好的解决方案,但对于像它这样的 coap/lwm2m 初学者来说效果很好。
注意:如果您有更大的文件要传输,您也可以更改属性 MAX_RESOURCE_BODY_SIZE
我希望这可以帮助某人。
问候,
埃尔维斯
推荐阅读
- python - 如何将循环转换为多处理?
- python-3.x - for 循环追加字符串,但不连接
- .net - .Net Core Nuget 参考问题
- square - Square 退款 API 是否停止工作?
- c# - 无法在 C# 中验证 Google oAuth JWT
- c# - 为什么 timer_Tick 代码运行时我的程序会冻结?
- c# - 在 Windows 窗体的选项卡控件中与多个页面共享一个按钮
- c# - C# SameSite 标志问题
- c# - 将 StorageFileQueryResult 与图像元数据一起使用时,StorageFile.GetImagePropertiesAsync() 会给出错误的结果
- reactjs - MobX。@observable 有效,但 @computed 无效