一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于BLEGATT的流控制方法、设备及存储介质与流程

2022-04-02 04:05:22 来源:中国专利 TAG:

基于ble gatt的流控制方法、设备及存储介质
技术领域
1.本发明涉及ble mesh网络领域,尤其涉及一种基于ble gatt的流控制方法、设备及计算机可读存储介质。


背景技术:

2.gatt(generic attribute profile specification,通用属性配置文件规范)通道的ble(bluetooth low energy,低功耗蓝牙)mesh网络消息不可靠原因有多种,比如ble设备受到其他信号干扰,或者gatt通道消息数量过多造成拥堵等都有可能造成gatt通道消息丢失。尽管ble扩频和自适应跳频设计已解决大部分信号干扰的问题,但是gatt通道的mesh消息不实时主要体现在,因为接收器在单位时间内只能处理有限数量的pdu(protocol data unit,协议数据单元),所以会使gatt通道消息数量较多从而造成通道拥堵,导致ble mesh消息不可靠。也就是说,当用户在客户端频繁发出命令的时候,ble mesh网络设备短时间内收到太多的消息,导致用户在使用ble mesh网络设备的时候,其状态和用户想要的状态不一致。


技术实现要素:

3.本发明的主要目的在于提供一种基于ble gatt的流控制方法,旨在解决现有技术中基于gatt连接的ble mesh消息收发不实时、不可靠的技术问题。
4.为实现上述目的,本发明提供一种基于ble gatt的流控制方法,所述基于ble gatt的流控制方法包括:
5.接收终端设备发送的第一mqtt消息,在对所述第一mqtt消息进行分类后,对分类得到的第二mqtt消息进行去重处理;
6.定时请求并发送第二mqtt消息至过滤器,将过滤得到的第三mqtt消息存放在gatt通道消息池;
7.发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备,使所述gatt代理设备转发所述第三mqtt消息至各mesh网络设备。
8.可选地,所述对分类得到的第二mqtt消息进行去重处理的步骤包括:
9.将所述第二mqtt消息存入map中,在所述map中,以所述第二mqtt消息对应的所述mesh网络设备的序列号为key,以所述mesh网络设备的增量实体类为value进行去重处理。
10.可选地,所述定时请求并发送第二mqtt消息至过滤器的步骤,还包括:
11.在接收分类得到的第二mqtt消息的同时,通知定时任务实时请求所述map中的所述第二mqtt消息,并发送所述第二mqtt消息至过滤器;
12.若在所述map中所述第二mqtt消息的数量大于所述gatt通道消息池的阈值,则从所述map中发送所述gatt通道消息池阈值数量的所述第二mqtt消息至所述过滤器。
13.可选地,在所述定时请求并发送第二mqtt消息至过滤器的步骤之后,还包括:
14.判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备;
15.若所述第二mqtt消息对应的目标分发设备不是mesh网络设备,则从所述map中移除所述第二mqtt消息。
16.可选地,在所述判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备的步骤之后,还包括:
17.若所述第二mqtt消息对应的目标分发设备是mesh网络设备,则判断监听的所述gatt代理设备是否在线;
18.若所述gatt代理设备不在线,则从所述map中移除所述第二mqtt消息。
19.可选地,在所述判断监听的所述gatt代理设备是否在线的步骤之后,还包括:
20.若监听的所述gatt代理设备在线,则判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值;
21.若所述gatt通道消息池中的第三mqtt消息的数量大于所述gatt通道消息池的阈值,则在所述gatt通道消息池中的第三mqtt消息的数量小于所述gatt通道消息池的阈值后,执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤。
22.可选地,在所述判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值的步骤之后,还包括:
23.若所述gatt通道消息池中的第三mqtt消息的数量不大于所述gatt通道消息池的阈值,则判断所述第三mqtt消息的序列号关键字和增量实体类值,是否和对应的目标mesh网络设备的序列号关键字和增量实体类值相等;
24.若不相等,则执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤;
25.若相等,则不执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤,并从所述map中移除所述第二mqtt消息。
26.可选地,所述基于ble gatt的流控制方法还包括:
27.若向所述gatt代理设备发送一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量加一;
28.若所述gatt通道消息池在发送所述第三mqtt消息后,从所述mesh网络设备接收到同一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量减一,并从所述map中移除对应的mqtt消息;
29.若所述gatt通道消息池中的第三mqtt消息数量等于gatt通道消息池阈值,则停止发送所述第三mqtt消息。
30.此外,为实现上述目的,本发明还提供一种基于ble gatt的流控制设备,所述基于ble gatt的流控制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于ble gatt的流控制程序,所述基于ble gatt的流控制程序被所述处理器执行时实现如上述的基于ble gatt的流控制方法的步骤。
31.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于ble gatt的流控制程序,所述基于ble gatt的流控制程序被处理器执行时实现如上所述的基于ble gatt的流控制方法的步骤。
32.本发明实施例提出的一种基于ble gatt的流控制方法、设备及计算机可读存储介质,首先,在接收到终端设备发送的第一mqtt消息后,对第一mqtt消息进行分类处理,得到
第二mqtt消息并对第二mqtt消息进行去重处理;然后,定时请求并发送第二mqtt消息至过滤器,过滤得到第三mqtt消息并存放在gatt通道消息池中;最后,发送gatt通道消息池中的第三mqtt消息至gatt代理设备,使之转发第三mqtt消息至各个mesh网络设备。从而针对单位时间内接收器只能处理有限数量pdu的应用场景,采用流控制的方法,对gatt通道消息不可靠不实时的情况做出对应的处理,能有效地解决gatt通道消息数量过多造成概率性消息丢失、以及消息实时性的问题,让pdu收发事件能够有效实时且可靠的发送和接收。
附图说明
33.图1是本发明实施例方案涉及的硬件运行环境的运行设备的结构示意图;
34.图2为本发明基于ble gatt的流控制方法中一实施例的流程示意图;
35.图3为本发明基于ble gatt的流控制方法中另一实施例的实施示意图。
36.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
37.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
38.参照图1,图1为本发明实施例方案涉及的硬件运行环境的运行设备的结构示意图。
39.如图1所示,该运行设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
40.本领域技术人员可以理解,图1中示出的结构并不构成对运行设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
41.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及基于ble gatt的流控制程序。
42.在图1所示的运行设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明运行设备中的处理器1001、存储器1005可以设置在运行设备中,所述运行设备通过处理器1001调用存储器1005中存储的基于ble gatt的流控制程序,并执行以下操作:
43.接收终端设备发送的第一mqtt消息,在对所述第一mqtt消息进行分类后,对分类得到的第二mqtt消息进行去重处理;
44.定时请求并发送第二mqtt消息至过滤器,将过滤得到的第三mqtt消息存放在gatt通道消息池;
45.发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备,使所述gatt代理设备转发所述第三mqtt消息至各mesh网络设备。
46.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
47.所述对分类得到的第二mqtt消息进行去重处理的步骤包括:
48.将所述第二mqtt消息存入map中,在所述map中,以所述第二mqtt消息对应的所述mesh网络设备的序列号为key,以所述mesh网络设备的增量实体类为value进行去重处理。
49.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
50.所述定时请求并发送第二mqtt消息至过滤器的步骤,还包括:
51.在接收分类得到的第二mqtt消息的同时,通知定时任务实时请求所述map中的所述第二mqtt消息,并发送所述第二mqtt消息至过滤器;
52.若在所述map中所述第二mqtt消息的数量大于所述gatt通道消息池的阈值,则从所述map中发送所述gatt通道消息池阈值数量的所述第二mqtt消息至所述过滤器。
53.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
54.在所述定时请求并发送第二mqtt消息至过滤器的步骤之后,还包括:
55.判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备;
56.若所述第二mqtt消息对应的目标分发设备不是mesh网络设备,则从所述map中移除所述第二mqtt消息。
57.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
58.在所述判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备的步骤之后,还包括:
59.若所述第二mqtt消息对应的目标分发设备是mesh网络设备,则判断监听的所述gatt代理设备是否在线;
60.若所述gatt代理设备不在线,则从所述map中移除所述第二mqtt消息。
61.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
62.在所述判断监听的所述gatt代理设备是否在线的步骤之后,还包括:
63.若监听的所述gatt代理设备在线,则判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值;
64.若所述gatt通道消息池中的第三mqtt消息的数量大于所述gatt通道消息池的阈值,则在所述gatt通道消息池中的第三mqtt消息的数量小于所述gatt通道消息池的阈值后,执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤。
65.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
66.在所述判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值的步骤之后,还包括:
67.若所述gatt通道消息池中的第三mqtt消息的数量不大于所述gatt通道消息池的阈值,则判断所述第三mqtt消息的序列号关键字和增量实体类值,是否和对应的目标mesh
网络设备的序列号关键字和增量实体类值相等;
68.若不相等,则执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤;
69.若相等,则不执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤,并从所述map中移除所述第二mqtt消息。
70.进一步地,处理器1001可以调用存储器1005中存储的基于ble gatt的流控制程序,还执行以下操作:
71.所述基于ble gatt的流控制方法还包括:
72.若向所述gatt代理设备发送一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量加一;
73.若所述gatt通道消息池在发送所述第三mqtt消息后,从所述mesh网络设备接收到同一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量减一,并从所述map中移除对应的mqtt消息;
74.若所述gatt通道消息池中的第三mqtt消息数量等于gatt通道消息池阈值,则停止发送所述第三mqtt消息。
75.本发明实施例提供了一种基于ble gatt的流控制方法,参照图2,图2为本发明一种基于ble gatt的流控制方法第一实施例的流程示意图。
76.本实施例中,所述基于ble gatt的流控制方法包括:
77.步骤s10:接收终端设备发送的第一mqtt消息,在对所述第一mqtt消息进行分类后,对分类得到的第二mqtt消息进行去重处理。
78.蓝牙协议堆栈所要解决的许多可靠性问题,都源于无线电被用作数据的载体。但对于有线通信来说,还存在其他的可靠性问题来源。当一个设备向另一个设备发送数据时,它会通过一系列数据包发送数据。如果接收设备无法足够快地处理数据包,当缓冲区达到最大容量时,它可能会被迫开始丢弃数据包和它们所包含的数据。
79.而流控制是为确保数据以接收设备或组件能够容纳的速率进行通信的各种策略的名称,ble(bluetooth low energy,低功耗蓝牙)则为链路层提供了一种简单的流控制形式。通过在发送回复时不更新nesn(next expected sequence number,下一个预期序列号)设备可以让第一台设备在稍晚时间重新发送原数据包。由于原数据包已经被接收和处理,重发的副本将被丢弃,因而减缓了需要完整处理的新数据包的到达速度。l2cap(logical link control and adaptation protocol,逻辑链路控制和适应协议)支持多种更复杂的流控制模式,如增强型信用流控制模式等,其与eatt(enhanced attribute protocol,增强型属性协议)一起使用。
80.信用流控制是解决这一问题的一种特殊方法。一般情况下(在现有技术中),其工作原理如下:发射设备知道接收设备的容量,以它能处理的pdu(protocol data unit,协议数据单元)数量为单位,而不会丢失数据(例如通过其缓冲区溢出)。发射器根据该接收器容量限制设置一个计数器。每当发射器发送一次pdu,计数器就会递减一次。当计数器的值达到零时,发射器知道接收器已经满载,所以暂时停止继续发送pdu,而接收器则处理积压的pdu。接收器从其缓冲区读取并处理一个或多个pdu后,会发回相应的点数给发射器,发射器用这个值来递增其计数器。当计数器为非零值时,发射器可以继续发送进一步的pdu。
81.本实施例中,参照图3,gateway(即发射器)会接收各个终端如android、ios和google assistant(谷歌助理,支持语音识别、人工智能、自然语音理解等功能)接入mesh网络时的第一mqtt(message queuing telemetry transport,消息队列遥测传输协议)消息,并对第一mqtt消息进行分类处理。
82.如果发送到接收器的pdu都没有响应又或者不是带确认消息,此时发射器就不能再往接收器发送数据,只能等待pdu命令超时从gatt通道消息池中移除,这样一来,发射器在发送数据的时候延时会比较严重。所以在图3中的mqtt连接处:gateway在接收第一mqtt消息(本实施例中的pdu消息)的时候就已经做了消息分类,与mesh网络设备相关消息会存入map中,进而走流控制通道,而未确认消息(图3中的其他消息)则不会走流控制通道。以此来确保走流控制通道发送的消息是有效的、是可靠的。接着,对分类得到的第二mqtt消息再在map中进行去重处理。
83.步骤s20:定时请求并发送第二mqtt消息至过滤器,将过滤得到的第三mqtt消息存放在gatt通道消息池。
84.而为确保消息的有效性,在本实施例中,流控制在发送数据至gatt代理设备的时候做了一个过滤器,用来过滤无效的pdu消息,如图3所示:设置的有过滤器流程,在定时任务定时请求map中的第二mqtt消息时,发送第二mqtt消息到过滤器,在经过如图3中的过滤器流程过滤后得到第三mqtt消息,发送第三mqtt消息到gatt通道消息池中,进而做进一步的转发操作。
85.步骤s30:发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备,使所述gatt代理设备转发所述第三mqtt消息至各mesh网络设备。
86.在本实施例中,将gatt通道消息池中的第三mqtt消息发送到mesh网络中的节点设备:gatt代理设备,由gatt代理设备转发第三mqtt消息至mesh网络中的其他各个节点设备。
87.在本实施例中,首先,在接收到终端设备发送的第一mqtt消息后,对第一mqtt消息进行分类处理,得到第二mqtt消息并对第二mqtt消息进行去重处理;然后,定时请求并发送第二mqtt消息至过滤器,过滤得到第三mqtt消息并存放在gatt通道消息池中;最后,发送gatt通道消息池中的第三mqtt消息至gatt代理设备,使之转发第三mqtt消息至各个mesh网络设备。从而针对单位时间内接收器只能处理有限数量pdu的应用场景,采用流控制的方法,对gatt通道消息不可靠不实时的情况做出对应的处理,能有效地解决gatt通道消息数量过多造成概率性消息丢失、以及消息实时性的问题,让pdu收发事件能够有效实时且可靠的发送和接收。
88.可选地,所述对分类得到的第二mqtt消息进行去重处理的步骤包括:
89.将所述第二mqtt消息存入map中,在所述map中,以所述第二mqtt消息对应的所述mesh网络设备的序列号为key,以所述mesh网络设备的增量实体类为value进行去重处理。
90.缓冲区是计算机或微控制器存储器中的临时存储。由于可用的内存有限,因此每个协议层可能需要一个或多个缓冲区。每个缓冲区都有一个最大尺寸。当一个设备向另一个设备发送数据时,它会通过一系列保密数据包发送数据。这些数据包被其他设备接收后,一般会被暂时放在缓冲区中。然后,数据包通过协议栈的各个层级向上传递,可能会在途中暂时停留在其他缓冲区。如果数据包到达缓冲区的速度超过了数据包从缓冲区移除的速度,那么最终缓冲区会溢出,一些数据包会被丢弃。当这种情况发生时,这些数据包中包含
的数据就会丢失,并可能被视为通信失败。
91.在本实施例中,将map视作上述的缓存区。参照图3中的1处:gateway接收到第二mqtt消息后,会存入map中。该map会以ble mesh网络设备的sn(sequence number,序列号)为key(关键字),以由ble mesh网络设备的命令集生成的增量实体类为value(值)。其中的命令集包括各种消息的控制指令,例如控制mesh网络设备的命令、获取mesh网络设备版本号的命令等。其中的实体类可以视作是命令集的一个子集,保存有命令集中一条或多条甚至其全部命令。例如,当map中存入某个mesh网络设备的开关命令后,又存入保存某个mesh网络设备的版本号的命令,则相当于对命令集进行增量处理,在增量实体类中保存这两个命令消息。
92.而具体的去重处理步骤如下:当在短时间内连续收到打开、关闭某个mesh网络设备的第二mqtt消息时,由于gatt通道消息池消费不了,或者说消费不过来,便会将最后一条第二mqtt消息覆盖掉之前收到同一个sn关键字的打开、关闭、打开的第二mqtt消息,所以只有最后一条关闭该mesh网络设备的第二mqtt消息的数据存在,从而以最后接收到的消息为准,以此确保了内存中的每台ble mesh网络设备只有一条数据,从而完成去重处理。通过增加去重机制,使得当客户端大量往gateway发送数据的时候,用户可以有效实时的得到ble mesh网络设备的期望结果。
93.可选地,所述定时请求并发送第二mqtt消息至过滤器的步骤,还包括:
94.在接收分类得到的第二mqtt消息的同时,通知定时任务实时请求所述map中的所述第二mqtt消息,并发送所述第二mqtt消息至过滤器;
95.若在所述map中所述第二mqtt消息的数量大于所述gatt通道消息池的阈值,则从所述map中发送所述gatt通道消息池阈值数量的所述第二mqtt消息至所述过滤器。
96.在本实施例中,如图3中的2处:其中的定时任务是用来消费map中的第二mqtt消息,循环一秒请求一次map。如果有第二mqtt数据,则消费掉,往下接着走过滤器流程,也就是定时任务实时请求map中的第二mqtt消息,并发送到过滤器的流程。而在gateway收到第一mqtt消息时,就会立马通知定时任务请求一次map,确保map中的第二mqtt消息被实时消费掉。如果map接受到的第二mqtt消息数量比gatt通道消息池的阈值还大的话,那么开始则只能消费掉gatt通道消息池的阈值大小数量的消息,其他消息则需要等待gatt通道消息池空出位置后才能发送。
97.可选地,在所述定时请求并发送第二mqtt消息至过滤器的步骤之后,还包括:
98.判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备;
99.若所述第二mqtt消息对应的目标分发设备不是mesh网络设备,则从所述map中移除所述第二mqtt消息。
100.在本实施例中,在定时任务定时请求并发送第二mqtt消息至过滤器后,判断第二mqtt消息对应的目标分发设备是否为mesh网络设备、是否配置有对应mqtt消息的mesh网络。即在设备相关消息(即在步骤s10中对第一mqtt消息进行分类、去重后得到的第二mqtt消息)中,判断第二mqtt消息对应的目标分发设备是否为mesh网络设备。若是,则进行后续的判断流程。若不是,则从map中移除掉该第二mqtt消息。
101.可选地,在所述判断所述第二mqtt消息对应的目标分发设备是否为mesh网络设备的步骤之后,还包括:
102.若所述第二mqtt消息对应的目标分发设备是mesh网络设备,则判断监听的所述gatt代理设备是否在线;
103.若所述gatt代理设备不在线,则从所述map中移除所述第二mqtt消息。
104.在本实施例中,若分类、去重后得到的第二mqtt消息对应的目标分发设备是mesh网络设备,则接着判断监听的gatt代理设备是否在线。即如果监听的gatt代理设备在线、即gatt代理设备连接上mesh网络设备并且gatt代理设备在线,则进行后续的判断流程。若不是,则从map中移除掉该第二mqtt消息。
105.可选地,在所述判断监听的所述gatt代理设备是否在线的步骤之后,还包括:
106.若监听的所述gatt代理设备在线,则判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值;
107.若所述gatt通道消息池中的第三mqtt消息的数量大于所述gatt通道消息池的阈值,则在所述gatt通道消息池中的第三mqtt消息的数量小于所述gatt通道消息池的阈值后,执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤。
108.在本实施例中,若分类、去重后得到的第二mqtt消息对应的目标分发设备是mesh网络设备,且监听的gatt代理设备在线,则接着判断gatt通道消息池中的第三mqtt消息的数量是否大于该gatt通道消息池的阈值。
109.gateway的gatt通道消息池会设定一个阈值,在本实施例中设定为7条第三mqtt消息,而在其他的通信方式,如不采用gatt作为载体通道的通信方式,而是接入串口或http的方式连接mesh网络,那消息数量的阈值还可以相应变多。
110.可选地,在所述判断所述gatt通道消息池中的第三mqtt消息的数量是否大于所述gatt通道消息池的阈值的步骤之后,还包括:
111.若所述gatt通道消息池中的第三mqtt消息的数量不大于所述gatt通道消息池的阈值,则判断所述第三mqtt消息的序列号关键字和增量实体类值,是否和对应的目标mesh网络设备的序列号关键字和增量实体类值相等;
112.若不相等,则执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤;
113.若相等,则不执行所述发送所述gatt通道消息池中的所述第三mqtt消息至gatt代理设备的步骤,并从所述map中移除所述第二mqtt消息。
114.在本实施例中,若分类、去重后得到的第二mqtt消息对应的目标分发设备是mesh网络设备,且监听的gatt代理设备在线,且gatt通道消息池中的第三mqtt消息的数量没有大于gatt通道消息池的阈值,则判断第三mqtt消息的序列号关键字和增量实体类值,是否和对应的目标mesh网络设备的序列号关键字和增量实体类值相等。也就是发送的值和设备当前值相等,即发送的值是打开设备的状态消息,而设备当前的开关状态就是处于打开状态,那就不需要再发一次打开的状态消息,从map中移除掉对应的第二mqtt消息。只有在发送的值是打开设备的状态消息,而设备当前的开关状态处于关闭状态,或者发送的值是关闭设备的状态消息,而设备当前的开关状态处于打开状态,就需要将打开或关闭的状态消息发送给设备。如果第三mqtt消息的序列号关键字和增量实体类值,和对应的目标mesh网络设备的序列号关键字和增量实体类值不相等,则对该第三mqtt消息不做处理,对map中的其他mqtt消息进行过滤器流程。
115.可选地,所述基于ble gatt的流控制方法还包括:
116.若向所述gatt代理设备发送一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量加一;
117.若所述gatt通道消息池在发送所述第三mqtt消息后,从所述mesh网络设备接收到同一条所述第三mqtt消息,则所述gatt通道消息池的第三mqtt消息数量减一,并从所述map中移除对应的mqtt消息;
118.若所述gatt通道消息池中的第三mqtt消息数量等于gatt通道消息池阈值,则停止发送所述第三mqtt消息。
119.在本实施例中,当gateway(即发射器)每向gatt代理设备(即接收器)发送一次数据时,gatt通道消息池就会增加一条数据,但只有在向接收器发送一次数据后,消息池才会增加一条数据,也就是空出来一条数据的位置来接收新的第三mqtt消息。当gatt通道消息池的数量已经等于其设定的阈值时,就不会再发送此数据;当gatt通道消息池中的任意一条数据从接收器返回的时候,此条消息就会从消息池中移除,因此消息池中的数量会减少一次。每次返回来的只会有一条消息,这条消息会根据sn序列号在实体类中检索到命令,再去进行覆盖处理。这时gateway就又可以向gatt代理设备发送数据,接收器返回的数目越多或者全部返回,发射器可发送的数据条数越多。直到达到消息池阈值,总之,只要不大于gatt通道消息池阈值,发射器就可以一直发送消息。
120.此外,本发明实施例还提供一种基于ble gatt的流控制设备,所述基于ble gatt的流控制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于ble gatt的流控制程序,所述基于ble gatt的流控制程序被所述处理器执行时实现如上述的基于ble gatt的流控制方法的步骤。
121.此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于ble gatt的流控制程序,所述基于ble gatt的流控制程序被处理器执行时实现如上所述的基于ble gatt的流控制方法的步骤。
122.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
123.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
124.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
125.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献