亿琪软件-开源博客 - 源码
type: channel
link: https://www.yiqisoft.cn/blogs/tag/%E6%BA%90%E7%A0%81/
items: ThingsBoard 移动端源码分析
items: ThingsBoard 3.3 版本 OTA 源码分析

ThingsBoard 移动端源码分析
type: item
date: 2021-08-19T02:34:00+00:00
description: ThingsBoard 移动端采用 flutter 来实现，支持 Android 和 iOS，当然，web 也可以。总体测试下来，还是算不错的，虽然还没有 release 版本，但是，完全可以使用。 如果你有 ThingsBoard 服务需求或二次开发需求，请与我们联系： 18616669123 目录 关注我们 关注 ThingsBoard 微信公众号 访问 ThingsBoard 中文社区网站 准备工作 flutter 工作环境 Android iOS 源码分析 配置自己的服务器 汉化过程 编译 中文汉化效果预览 登录 设备 仪表板 关注我们 关注 ThingsBoard 微信公众号 手动增加微信公众号：thingsboard_cn 访问 ThingsBoard 中文社区网站 访问网址：http://www.thingsboard.club 准备工作 flutter 工作环境 参考官方手册，很简单，下载，解压缩，运行：flutter doctor ，一步步排查，直到没有错误。这里不多说，不是重点。 Android 需要提前准备好 Android 开发环境和SDK，具体请参考 Android 开发环境要求，主要是能跑起来环境就没问题。 iOS 前提是需要一台 macOS 的电脑，配置低了还不行，还需要安装很多软件环境，这个对普通开发者还是有难度，土豪除外。 源码分析 配置自己的服务器 lib/constants/app_constants.dart， thingsBoardApiEndpoint 改成你的服务器地址即可； 汉化过程 大概思路就是各种dart 文件，比如： lib/modules/profile/change_password_page.dart，修改密码页面，把字符串改成中文就好了，没什么其他要求。 编译 运行 flutter build apk，可简单了，结果就是这样： jiekechoo@jiekechoo flutter_thingsboard_app % flutter build apk --no-tree-shake-icons Building with sound null safety Running Gradle task 'assembleRelease'... Running Gradle task 'assembleRelease'... Done 212.8s ✓ Built build/app/outputs/flutter-apk/app-release.apk (22.8MB). apk 文件在 build/app/outputs/flutter-apk/app-release.apk，拿到Android 手机上安装即可使用，非常简单。 中文汉化效果预览 登录 直接使用 ThingsBoard 上用户登录即可 设备 仪表板

ThingsBoard 3.3 版本 OTA 源码分析
type: item
date: 2021-08-14T10:35:00+00:00
description: 2021.8.14 第一时间将 TB 3.3 的 OTA 功能进行源码分析，基本思路就是 应用了telemetry 和 attributes ，不复杂，自己实现的话也是要这样来做。这里，只是分析了 CoAP 协议层，其他类似。 如果你有 ThingsBoard 服务需求或二次开发需求，请与我们联系： 18616669123 目录 关注我们 关注 ThingsBoard 微信公众号 访问 ThingsBoard 中文社区网站 1、CoAP 路径： 2、checksum算法 3、OTA Dashboard 4、OTA 固件存储 5、测试脚本 5、升级步骤 关注我们 关注 ThingsBoard 微信公众号 手动增加微信公众号：thingsboard_cn 访问 ThingsBoard 中文社区网站 访问网址：http://www.thingsboard.club 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 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 基本可以用，但是脚步写的不是很好，有能力的可以自己改。 5、升级步骤 1、服务有一个属性，标记是不是要升级，设备定期去获取这个属性，有的话就下载，提交服务器“下载中”； 2、固定地址下载：包括固件名字和版本号，下载完成：提交服务器“已下载”； 3、设备验证固件包完整性，提交服务器“已验证”； 4、设备开始更新前，提交服务器“更新中”； 5、设备更新完成后，成功提交“已更新”，失败提交“失败”；