一种用于物联网基于蓝牙ble的辅助下载升级包方法
技术领域
1.本发明属于物联网技术领域,具体涉及一种用于物联网基于蓝牙ble的辅助下载升级包方法。
背景技术:2.在一款物联网软件或产品发布之后,往往会存在一些一下意想不到的执行错误、漏洞等问题。特别是一旦量产产品,因其分布广,范围大,若想对软件或产品修复等,就需要对软件做更新。此外,通常软件系统都会迭代版本的发布,且每个软件版本都往往会增加些新的应用场景或功能。因此,为了保证已经出售的产品顺畅运行,并能够一步步地完善产品的体验和功能,就需要对软件做升级。升级的主要功能如下:
3.1.为已发售的产品进行漏洞修补,避免召回,增强系统稳定性与安全性。
4.2.为已发布的产品提供新功能、新的服务,从而提高客户对设备的满意度,获得更大的利润。
5.对电子产品特别是可以联网的电子产品进行升级方法叫fota。fota(firmwareover-the-air移动终端的空中下载软件升级),指通过云端升级技术,为具有连网功能的设备:例如手机、平板电脑、移动互联网等设备提供固件升级服务。用户使用网络以按需、易扩展的方式获取智能终端系统升级包,并通过fota进行云端升级,完成系统修复和优化。
6.fota的本质是固件升级,包括驱动、系统、功能、应用等的升级,和硬件没有直接关系,其适用的终端范围很广。
7.针对升级包的时间消耗主要集中在升级包下载的过程。物联网通常有低成本低功耗的需求,特别是针对窄带物联网设备,因网络带宽的影响,其数据包下载的速度以及升级需要的时间往往会随升级包的大小而成正比例关系。这样带来的问题有以下几点:
8.1.升级时间长,驻网时间就要长,带来的功耗就会相应的高。电池产品的寿命就会受到影响。
9.2.升级过程中,带来的网络流量消耗也往往造成较为沉重的负担。
10.3.有些设备在移动或环境不太好的地方,网络传输过程中会经常的出现断网的情况,这样升级失败的概率就会比较高。
11.4.有些特殊产品,本身不带网络功能,但是也需要实现升级功能,只能采用辅助的升级方法。
技术实现要素:12.为解决窄带物联网设备(带ble设备)在升级过程中存在的一些缺陷,本发明公开了一种用于物联网设备基于蓝牙ble的辅助下载升级包方法。
13.为达到上述目的,本发明的技术方案如下:
14.一种用于物联网基于蓝牙ble的辅助下载升级包方法,基于形成蓝牙组网的ble设备实现,所述ble设备为集成ble模块的物联网设备,彼此之间实现低功耗蓝牙数据通信;辅
助下载升级包方法包括如下步骤:
15.步骤一,采用初始设备通过网络从服务器下载(带网络功能的情况下)或获取预先存储在系统中升级包数据;其中初始设备为外部辅助设备或物联网设备之一;
16.步骤二,初始设备作为主设备向自身周边待升级ble设备发送fota数据升级包,待升级 ble设备发送ack数据进行反馈传输结果;
17.步骤三,当待升级ble设备升级完成后作为主设备向自身周边待升级ble设备发送fota 数据升级包;待升级设备发送ack数据进行反馈;重复执行本步骤直至所有待升级ble设备升级完毕。
18.进一步的,所述低功耗蓝牙数据通信包括基于广播的数据传输和基于连接的数据传输。
19.进一步的,所述基于广播的数据传输具体包括如下步骤:
20.1.主设备广播搜索周边ble设备,并接收周边ble设备的反馈的广播包;
21.2.当主设备判断接收到的需要升级的ble设备信号强度大于或等于阀值,则准备向这些设备发送升级包;主设备忽略低于阈值和无需升级的设备广播包;
22.3.主设备向待升级ble设备发送广播协议包,协议中包含告知其切换到接收状态的命令包;
23.4.升级数据被切分为多个小升级数据包,主设备向ble设备a、b、c依次发送各个小升级数据包,直至所有小升级数据包发送完成;ble设备a、b、c每接收一个小数据包均向主设备发送ack。
24.进一步的,所述步骤4中,主设备接收到所有ble设备的ack后发送下一个升级包,或本次升级包发送时间到期后发送下一个升级包。
25.进一步的,所述基于广播的数据传输中,所述下行数据升级包和上行反馈数据均通过广播方式传输。
26.进一步的,所述基于连接的数据传输中,所述主设备与自身周边待升级ble设备之间实现基于连接的有应答的数据传输。
27.进一步的,所述基于连接的数据传输具体包括如下步骤:主设备按顺序依次和待升级ble 设备建立连接并传输升级包数据,当验证升级成功后,断开与该ble设备连接,并开始连接下一个待升级ble设备,直到全部设备升级完毕。
28.进一步的,所述步骤三中,当待升级设备升级完成后断开原主设备与自身的下行数据连接。
29.进一步的,所述上行数据发送给主设备或服务器。
30.进一步的,所述外部辅助设备为手机。
31.本发明的有益效果为:
32.1.本发明在物联网设备中集成ble蓝牙模块,基于ble蓝牙在本地通过低功耗蓝牙方式实现升级数据的传输,从而缩短了fota升级的下载时间,大幅降低网络流量和功耗(若通过窄带物联网的情况下)。本发明适用于需要fota升级的集成有低功耗蓝牙的聚集性应用场景或者临时聚集的场景。
33.2.本发明集成适用于带ble蓝牙功能的设备上,实现低功耗蓝牙的数据通信,从而可以实现基于低功耗蓝牙辅助升级的方案。
附图说明
34.图1为采用手机或其他带蓝牙的外部辅助设备作为主设备的架构示意图。
35.图2为采用一台升级完成的物联网设备作为主设备的架构示意图。
36.图3为基于ble广播的数据传输示意图,适用于一对多的场景。
37.图4为基于点对点的蓝牙连接的数据传输示意图,适用于一对一的场景。
38.图5为主设备向待升级ble设备发送升级数据状态流程图。
39.图6为主设备为外部辅助设备时数据传输示意图。
40.图7为物联网设备形成分支网络示意图。
具体实施方式
41.以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
42.一种完整的fota升级方法中包括升级包的制作、升级包的更新、升级包的部署与下载三大步骤。其中,fota升级包制作是将新、旧两个版本进行比较生成升级包,升级包作成策略通常有以下几种,即覆盖升级、差分升级。衡量升级包的制作的指标通常采用的是压缩比。此外对升级包的校验信息也会融合到升级包的作成中。因为升级包下载完成之后,需要对升级包的完整性和可靠性做校验,采用对应的签名工具进行签名,采用hash校验来实现。升级包的更新是在升级包下载并校验完成之后,由设备实现的自我固件更新。通常的实现方式为:重启进入recovery模式,在recovery模式下,对升级文件做解析并更新内部分区文件信息,从而实现固件的更新。更新完成之后,重启进入新版本软件,并同步将升级结果反馈给fota 升级服务器。升级包一旦部署完成,并按照一定的配置策略,将会升级终端设备,在升级之前需要将升级包采用一定的方式下载到本地。通常的下载方式由http,coap,mqtt,lwm2m 协议等各种网络或应用层协议实现。上述是实现fota的通常的流程与方式,但是在很多物联网设备中,存在第一不带网络功能的场景和系统不支持这些复杂的协议支持的情况下的场景,但支持ble蓝牙的情况下,可以通过ble蓝牙来辅助的实现fota升级包的传输从而实现升级功能。
43.本发明针对物联网中升级包的下载采用低功耗蓝牙的方式实现数据传输。本发明中所有物联网设备嵌入低功耗蓝牙模块(ble),本地的ble设备(即具有ble功能的物联网设备) 之间通过ble蓝牙方式进行通信,从而基于ble蓝牙实现数据包的传输和下载,以及设备之间内部的升级包的共享。本发明中,本地网络中需要有一台初始设备通过物联网从服务器下载升级包(或者预先存储在系统中),该设备可以是具有ble功能的外部辅助设备,也可以是ble设备中的其中一台。在本地蓝牙升级通讯过程中,下载升级包之后的设备作为主设备,周边其他待升级的物联网设备与其通过ble蓝牙连接,主设备可以向周边的待升级ble 设备发送升级包,主从设备之间进行信息交互,从而完成升级包下载和升级结果反馈。图1、图2展示了两种可行的实现架构。图1中采用手机或其他带蓝牙的外部辅助设备作为主设备,从服务器获取下行数据升级包以及其它交互信息,其余待升级的设备作为从设备,外部辅助设备在本地通过ble蓝牙传输方式发送给从设备下行数据,与要升级的设备实现升级的传输以及升级交互数据。设备升级完成后发送上行数据到fota服务器,进行反馈升级结果。图2 中采用一台升级完成或本身包含升级包的物联网设备作为主设备,其余待升级
的设备作为从设备,通过蓝牙与主设备进行信息交互。在主设备升级完成之后,通过ble蓝牙内部的组网及协议交互实现升级包的传输。两种架构中,升级结果的反馈可以通过主设备做中转或者是设备自身向fota服务器发送数据实现上行数据的交互。
44.本地蓝牙有两种数据的传输方式:基于广播的数据传输和基于连接的数据传输。
45.图3以主设备为外部辅助设备为例展示了基于广播的数据传输方式。该方式中,外部辅助设备通过广播方式发送下行数据升级包,可以同时给所有通信范围内的待升级ble设备发送数据,效率高。但由于广播是单向的,默认没有定义应答机制。实际应用中,需要厂商基于广播在应用层自定义应答机制。待升级设备在收到升级数据包后通过广播方式发送反馈数据。图3中该反馈数据向外部辅助设备发送,根据需要,升级后的设备也可以向服务器自行发送上行数据。需要说明的是,图3中作为主设备的外部辅助设备也可以替换为物联网设备即带ble的设备。
46.基于广播的数据传输方式具体流程如图4、5所示,包括如下步骤:
47.1.主设备首先广播搜索周边设备,并接收周边设备的反馈广播,其实现架构如图4所示。在周边设备中,ble设备a、b、c距离合适且需要升级,ble设备e也需要升级但距离主设备过远,ble设备d无需升级。接收到主设备广播的待升级设备均发送反馈广播,无需升级的设备可不发送广播,也可发送无需升级的广播信号。
48.2.当主设备判断接收到的待升级ble设备信号强度大于或等于一定阀值,则向这些设备发送升级包,主设备忽略低于阈值和无需升级的设备广播,不需要响应对应的广播信息。图5中,主设备决定向待升级ble设备a、b、c发送升级数据。
49.3.主设备向待升级ble设备a、b、c发送广播,告知其切换到接收状态。
50.4.升级数据被切分为多个小升级数据包,主设备向ble设备a、b、c依次发送各个小升级数据包,ble设备a、b、c每接收一个小数据包均向主设备发送ack,直至所有小升级数据包发送完成。
51.具体地说,主设备先向ble设备a、b、c发送升级包1,ble设备a、b、c接收升级包1后向主设备发送ack。理想状态下,当接收到所有ble设备的ack后,主设备向ble 设备a、b、c发送下一个升级包2
……
如此依次发送各个升级包直至所有升级包发送完成。在广播过程中,也有可能有ble设备未收到升级包,或主设备未接收到反馈ack,这种情况下主设备不会一直等待,当固定时长t到期后(timeout)不管是否接受到所有ble设备的ack即开始下一个升级包的发送。
52.本例中,设备b未收到升级包n,在升级包n的发送时间t未结束之前,主设备一直发送升级包n,直至t时间到期开始发送下一个升级包n+1,在发送升级包n+1期间,设备b 接受到升级包n+1并发送ack,同时请求重传升级包n,在主设备收到设备a、b、c的所有ack后广播发送升级包n,设备b接收升级包n并发送ack,设备a、c均忽略该升级包不予接收。
53.图6以主设备为外部辅助设备为例展示了基于连接的数据传输方式。该方式中,主设备和从设备通过蓝牙建立一对一的双向通信,实现基于连接的有应答的数据传输。在ble带宽允许的情况下,主设备也可以同时给所有通信范围内的待升级ble设备发送数据,但由于主设备(手机或者其他已升级ble设备)需要共享ble带宽,会导致每条链路上的速率降低。实际应用时,主设备也可以按顺序依次和待升级ble设备建立连接,传输升级包数据,并验证升级成功后,断开连接。并开始连接下一个待升级ble设备,直到全部设备升级完毕。
54.本地物联网设备之间应形成分支网络,如图7所示。已升级成功的设备就成为主设备再向其他物联网设备传输数据,这样所有的物联网设备(除主设备以外的)均能够通过ble直接或间接地与最初由物联网下载升级包数据的设备产生连接。当待升级设备升级成功后,该设备还可以继续给通信范围内的其他待升级设备传输升级包,这样升级数量可以指数级别上升。图7中,当待升级ble设备a升级完成后,断开与主设备连接(依然可接收主设备广播),而待升级ble设备b和c均通过蓝牙与设备a形成数据连接,此时待升级ble设备a向设备b和c通过蓝牙发送升级数据包。其通信架构参照图2中已升级主设备和待升级从设备之间的通信方式,设备之间的连接可采用两种组网方式中的任意一种。等到设备b和c升级成功后,设备b和设备c也会继续向周边的待升级设备发送升级包,依次类推,直到所有设备升级完毕。因此,通过辅助ble实现fota升级包的传输。上述升级完成之后,升级完毕的 ble设备也可以通过物联网传输升级结果或者通知可联网的ble设备。
55.需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。