Thingsboard3.4-OTA升级

2023-05-16

背景

在做设备端对接thingsboard平台得时候,去研究设备端对接平台的过程中,花了不少时间,在此之前也没有找到相关的文档,于是出于减少大家去研究的时间,写了这篇博客,希望大家能够点赞和收藏。

注意:OTA功能是从3.3版本才开始支持的。
在这里插入图片描述

参考英文文档地址:
https://thingsboard.io/docs/user-guide/ota-updates/

1. 设备事先订阅这些topic主题

v1/devices/me/attributes
v1/devices/me/attributes/response/+
v1/devices/me/rpc/request/+
v1/devices/me/rpc/response/+
v2/fw/response/+/chunk/+

2. 更新过程的状态变化,需要上传遥测数据到平台

DOWNLOADING 收到关于新固件/软件更新的通知,设备开始下载更新包
DOWNLOADED  设备已完成更新包的下载
VERIFIED 设备已验证下载包的校验和。
UPDATING  设备已启动固件/软件更新。通常在设备重新启动或服务重新启动之前发送
UPDATED 固件已成功更新到下一版本
FAILED -未验证校验和,或设备更新失败。

topic:

v1/devices/me/telemetry

发送消息格式:
//收到软件升级通知发送该格式

{
	"current_fw_title": "Initial", //设备当前标题
	"current_fw_version": "v0",//设备当前版本号
	"fw_state": "DOWNLOADING" //固件升级状态,一共刘总,参考上述说明
}

//没用收到软件升级通知发送该格式,以便平台上可以看到设备的当前版本号。

{
	"current_fw_title": "Initial", //设备当前标题
	"current_fw_version": "v0",//设备当前版本号
}

3. 设备主动检查更新

获取平台设置的设备版本信息(比如对单个设备点击修改选中一个版本进行升级,设备里面的共享属性就会更新),设备可以主动获取平台设置的共享属性信息,如果获取信息之后检查到版本信息不一致,可以进行更新,方法如下:
topic:

v1/devices/me/attributes/request/${requestId}
${requestId} - 请求id,从1开始递增

发送消息格式:

{
	"sharedKeys": "fw_version,fw_checksum_algorithm,fw_checksum,fw_size,fw_title,fw_version"
}

返回消息topic

v1/devices/me/attributes/response/1

返回消息示例:

{"shared":{"fw_checksum":"17ae291d08837890026d562e5b666f88d6389fe71d1183d6ed7eeee7505cc209","fw_size":421320,"fw_title":"f","fw_checksum_algorithm":"SHA256","fw_version":"1.2"}}

属性key 描述

fw_checksum	校验和
fw_size	文件大小,以字节为单位
fw_title	标题
fw_checksum_algorithm	校验和算法,默认SHA256
fw_version	版本

4. 平台批量更新设备

会下发升级消息给所有使用该设备配置的所有设备,个别设备单独设置了版本不会进行升级。
在这里插入图片描述

平台会主动推送当前最新版本信息给设备,设备可与当前版本判断,如不同,进行更新。

注意:设备需要首先把设备的当前版本信息推送给平台,平台才会修改版本信息下发通知版本升级信息给设备端,设备收到版本信息后必须对其进行处理,最后上传版本成功或失败消息给平台,平台才会下发下一次的版本升级消息给设备,相当于一个设备升级完成后才能进入下一次的升级。

接收消息topic:

v1/devices/me/attributes

接收消息格式:

{
	"fw_title": "f",
	"fw_version": "1.0",
	"fw_tag": "f 1.0",
	"fw_size": 128537,
	"fw_checksum_algorithm": "SHA256",
	"fw_checksum": "67f3b40ba0cbb7d289a9cf6f3f75e6c319f12bdc82d5c35ecc2f51515a13e5cc"
}
属性key	描述
fw_checksum	校验和
fw_size	文件大小,以字节为单位
fw_title	标题
fw_checksum_algorithm	校验和算法,默认SHA256
fw_version	版本

5. 设备请求获取安装包文件

只能获取平台设置的目标版本的安装包文件,请求和获取方式如下:
设备端发送消息topic:

v2/fw/request/${requestId}/chunk/${chunkNum}

发送消息内容示列:

1230

${requestId}- 请求id从1开始
${chunkNum}- 请求块号,必须从0开始,每次递增1。发送内容为每次接收的字节数,该值不能超过65535,块号递增次数=文件总字节数/每次接收字节数 然后再向上取整,保证安装包文件的能够取完整。

安装包文件数据返回topic:

v2/fw/response/${requestId}/chunk/${chunkNum}

安装包文件返回内容:
为文件的字节数据,每次返回1230个字节数据,最后一次一般小于1230个字节数据,可以当作文件接收的结束标志。接收完整个文件后,采用sha256进行文件的校验,如果校验和和第4步中的校验和相等,视为数据完整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thingsboard3.4-OTA升级 的相关文章

  • SWT/ANR问题-- OTA 升级 从Android P 到 Q 发生 watchdog

    问题描述 通过OTA从Android P升级到Android Q后 手机会出现反复重启 Logcat logs 06 10 12 38 58 496 4369 4369 I SystemServer StartUsageService 06
  • aosp/ota/incremental update package/安卓 7aosp代码增量升级包

    make otapackage out target product aosp aosp ota eng lake zip 61 61 61 gt full update NOT used for incremental package B
  • AOSP ~ OTA调整分区

    参考 https blog csdn net guyongqiangx article details 124224206 https zhuanlan zhihu com p 364003927 https source android
  • ESP8266/ESP32+OLED12864简单WiFi扫描器 支持OTA

    功能描述 OLED显示SSID 全中文界面 支持中文SSID Arduino OTA支持 硬件准备 ESP8266 NodeMCU WiFi ESP32 WIFI 43 BLE 43 OLED开发板 OLED控制芯片 SSD1315兼容SS
  • 手把手教你基于STM32的BootLoader的OTA远程升级

    本文系21ic论坛蓝V作者小叶三千原创撰写 上次发过SD卡的Bootloader离线升级后 xff0c 应大家的要求 xff0c 这次就讲一下STM32的OTA远程升级 OTA又叫空中下载技术 xff0c 是通过移动通信的空中接口实现对移动
  • ESP32 OTA升级

    目录 一 ESP32 OTA升级原理 1 ESP32固件编译 2 固件的远程传输 二 基于ESP32HTTPUpdate库的OTA升级 1 硬件准备 2 软件实现 三 注意事项 1 升级文件大小限制 2 WiFi稳定性 3 固件版本号 结语
  • [开源]OTA打包工具

    文章目录 OTA打包工具 96 ota packer 96 安装二进制安装源码编译安装 使用准备示例全量包增量包生成关于OTA包版本之间文件变更类型说明 96 ota packer 96 使用条件License OTA打包工具 ota pa
  • 浅谈一下汽车行业中的OTA/FOTA/SOTA

    首先来一个背景知识铺垫 xff1a 被誉为汽车界 苹果 的特斯拉 xff0c 从它的第一款ModelS上市开始 xff0c 截止到2017年3月份的5年时间里 xff0c 总计对车辆推送了25次远程升级 特斯拉每次发布新系统新功能就可以通过
  • stm32 esp8266 ota升级-tcp模拟http

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • stm32 esp8266 ota升级-自建mqtt和文件服务器动态AB面升级

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • 【YModem】YModem串口IAP升级例程+YModem串口工具

    目录 YModem协议传输的过程 IAP例程 YModem串口工具 YModem技术手册 手把手教你如何实现自动固件更新 YModem协议是由XModem协议演变而来的 每包数据可以达到1024字节 是一个非常高效的文件传输协议 Ymode
  • QCC300x笔记(6) -- QCC3007的OTA流程梳理

    哈喽大家好 这是该系列博文的第六篇 篇 lt lt 系列博文索引 快速通道 gt gt 写在前面 QCC300x支持OTA功能 官方提供了详细的文档说明 按照文档即可升级成功 下面是对流程的简单梳理 可参考 文档和APP下载 1 生产APP
  • stm32 IAP APP 相互跳转实验 (keil4 jlink STM32F407ZE)

    1 实验目标 STM32 IAP学习时 希望有一个快捷的方式去实验IAP与APP之间的相互跳转 1 验证IAP跳转至APP 2 验证APP通过软件reset跳转至IAP 避免再一开始就实验完整的IAP过程 编写BootLoader 编写 A
  • OTA测试方法解析

    目前 标准的OTA测试系统是SISO 单输入 单输出 如主流的2G 3G和WLAN的802 11a b g等设备 其主要的测试指标是TRP 总辐射功率 和TIS 总全向灵敏度 现代无线技术如LTE HSPA WI FI和WiMAX为了提高数
  • 【ESP8266 快速入门】示例5:Arduino环境实现OTA无线升级固件功能WebServer网页服务器方式

    主题 使用 ESP8266 Arduino环境实现OTA无线升级固件功能 由LED闪烁程序通过OTA升级为PWM呼吸灯程序 目录 主题 0 引言 1 环境准备 2 OTA步骤 2 1 OTA的基础程序 LED闪烁 2 2 OTA的升级程序
  • NRF52832学习笔记(2)—— 添加DFU功能(基于SDK15.3)

    前言 SDK版本15 3 评估板 pca10040 在 uart 的例程中添加 DFU 功能 使用 s132 的协议栈 因为官方的 BootLoader 工程用的是s132的协议栈 一 准备工作 在开始实验之前必须先准备以下软件 gcc a
  • STM32在线升级 (IAP)

    来自QQ群 Linux 技术分享 311078264 打开链接加入QQ群 https jq qq com wv 1027 k 5Gr3bAx 此文档由elikang整理 为了文章简单直接 许多细节未能在文章中体现 如有疑问请进群讨论 STM
  • 如何编写 Delphi Galileo IDE Expert?

    HI 我想为 D2007 D2009 又名 Galileo IDE 编写一个小型的 Delphi IDE Expert 以便显示一个带有 TMemo 实例的窗口 以及上面备忘录中表单设计器的所有组件名称和类 所选组件将标有 专家应出现在菜单
  • Android 应用程序在手机重新启动之前无法获取 GPS

    我收到来自用户的多份报告 称他们无法在我的应用程序中获取 GPS 或位置服务 直到他们重新启动手机 然后一切工作都没有问题 我只从使用我的应用程序的用户那里得到了有限的 Android 用户投诉样本 但它似乎与这个问题惊人地相似 https
  • 以编程方式检查 Android OTA 系统更新

    如果您转到 设置 gt 关于手机 gt 检查更新 则会启动检查以查看是否有适用于您手机的系统更新 我如何以编程方式执行此操作 此外 我试图在 Android 源代码中找到发生这种情况的位置 以便我可以完整地看到它并更好地理解它 有没有人有什

随机推荐

  • curl升级到7.87(centos7和TencentOS2.4 tk)

    centos7升级curl到7 8 7 按照之前写过的一篇文章 大致按描述操作即可 只不过需要做一点点修正 CentOS 7升级curl 乐大师的博客 CSDN博客 centos7 curl升级 更新操作中会报错安装失败 提示如下 nbsp
  • Python中raise…from用法

    本来这几天是计划阅读string模块的源码 xff0c 恰好其中一段异常处理的代码我觉得很新奇 xff0c 也就是raise from的用法 xff0c raise的用法大家都知道 因为我之前没遇到过 xff0c 所以就去网上查了相关的资料
  • AI模型隐私风险及防护技术

    一 背景 随着AI成为新一代关键技术趋势 xff0c 围绕着AI的服务也越来越普及 特别是结合了云计算以后 xff0c 机器学习数据的标注 模型训练及预测等服务纷纷上云 xff0c 为用户提供了强大的算力和优秀的算法 xff0c 极大方便了
  • 汉诺塔的图解递归算法

    一 xff0e 起源 xff1a 汉诺塔 xff08 又称河内塔 xff09 问题是源于印度一个古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子 xff0c 在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘 大梵天命令婆罗门把圆
  • 推荐系统中的矩阵分解总结

    最近学习矩阵分解 xff0c 但是学了好多种类 xff0c 都乱了 xff0c 看了这篇文章 xff0c 系统性的总结了矩阵分解 xff0c 感觉很棒 xff0c 故分享如下 前言 推荐系统中最为主流与经典的技术之一是协同过滤技术 xff0
  • 几种常见的离群点检验方法

    在一组平行测定中 xff0c 若有个别数据与平均值差别较大 xff0c 则把此数据视为可疑值 xff0c 也称离群值 如果统计学上认为应该舍弃的数据留用了 xff0c 势必会影响其平均值的可靠性 相反 xff0c 本应该留用的数 据被舍弃
  • Spring框架介绍及使用(一)

    文章目录 概念为什么要用 xff1f Spring的体系结构Spring框架之控制反转 xff08 IOC xff09 概念Spring文件包解释入门程序入门程序需要的jar包配置文件入门程序的建立ApplicationContext与Be
  • SpringMVC 相关配置

    SpringMVC 相关配置 打印请求与响应日志 打印 64 RequestBody 64 Response日志 https blog csdn net ww 1997 article details 116006445 https www
  • 普通表到分区表转换

    A 通过 Export import 方法 B 通过 Insert with a subquery 方法 C 通过 Partition Exchange 方法 D 通过 DBMS REDEFINITION 方法 比如把test用户下的普通表
  • Ubuntu 20.04 上安装 Node.js 和 npm 的三种方法

    主要介绍三种在 Ubuntu 20 04 上安装 Node js 和 npm 的方法 xff1a 通过Ubuntu标准软件库 这是最简单的安装方法 xff0c 并且适用大多数场景 但是标准软件库中最高版本只有 v10 19 0 root 6
  • android databinding 数据绑定错误 错误:任务':app:compileDebugJavaWithJavac' 的执行失败

    今天到公司照常打开项目 xff0c 突然运行不了显示databinding错误 Error Execution failed for task 39 app compileDebugJavaWithJavac 39 gt android d
  • 解决idea新建Module的奇怪路径问题

    问题由来 xff1a 在部署SpringCloud的时候想新建一个module来快速创建 xff0c 结果被创建出来的目录结构搞得一脸懵逼 xff0c 新建的module的根目录跑到了 xff0c 项目的src目录下 xff0c 整个看起来
  • ThingsBoard源码解析-数据订阅与规则链数据处理

    前言 结合本篇对规则链的执行过程进行探讨 根据之前对MQTT源码的学习 xff0c 我们由消息的处理入手 org thingsboard server transport mqtt MqttTransportHandler void pro
  • Thingsboard使用gateway网关

    简介 xff1a 本次是想测试一下thingsboard网关的使用 xff0c 实现通过网关 43 mqtt 43 thingsboard 43 emqx 实现间接设备创建和数据传输 前期准备 xff1a thingsboard平台 thi
  • Thingsboard(2.4 postgresql版)数据库表结构说明

    本文描述的表结构是根据thingsboard2 4 xff08 postgresql版 xff09 数据库中整理出来的 xff0c 不一定完整 xff0c 后续有新的发现再补充文档 一 数据库E R关系 Thingsboard2 4社区版共
  • ThingsBoard—自定义规则节点

    一般的功能 xff0c 可以使用现有的节点来完成 但如果有比较复杂 xff0c 或有自己特殊业务需求的 xff0c 可能就需要自定义了 按官方教程来基本就可以入门 xff0c 如果需要深入 xff0c 可以参考ThingsBoard自有节点
  • Thingsboard 报错 Cannot resolve symbol ‘TransportProtos‘

    本人idea 版本为 2021 1 xff0c 顺利编译 thingsboard 打开进行源码阅读时 xff0c 发现报 Cannot resolve symbol 39 TransportProtos 39 xff0c 如下图 xff1a
  • ThingsBoard 规则引擎-邮件通知

    之前我们已经学习了Thingsboard安装 设备接入 简单的数据可视化内容 xff0c 今天来继续学习下thingsboard其他特性 规则引擎 应用场景 ThingsBoard规则引擎是一个支持高度可定制复杂事件处理的框架 xff0c
  • ThingsBoard编译报错:Failure to find org.gradle:gradle-tooling-api:jar:6.3

    删除本地仓库未下载完成的缓存文件 xff08 删除像图片显示这样以 lastUpdated结尾的文件 xff09 执行mvn v确保maven命令可以正常执行执行下面命令 xff0c 将下载的jar安装到本地仓库 注意 xff1a 将 Df
  • Thingsboard3.4-OTA升级

    背景 在做设备端对接thingsboard平台得时候 xff0c 去研究设备端对接平台的过程中 xff0c 花了不少时间 xff0c 在此之前也没有找到相关的文档 xff0c 于是出于减少大家去研究的时间 xff0c 写了这篇博客 xff0