2.1、将 OTA 包配置到 ThingsBoard 存储库
1、概述
从 ThingsBoard 3.3 开始,ThingsBoard 允许您向设备上传和分发无线 (OTA) 更新。作为租户管理员,您可以将固件或软件包上传到 OTA 存储库。上传后,您可以将它们分配给设备.ThingsBoard 将通知设备有关可用更新的信息,并提供特定于协议的 API 来下载固件。该平台跟踪更新状态并存储更新历史记录。作为平台用户,您可以使用仪表板监控更新过程。
2、案例
2.1、将 OTA 包配置到 ThingsBoard 存储库
导航至“OTA 更新”菜单项以列出并上传 OTA 更新包。每个包包含:
- 标题 - 您的包的名称。您可以对生产和调试固件/软件使用不同的名称。
- 版本 - 您的包的版本。标题和版本的组合在租户范围内必须是唯一的。
- 设备配置文件 - 每个软件包都与一个设备配置文件兼容。我们跟踪兼容性,以防止意外更新具有不兼容固件/软件的设备。链接到设备配置文件意味着使用此配置文件的设备可以更新到当前软件包。但是,直到用户或脚本将包。
- 类型 - 可以是固件或软件。
- 校验和算法 - 可选参数,它是要使用的校验和算法的简称。
- Checksum - 可选参数,它是文件校验和的值。如果用户没有提供校验和,服务器将自动使用 SHA-256 算法。
- 描述 - 固件的可选文本描述。
2.2、将 OTA 包分配给设备配置文件
您可以将固件/软件分配给设备配置文件,以自动将软件包分发到共享相同配置文件的所有设备。请参阅下面的屏幕截图
2.3、将 OTA 包分配给设备
您还可以将固件/软件分配给特定设备。请参阅下面的屏幕截图。
分配给设备的固件版本将自动覆盖分配给设备配置文件的固件版本。
3、更新流程
将固件/软件分配给设备或设备配置文件会触发更新过程。 ThingsBoard 跟踪更新进度并将其保存到设备属性中。
更新进度可能处于以下状态之一。更新的状态作为设备的属性存储,并用于在仪表板上可视化更新过程。
4、排队状态
固件/软件更新的第一个状态。意味着有关新固件/软件的通知已排队但尚未推送到设备。 ThingsBoard 对更新通知进行排队以避免峰值负载。队列以恒定的速度处理。默认情况下,它配置为每分钟最多通知 100 个设备。
5、启动状态
意味着从队列中获取有关固件/软件的通知并将其推送到设备。在底层,ThingsBoard 将通知转换为以下共享属性的更新:
- fw(sf)_title - 固件(软件)的名称。
- fw(sf)_version - 固件(软件)的版本。
- fw(sf)_size - 固件(软件)文件的大小(以字节为单位)。
- fw(sf)_checksum - 用于验证接收到的文件的完整性的属性。
- fw(sf)_checksum_algorithm - 用于计算文件校验和的算法。
6、更新设备报告的状态
其余状态由当前正在处理更新的设备固件/软件报告。我们为用 python 编写的最流行的协议准备了这些状态的描述和示例应用程序。示例应用程序模拟设备固件/软件的行为,并可用作实现的参考。
- 下载 - 收到有关新固件/软件更新的通知,设备开始下载更新包。
- 已下载 - 设备已完成更新包的下载。
- 已验证 - 设备已验证下载包的校验和。
- 更新 - 设备开始固件/软件更新。通常在设备重新启动或服务重新启动之前发送。
- 已更新 - 固件已成功更新到下一版本。
- 失败 - 校验和未验证,或设备更新失败。有关更多详细信息,请参阅固件仪表板上的“设备失败”选项卡。