一种连接网关与设备的方法、装置及网关设备
技术领域
本发明涉及通讯领域,特别是涉及一种连接网关与设备的方法、装置及网关设备。
背景技术
在智能家居场景中,所有智能家居设备通过加入网关的会话,然后向网关注册自己提供的服务。网关通过接收注册设备定时向所其发送的心跳数据包来判断设备的上下线状态。
由于所有设备都加入网关的同一会话,并都定期向网关发送心跳信息,基于Alljoyn会话机制,对于由N个设备组成的网络来说,设备都加入网关会话(Session)后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个与其他注册设备的TCP长连接。
其中,Alljoyn是一种基于C/S架构的设备之间点对点通信框架,如图1所示,由BusDaemon(总线守护进程)和终端节点组成。Bus Daemon负责终端节点之间的消息路由、服务发现等功能。终端节点是指运行在设备上的应用程序,启动后需要连接到Bus Daemon上。
终端节点如果提供服务,则向Bus Daemon注册一个服务名称,由Bus Daemon广播出去。如果作为客户端,那么可以通过服务名称来查找服务,并通过远程调用来完成指定功能。
为了使Alljoyn更好的支持智能家居场景,Alljoyn的Smart home service(智能家居服务)提出了集中式管理的概念,即Smart Home service运行在网关上并开启一个Session同时向网络中广播自己的SessionPort(会话端口)信息,Alljoyn设备首先加入根据收到的SessionPort加入网关的Session并向网关注册自己提供的服务,Alljoyn网关对注册设备分配相关的资源,并且注册设备以定时向Alljoyn网关发送心跳包的形式来向其表明自己的在线状态。
发明内容
本发明提供了一种连接网关与设备的方法、装置及网关设备,用以解决现有技术智能家居都是基于Alljoyn会话机制,设备侧都加入网关会话后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个与其他注册设备的TCP长连接,设备侧维护过程冗余,浪费***资源的问题。
为解决上述技术问题,一方面,本发明提供一种连接网关与设备的方法,包括:网关上设置N+1个会话,其中,所述N+1个会话包括:N个点对点会话和一个多点会话,N为自然数;所述网关记录设备端通过所述多点会话注册的设备会话端口的信息;在未分配的点对点会话中,为注册的设备端分配一个网关会话端口,以通过所述网关会话端口和设备会话端口与设备端进行点对点会话连接;所述网关主动或被动地断开与所述设备端之间的多点会话连接。
进一步,为注册的所述设备端分配一个网关会话端口之后,还包括:将所述网关会话端口的信息发送至所述设备端,以通知所述设备端加入网关点对点会话所需的端口的信息。
进一步,在所述设备端通过所述网关会话端口信息加入到对应的点对点会话后,所述网关如接收到所述设备端发来的用于请求调用其他设备端调用请求,则根据所述其他设备端注册的设备会话端口的信息,加入到与所述其他设备端之间的点对点会话中;根据所述调用请求,通过所述点对点会话控制所述其他设备端执行相应的操作。
进一步,根据所述调用请求,通过所述点对点会话控制所述其他设备端执行相应的操作之后,还包括:所述网关接收所述其他设备端反馈的操作结果,并断开与所述其他设备端之间的点对点会话连接;将所述操作结果反馈至发送所述调用请求的设备端。
进一步,所述方法还包括:所述网关按照预设检测方式检测已被分配网关会话端口的设备端是否仍然存在网络中,其中,所述预设检测方式至少包括以下之一:是否接收到设备端发送的心跳信息、按照预定时间间隔通过ping接口确定设备端是否存在;在确定设备端已经不存在网络中的情况下,回收分配给该设备端的网关会话端口,并删除该设备端的设备会话端口的信息。
另一方面,本发明还提供一种连接网关与设备的装置,包括:设置模块,用于在网关上设置N+1个会话,其中,所述N+1个会话包括:N个点对点会话和一个多点会话,N为自然数;记录模块,用于记录设备端通过所述多点会话注册的设备会话端口的信息;分配模块,用于在未分配的点对点会话中,为注册的设备端分配一个网关会话端口,以通过所述网关会话端口和设备会话端口与设备端进行点对点会话连接;连接模块,用于使所述网关主动或被动地断开与所述设备端之间的多点会话连接。
进一步,还包括:发送模块,用于在为注册的所述设备端分配一个网关会话端口之后,将所述网关会话端口的信息发送至所述设备端,以通知所述设备端加入网关点对点会话所需的端口的信息。
进一步,还包括:加入模块,用于在所述设备端通过所述网关会话端口信息加入到对应的点对点会话后,所述网关如接收到所述设备端发来的用于请求调用其他设备端调用请求的情况下,根据所述其他设备端注册的设备会话端口的信息,加入到与所述其他设备端之间的点对点会话中;调用模块,根据所述调用请求,通过所述点对点会话控制所述其他设备端执行相应的操作。
进一步,还包括:接收模块,还用于通过所述点对点会话控制所述其他设备端执行相应的操作之后,使所述网关接收所述其他设备端反馈的操作结果,并断开与所述其他设备端之间的点对点会话连接;所述发送模块,用于将所述操作结果反馈至发送所述调用请求的设备端。
进一步,还包括:检测模块,用于按照预设检测方式检测已被分配网关会话端口的设备端是否仍然存在网络中,其中,所述预设检测方式至少包括以下之一:是否接收到设备端发送的心跳信息、按照预定时间间隔通过ping接口确定设备端是否存在;处理模块,用于在确定设备端已经不存在网络中的情况下,回收分配给该设备端的网关会话端口,并删除该设备端的设备会话端口的信息。
再一方面,本发明还提供一种网关设备,包括:上述任一项的连接网关与设备的装置。
本发明提供的方法,在网关上多设置了N个点对点会话,在设备端连入到多点会话后,为设备端分配点对点会话的网关会话端口的信息,以便在断开多点会话后,可以通过点对点会话来建立连接,该方法中,每个设备端不需要再维护N-1个TCP长连接,提升***性能,解决了智能家居设备侧都加入网关会话后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个其他注册设备的TCP长连接,设备侧维护过程冗余,浪费***资源的问题。
附图说明
图1是现有技术中基于C/S架构的设备之间点对点通信框架图;
图2是本发明实施例中连接网关与设备的方法的流程图;
图3是本发明实施例中连接网关与设备的装置的第一种结构示意图;
图4是本发明实施例中连接网关与设备的装置的第二种结构示意图;
图5是本发明实施例中连接网关与设备的装置的第三种结构示意图;
图6是本发明实施例中连接网关与设备的装置的第四种结构示意图;
图7是本发明可选实施例中连接网关与设备的方法的流程图。
具体实施方式
为了解决现有技术智能家居都是基于Alljoyn会话机制,设备侧都加入网关会话后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个其他注册设备的TCP长连接,设备侧维护过程冗余,浪费***资源的问题,本发明提供了一种连接网关与设备的方法、装置及网关设备,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明实施例提供了一种连接网关与设备的方法,其实现流程如图2所示,包括步骤S202至S208:
S202,网关上设置N+1个会话,其中,N+1个会话包括:N个点对点会话和一个多点会话,N为自然数。
S204,网关记录设备端通过多点会话注册的设备会话端口的信息。
S206,在未分配的点对点会话中,为注册的设备端分配一个网关会话端口,以通过网关会话端口和设备会话端口与设备端进行点对点会话连接。
S208,网关主动或被动地断开与设备端之间的多点会话连接。该过程中,网关可以根据实际情况选择主动或被动的断开多点会话连接,即网关在发出会话端口的信息后断开与设备端之间的多点会话流程,或者,当有设备侧在收到会话端口信息后发起的断开多点会话连接的流程。
本发明实施例提供的方法,在网关上多设置了N个点对点会话,在设备端连入到多点会话后,为设备端分配点对点会话的网关会话端口的信息,以便在断开多点会话后,可以通过点对点会话来建立连接,该方法中,每个设备端不需要再维护N-1个与其他注册设备的TCP长连接,提升***性能,解决了智能家居设备侧都加入网关会话后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个与其他注册设备的TCP长连接,设备侧维护过程冗余,浪费***资源的问题。
在为注册的设备端分配一个点对点会话的网关会话端口的信息之后,为了方便设备间后续的功能调用,因此,还可以将网关会话端口的信息发送至设备端,以通知设备端加入网关点对点会话所需的端口的信息。
当存在设备端之间调用的情况下,通过上述设备会话端口的信息和网关会话端口的信息调用设备端的相应功能,具体实现过程如下:设备端通过网关会话端口的信息加入到对应的点对点会话后,网关如接收设备端发来的用于请求调用其他设备端的调用请求;根据其他设备端对应的设备会话端口的信息,加入到与其他设备端之间的点对点会话中;根据调用请求,通过点对点会话控制其他设备端执行相应的操作。例如,当用户使用手机控制空调时,用户先通过网关之前分配给手机的网关端口加入到点对点会话,将需要调用的命令发送给网关,网关根据该命令、空调设备会话端口信息建立空调和网关之间的点对点会话连接,在建立连接后,将命令发送至空调。
在通过点对点会话控制其他设备端执行相应的操作之后,网关接收其他设备端反馈的操作结果,并断开与其他设备端之间的点对点会话连接;将操作结果反馈至发送调用请求的设备端,随后,断开设备端对应的点对点会话连接。继续上述例子,如果发送的命令为将温度调节至26度,则在空调执行完调节温度的操作后,将执行结果反馈给网关,网关断开与空调之间的点对点会话连接,网关将执行结果反馈给手机,手机断开与网关的点对点连接。
上述过程中,建立连接后,还需要确定设备端是否仍然存在网络中,以便更加合理的利用点对点会话对应的网关端口,则网关按照预设检测方式检测已被分配网关会话端口的设备端是否仍然存在网络中,其中,预设检测方式至少包括以下之一:是否接收到设备端发送的心跳信息、按照预定时间间隔通过ping接口确定设备端是否存在;在确定设备端已经不存在网络中的情况下,回收分配给该设备端点对点会话的网关会话的端口,并删除该设备端的设备会话端口的信息。
本发明实施例还提供一种连接网关与设备的装置,该装置的结构示意如图3所示,包括:设置模块10,用于在网关上设置N+1个会话,其中,N+1个会话包括:N个点对点会话和一个多点会话,N为自然数;记录模块20,与设置模块10耦合,用于记录设备端通过多点会话注册的设备会话端口的信息;分配模块30,与记录模块20耦合,用于在未分配的点对点会话中,为注册的设备端分配一个网关会话端口,以通过网关会话端口和设备会话端口与设备端进行点对点会话连接;连接模块40,与分配模块30耦合,用于使网关主动或被动地断开与设备端之间的多点会话连接。
图4示出了上述装置的另一种结构示意图,上述装置还包括:发送模块50,与分配模块30和连接模块40耦合,用于为注册的设备端分配一个网关会话端口之后,将网关会话端口的信息发送至设备端,以通知设备端加入网关点对点会话所需的端口的信息。
图5示出了上述装置的又一种结构示意图,在图4的基础上,上述装置还包括:加入模块60,与连接模块40耦合,用于在设备端通过网关会话端口信息加入到对应的点对点会话后,网关如接收到设备端发来的用于请求调用其他设备端调用请求的情况下,根据其他设备端注册的设备会话端口的信息,加入到与其他设备端之间的点对点会话中;调用模块70,与加入模块60耦合,根据调用请求,通过点对点会话控制其他设备端执行相应的操作。
进一步,上述装置还可以包括:接收模块,与调用模块耦合,还用于通过点对点会话控制其他设备端执行相应的操作之后,使网关接收其他设备端反馈的操作结果,并断开与其他设备端之间的点对点会话连接;上述的发送模块,与接收模块耦合,还用于将操作结果反馈至发送调用请求的设备端
在一个优选实施例中,上述装置还可以如图6所示,在图5的基础上,上述装置包括:检测模块80,与连接模块40耦合,用于按照预设检测方式检测已被分配网关会话端口的设备端是否仍然存在网络中,其中,预设检测方式至少包括以下之一:是否接收到设备端发送的心跳信息、按照预定时间间隔通过ping接口确定设备端是否存在;处理模块90,与检测模块80耦合,用于在确定设备端已经不存在网络中的情况下,回收分配给该设备端的网关会话端口,并删除该设备端的设备会话端口信息。
本发明实施例还提供了一种网关设备,该网关设备可以是Alljoyn网关,其包括上述任一项的连接网关与设备的装置。在实现过程中,可以将上述装置单独设置,也可以将上述装置集成在网关设备中,本领域技术人员根据上述记载,知晓如何设置,此处不再赘述。
可选实施例
现有技术中,设备侧都加入网关会话后,网关端除要维护N个注册设备的TCP长连接之外,每个设备也要维护N-1个与其他注册设备的TCP长连接,对于设备侧来说,由于所有通信直接都通过网关端,设备侧之间就没有再直接保持连接来进行通信的必要。因此,本发明实施例提供了一种连接网关与设备的方法,该方法的交互流程如图7所示,在运行基于Alljoyn的Smart Home Service的网关设备上,假设有两个Alljoyn智能设备和一个Alljoyn Gateway(网管),基于图7对本发明关于减少网络连接的过程进行说明,流程如下:
S1,网关开启N+1个Session(包括N个点对点Session和一个多点Session),每个Session由唯一SessionPort标识并且通过About来广播多点Session端口。
S2,设备通过多点会话端口来注册其服务信息并把其自身的点对点SessionPort一同注册。
S3,注册成功后网关在N个点对点会话端口中选一个可用的端口给设备返回,如无可能的或可以使用的点对点会话端口,则网关返回多点会话端口给设备。该实施例中是以两个设备为例,当设备较多而点对点会话端口较少的情况下,当点对点会话端口已经完全被分配,便会出现将多点会话端口分配给设备的情况,例如,十个设备,却设置了八个点对点会话端口的情况。
S4,设备离开网关多点会话。当设备已经收到了网关分配的端口号后,便离开当前的多点会话。
S5,网关定时通过Ping接口来确定设备的存在.实现时,如不存在设备,则回收点对点端口并删除对应注册信息。
S6,当有设备调用时,调用设备通过分配的端口向加入网关会话。例如,A设备需要调用B设备实现某一功能。
S7,调用设备发送调用请求,例如,A设备向网关发送调用请求。
S8,网关根据被调用设备注册的自身的点对点SessionPort加入被调用设备的会话。网关在收到设备A发送的调用请求后,网关通过之前设备B注册的端口将加入到B设备。
S9,方法调用及返回。调用B设备的相应功能。
S10,网关离开被调设备会话。
S11,向调用发起设备返回结果。向A设备返回调用结果
S12,调用设备离开会话。A设备离开网关。
上述过程中,网关侧开启N+1个会话,其中点对点会话为N,多点会话为1。其实现过程是在现有向网关注册的信息中添加设备自身点对点的SessionPort;当网关侧返回成功信息后,网关侧返回一个网关端的点对点SessionPort,设备侧主动离开网关侧Session;当有服务调用时,网关侧主动加入被调设备的点对点Session进行服务调用。
本发明实施例通过向网关注册自身的点对点会话端口,网关只有在服务调的时候才去主动加入到被调用设备的会话,在网关侧减少了N个注册设备的长连接;通过向注册设备分配点对点会话端口,设备只有在有服务调用的时候才主动加入网关的点对点会话,使得设备侧减少了N-1设备间的长连接。理论上,在没有任何服务调用的情况下比现有方案减少了2N-1个长连接,提高了设备资源及网络利用率。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。