跳转至

ThingsBoard 3.3 版本 OTA 源码分析

2021.8.14 第一时间将 TB 3.3 的 OTA 功能进行源码分析,基本思路就是 应用了 telemetry 和 attributes ,不复杂,自己实现的话也是要这样来做。这里,只是分析了 CoAP 协议层,其他类似。

  • ThingsBoard 3.3 版本 OTA 源码分析
  • CoAP 方法
  • 算法
  • OTA 管理

1、CoAP 路径

按照官方文档里面的路径是错误的,需要改成如下 url 路径才能获取固件:coap://localhost/fw/$access_token?title=$title&version=$versoin

具体文件位置: /common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java

2、checksum 算法

默认支持 SHA256,如果设备端不支持或有其他算法请自取 enum 里面内容。 /common/data/src/main/java/org/thingsboard/server/common/data/ota/ChecksumAlgorithm.java public enum ChecksumAlgorithm { MD5, SHA256, SHA384, SHA512, CRC32, MURMUR3_32, MURMUR3_128 }

3、OTA Dashboard

自带了两个不错的查看 OTA 的 dashboard,赶紧收藏起来。 firmware: /application/src/main/data/json/demo/dashboards/firmware.json software: /application/src/main/data/json/demo/dashboards/software.json

管理界面

firmware-dashboard.png

4、OTA 固件存储

firmware / software 文件使用 oid 格式存储,隐藏列,无法查看,具体详细内容请自行查看 postgresql oid 数据类型。

5、测试脚本

https://thingsboard.io/docs/user-guide/resources/firmware/ 目录下 http_firmware_client.py mqtt_firmware_client.py coap_firmware_client.py 基本可以用,但是脚步写的不是很好,有能力的可以自己改。

6、升级步骤

  • 1、服务有一个属性,标记是不是要升级,设备定期去获取这个属性,有的话就下载,提交服务器“下载中”;
  • 2、固定地址下载:包括固件名字和版本号,下载完成:提交服务器“已下载”;
  • 3、设备验证固件包完整性,提交服务器“已验证”;
  • 4、设备开始更新前,提交服务器“更新中”;
  • 5、设备更新完成后,成功提交“已更新”,失败提交“失败”;

关于 亿琪软件

上海亿琪软件有限公司,全球开放边缘计算和物联网领域的领导者,全球领先的工业物联网软件开发商和解决方案提供商,助力企业和组织实现数字化转型。公司专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

  • 2023 年,公司发布“ YiFUSION |工业边缘智能融合网关 ”产品,为工业客户提供一整套的边缘计算+AI 能力:高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

  • 2022 年,公司推出 “ YiCLOUD |亿琪云 ”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动 OCP 认证,公司还是边缘计算产业联盟 ECC 成员。

感知物联,畅快无限。

联系我们

  • 网站:http://yiqisoft.cn
  • 邮件:support@yiqisoft.cn
  • 电话:021-68863086
  • 手机:186-1666-9123