发明内容
本发明实施例提供了一种物联网设备的控制方法、装置、***。
根据本发明实施例的一个方面,提供了一种物联网设备的控制方法,包括:接收物联网设备的上下行消息;确定多个边缘插件的优先级信息,其中,所述多个边缘插件配置在边缘服务器上;基于所述优先级信息采用信息处理队列处理所述上下行消息,其中,所述信息处理队列包括多个串联节点,每个所述边缘插件对应所述信息处理队列中的一个串联节点。
进一步,所述方法还包括:监测所述物联网设备的设备状态信息;将所述设备状态信息发送至云端服务器,其中,所述云端服务器用于根据客户端的查询请求向所述客户端反馈所述设备状态信息,以及接收所述客户端的插件配置请求,向所述边缘服务器下发配置信息。
进一步,基于所述优先级信息采用信息处理队列处理所述上下行消息包括:采用第一信息处理队列处理第一上下行消息;响应场景需求信息,获取待加载的目标边缘插件;在所述目标边缘插件校验通过后,暂停所述第一信息处理队列的消息处理进程,并缓存所述第一信息处理队列未处理的第二上下行消息,继续处理所述第一信息处理队列内的历史消息;采用插件引擎在所述第一信息处理队列中加载所述目标边缘插件,并基于所述目标边缘插件的预设优先级调整所述目标边缘插件在所述第一信息处理队列中的***位置,生成第二信息处理队列;基于所述第二信息处理队列继续处理所述第二上下行消息和新接收到的第三上下行消息。
进一步,所述多个边缘插件包括:协议处理插件、消息处理插件、联动处理插件、数据存储插件、设备驱动插件、***日志插件、***鉴权插件、场景感知插件中的至少两个,其中,所述联动处理插件用于基于统一的场景配置模板接入所述多个物联网设备。
进一步,所述多个边缘插件包括:协议处理插件,消息处理插件,以及场景感知插件,基于所述优先级信息采用信息处理队列处理所述上下行消息包括:调用所述协议处理插件解析所述物联网设备的原始状态数据,得到目标状态数据,其中,所述上下行消息包括所述原始状态数据;调用所述消息处理插件提取所述目标状态数据中的关键字段;调用所述场景感知插件基于所述关键字段生成所述物联网设备的场景信息;其中,所述优先级信息用于指示所述协议处理插件的优先级大于所述消息处理插件,所述消息处理插件的优先级大于所述场景感知插件。
进一步,接收物联网设备的上下行消息包括:接收来自所述物联网设备的事件消息,解析所述事件消息并将所述事件消息转换为网关标准格式的场景消息;根据预设联动模板基于所述场景消息判断所述物联网设备是否触发目标场景;若触发目标场景,生成对应的控制指令,并将所述场景消息写入下行消息队列;若未触发目标场景,则将所述场景消息存入上行缓存队列。
进一步,在接收物联网设备的上下行消息之前,所述方法还包括:在所述边缘服务器中配置边缘基础组件,边缘服务组件,以及边缘云组件;其中,所述边缘基础组件包括多个通用场景的第一边缘插件,所述边缘服务组件包括多个自定义场景的第二边缘插件,所述边缘云组件用于与云端服务器进行通信。
进一步,所述方法还包括以下至少之一:响应第一物联网设备的数据请求,通过标准API获取所述第一物联网设备的授权信息,在所述授权信息鉴权通过后向所述第一物联网设备返回对应的第一设备数据;接收第二物联网设备发布的订阅消息,查找与所述订阅消息匹配的第二设备数据,将所述第二设备数据封装在所述订阅消息的订阅响应消息中推送至所述第二物联网设备,其中,所述订阅消息用于向所述边缘服务器订阅指定主题或指定类型的设备数据。
根据本发明实施例的另一个方面,提供了一种物联网设备的控制装置,包括:接收模块,用于接收物联网设备的上下行消息;确定模块,用于确定多个边缘插件的优先级信息,其中,所述多个边缘插件配置在边缘服务器上;处理模块,用于基于所述优先级信息采用信息处理队列处理所述上下行消息,其中,所述信息处理队列包括多个串联节点,每个所述边缘插件对应所述信息处理队列中的一个串联节点。
进一步,所述装置还包括:监测模块,用于监测所述物联网设备的设备状态信息;发送模块,用于将所述设备状态信息发送至云端服务器,其中,所述云端服务器用于根据客户端的查询请求向所述客户端反馈所述设备状态信息,以及接收所述客户端的插件配置请求,向所述边缘服务器下发配置信息。
进一步,所述处理模块包括:第一处理单元,用于采用第一信息处理队列处理第一上下行消息;获取单元,用于响应场景需求信息,获取待加载的目标边缘插件;暂停单元,用于在所述目标边缘插件校验通过后,暂停所述第一信息处理队列的消息处理进程,并缓存所述第一信息处理队列未处理的第二上下行消息,继续处理所述第一信息处理队列内的历史消息;***单元,用于采用插件引擎在所述第一信息处理队列中加载所述目标边缘插件,并基于所述目标边缘插件的预设优先级调整所述目标边缘插件在所述第一信息处理队列中的***位置,生成第二信息处理队列;第二处理单元,用于基于所述第二信息处理队列继续处理所述第二上下行消息和新接收到的第三上下行消息。
进一步,所述多个边缘插件包括:协议处理插件、消息处理插件、联动处理插件、数据存储插件、设备驱动插件、***日志插件、***鉴权插件、场景感知插件中的至少两个,其中,所述联动处理插件用于基于统一的场景配置模板接入所述多个物联网设备。
进一步,所述多个边缘插件包括:协议处理插件,消息处理插件,以及场景感知插件,所述处理模块包括:第一调用单元,用于调用所述协议处理插件解析所述物联网设备的原始状态数据,得到目标状态数据,其中,所述上下行消息包括所述原始状态数据;第二调用单元,用于调用所述消息处理插件提取所述目标状态数据中的关键字段;第三调用单元,用于调用所述场景感知插件基于所述关键字段生成所述物联网设备的场景信息;其中,所述优先级信息用于指示所述协议处理插件的优先级大于所述消息处理插件,所述消息处理插件的优先级大于所述场景感知插件。
进一步,所述接收模块包括:接收单元,用于接收来自所述物联网设备的事件消息,解析所述事件消息并将所述事件消息转换为网关标准格式的场景消息;判断单元,用于根据预设联动模板基于所述场景消息判断所述物联网设备是否触发目标场景;存储单元,用于若触发目标场景,生成对应的控制指令,并将所述场景消息写入下行消息队列;若未触发目标场景,则将所述场景消息存入上行缓存队列。
进一步,所述装置还包括:配置模块,用于在所述接收模块接收物联网设备的上下行消息之前,在所述边缘服务器中配置边缘基础组件,边缘服务组件,以及边缘云组件;其中,所述边缘基础组件包括多个通用场景的第一边缘插件,所述边缘服务组件包括多个自定义场景的第二边缘插件,所述边缘云组件用于与云端服务器进行通信。
进一步,所述装置还包括以下至少之一:返回模块,用于响应第一物联网设备的数据请求,通过标准API获取所述第一物联网设备的授权信息,在所述授权信息鉴权通过后向所述第一物联网设备返回对应的第一设备数据;推送模块,用于接收第二物联网设备发布的订阅消息,查找与所述订阅消息匹配的第二设备数据,将所述第二设备数据封装在所述订阅消息的订阅响应消息中推送至所述第二物联网设备,其中,所述订阅消息用于向所述边缘服务器订阅指定主题或指定类型的设备数据。
根据本发明实施例的另一个方面,提供了一种物联网设备的控制***,包括:多个物联网设备,接入所属区域的边缘服务器;所述边缘服务器,与所述多个物联网设备连接,配置有多个边缘插件,包括:接收模块,用于接收所述物联网设备的上下行消息;确定模块,用于确定多个边缘插件的优先级信息,其中,所述多个边缘插件配置在边缘服务器上;处理模块,用于基于所述优先级信息采用信息处理队列处理所述上下行消息,其中,所述信息处理队列包括多个串联节点,每个所述边缘插件对应所述信息处理队列中的一个串联节点。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本发明实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
通过本发明,接收物联网设备的上下行消息,确定多个边缘插件的优先级信息,基于优先级信息采用信息处理队列处理上下行消息,提供了一种新的边缘网关构架,通过插件配置和信息处理队列的消息处理机制提高了边缘服务器的拓展性,可以适配更多的物联网应用场景,解决了相关技术的边缘网关拓展性弱的技术问题,提高了边缘网关的拓展性和灵活性。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明实施例一所提供的方法实施例可以在计算机、服务器或者类似的网关设备中执行。以运行在边缘服务器上为例,图1是本发明实施例的一种边缘服务器的硬件结构框图。如图1所示,服务器可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述服务器还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器的结构造成限定。例如,服务器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储服务器程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种物联网设备的控制方法对应的服务器程序,处理器102通过运行存储在存储器104内的服务器程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种物联网设备的控制方法,图2是根据本发明实施例的一种物联网设备的控制方法的流程图,应用在边缘服务器中,如图2所示,该流程包括如下步骤:
步骤S202,接收物联网设备的上下行消息;
可选的,物联网设备可以按照社区为单位接入边缘服务器,即每个社区部署一个边缘服务器,边缘服务器作为物联网设备的接入网关/边缘网关,实现物联网设备的分布式管理。
步骤S204,确定多个边缘插件的优先级信息,其中,多个边缘插件配置在边缘服务器上;
本实施例的边缘插件是应用在边缘服务器上的插件程序,可以加载并运行在边缘服务器的***程序中,边缘插件随着边缘服务器的启动可以自动执行,基于***程序的应用程序接***互完成或者独立完成对应的功能服务。
步骤S206,基于优先级信息采用信息处理队列处理上下行消息,其中,信息处理队列包括多个串联节点,每个边缘插件对应信息处理队列中的一个串联节点。
其中,优先级信息与边缘插件处理上下行消息的顺序对应,优先级越高,处理上下行消息的时序越靠前。先基于优先级信息对多个边缘插件进行排序,生成信息处理队列,然后采用信息处理队列依次处理上下行消息,队列中的首个边缘插件处理上下行消息,下一个边缘插件继续处理队列中上一个边缘插件传递下来的中间数据,直到队列的最后一个边缘插件。通过优先级,可以配置信息处理队列的节点数量以及各个节点之间的连接关系,可以实现上下行消息在边缘服务器中的有序传递,从而实现边缘服务器的灵活配置和拓展。
本实施例的信息处理队列是一种对象的行为模式,使多个节点(Handler)都有机会处理消息,从而避免消息的发送者(物联网设备或边缘服务器)和接受者(边缘服务器或物联网设备)直接的耦合关系,将这些节点串联成一条链,沿着这条链传递该消息,直到有一个节点处理它为止。信息处理队列包括每一个节点及每两个相邻节点之间的串联关系,利用信息处理队列将发送者和接收者解耦。边缘插件可以通过自定义的模板或者统一模板进行灵活定制,按照场景增减或适配。
通过上述步骤,接收物联网设备的上下行消息。确定多个边缘插件的优先级信息,基于优先级信息采用信息处理队列处理上下行消息,提供了一种新的边缘网关构架,通过插件配置和信息处理队列的消息处理机制提高了边缘服务器的拓展性,可以适配更多的物联网应用场景,解决了相关技术的边缘网关拓展性弱的技术问题,提高了边缘网关的拓展性和灵活性。
在实施例的一个实施方式中,方案还包括:监测物联网设备的设备状态信息;将设备状态信息发送至云端服务器,其中,云端服务器用于根据客户端的查询请求向客户端反馈设备状态信息,以及接收客户端的插件配置请求,向边缘服务器下发配置信息。
在本实施方式中,云端服务器与边缘服务器通过可插拔组件连接,用于在边缘服务器的在线状态下与边缘服务器通信,存储物联网设备的设备状态信息;客户端与云端服务器连接,用于从云端服务器查询物联网设备的设备状态信息,以及经由云端服务器向边缘服务器下发配置信息。
在本实施方式的另一方面,边缘服务器在离线状态下,与云端服务器不能通信,可以在边缘服务器本地进行离线管理,如查询物联网设备的设备状态信息,下发边缘服务器的配置信息等,实现了离线/在线管理,使用更灵活,场景更丰富。
可选的,边缘服务器在运行之前,需要初始化。边缘服务器在线状态的初始化流程包括:通过边缘云的配置API,调用***鉴权插件初始化管理员账号,并调用数据存储插件存储管理员加密后的账号和密钥;启动边缘云,录入网关鉴权信息,执行配置同步指令从云端服务器拉取对边缘服务器的配置信息,包括授权接入的物联网设备的物模型、设备鉴权信息以及配置的场景配置模板;完成即可将物联网设备通过指定协议接入网关。边缘服务器离线状态的初始化流程包括:关闭边缘云云同步功能,通过手动上传配置文件的形式完成设备初始化。
图3是本发明实施例的网络部署示意图,包括云端服务器,边缘服务器,物联网设备,客户端等。边缘服务器在整个网络中为边缘网关,管理员初始化边缘服务器并在运行中执行运维管理服务,用户无感使用物联网设备,也可通过APP通过云端,采用云端服务器控制物联网设备(需边缘服务器开启云同步功能)。部署方式可以是直接安装以及容器化部署,在采用容器化部署的示例中,边缘服务器还配置云端容器集群治理能力,如使用k8s(Kubernetes)部署并进行云端管理改造。
在实施例的一个实施方式中,在确定多个边缘插件的优先级信息之前,还需要预先配置边缘插件,在边缘服务器中注册并加载边缘插件,包括:采用热加载的方式将边缘插件的脚本文件存入目录文件并修改插件管理器的配置文件,以在边缘服务器中注册边缘插件;在边缘插件注册完成后,加载边缘插件,以使边缘插件在边缘服务器中生效。
边缘服务器采用插件管理器和插件API(Application Programming Interface,应用程序接口)分别执行上述步骤,插件管理器采用热加载的方式将边缘插件的脚本文件存入目录文件并修改插件管理器的配置文件;插件API在边缘插件在插件管理器中注册完成后,加载边缘插件,边缘插件在边缘服务器中加载完成后生效。
在本实施例的一个实施方式中,基于优先级信息采用信息处理队列处理上下行消息包括:采用第一信息处理队列处理第一上下行消息;响应场景需求信息,获取待加载的目标边缘插件;在目标边缘插件校验通过后,暂停第一信息处理队列的消息处理进程,并缓存第一信息处理队列未处理的第二上下行消息,继续处理第一信息处理队列内的历史消息;采用插件引擎在第一信息处理队列中加载目标边缘插件,并基于目标边缘插件的预设优先级调整目标边缘插件在第一信息处理队列中的***位置,生成第二信息处理队列;基于第二信息处理队列继续处理第二上下行消息和新接收到的第三上下行消息。
在一个示例中,第一信息处理队列包括插件A,插件B,插件C三个插件,组成插件A→插件B→插件C的第一信息处理队列,由于场景需求或场景切换,需要采用插件D来处理消息,在对插件D的脚本文件校验通过后,暂停第一信息处理队列的处理进程,插件A不再接收上下行消息,将待传入插件A的消息缓存起来,已经进入插件A且未从插件C传递出的上下行消息继续由第一信息处理队列处理,直到第一信息处理队列清空,通过插件D的优先级信息,比如插件D的优先级最低,在第一信息处理队列末尾***插件D,得到第二信息处理队列,即插件A→插件B→插件C→插件D,针对之前缓存的第二上下行消息和新接收到的第三上下行消息,继续采用第二信息处理队列进行处理,采用本实施例的队列热加载方式,在场景变化时,可以根据业务场景的实时需要即时灵活调整信息处理队列,进而调整上下行消息的处理方式,同时保证数据的可靠性,防止数据的丢失,实现了边缘服务器对物联网设备的灵活控制和应用。除了增加边缘插件之外,还可以是替换第一信息处理队列中的某个插件,或者是删减第一信息处理队列中的某个插件,生成第二信息处理队列。
在本实施例中,所有边缘插件根据标准插件模型进行开发,开发完成后上传边缘插件或手动将边缘插件的插件脚本放入预设的目录文件并修改插件管理器的配置文件,注册此插件,在信息处理队列中添加该新注册的边缘插件,然后调用插件API将此插件加载使其生效,此后即可启动插件功能。多个边缘插件包括:协议处理插件、消息处理插件、联动处理插件、数据存储插件、设备驱动插件、***日志插件、***鉴权插件、场景感知插件中的至少两个,其中,联动处理插件用于基于统一的场景配置模板接入多个物联网设备。通过在边缘服务器中内置基于统一的场景配置模板的联动处理插件,可以统一的消息格式识别物联网设备当前的实时场景,可实现跨品牌、跨类型、跨区域的设备联动能力,极大的丰富了物联网设备的应用。
可选的,在接收物联网设备的上下行消息之前,还包括:在边缘服务器中配置边缘基础组件,边缘服务组件,以及边缘云组件;其中,边缘基础组件包括多个通用场景的第一边缘插件,边缘服务组件包括多个自定义场景的第二边缘插件,边缘云组件用于与云端服务器进行通信。
图4是本发明实施例中边缘服务器的逻辑构架图,整个边缘服务器分为三大组件:边缘基础组件(Edge Base),边缘服务组件(EdgeService),边缘云组件(EdgeCloud),下面分别对其进行说明:
边缘基础组件,为整个边缘服务器的基础模块,提供***的扩展能力,基于热加载的插件管理器可在边缘基础组件的基础上快速扩展***功能,扩展边缘服务器的能力,边缘基础组件包括以下边缘插件:数据存储插件、设备驱动插件、***日志插件、***鉴权插件等基本边缘功能的边缘插件,内部采用信息处理队列实现,在所有场景中配置固定的优先级,每个功能均作公共抽象,提供给边缘服务所在的上层业务代码使用,从而方便地根据实际部署环境性能调整底层实现信息处理队列的选型,比如数据存储插件的关系数据存储默认采用SQLite嵌入式数据库,如果需要部署在高性能服务器或需要将数据统一存储在社区内,可以将数据存储插件的数据库类型修改为与存储环境或业务需求匹配的数据库。设备驱动插件用于驱动直接连接到边缘服务器中的特殊硬件,通过封装将可执行操作作为标准接口开放给上层业务;***日志插件用于处理***重要操作及告警类内容,采用文件存储方式,供问题排查和审计使用;***鉴权插件用于边缘服务器进行鉴权,用于处理运维相关的用户权限控制。边缘基础组件中的所有插件可以被边缘服务器中的边缘服务组件调用。
边缘服务组件,为***服务模块,可以包括协议处理插件、消息处理插件、场景感知插件、联动处理插件,服务引擎将各个插件连接起来,内部采用信息处理队列实现,根据场景预先注册和加载可用的插件并配置优先级信息,根据各个边缘插件的优先级从高到低传递数据,传递的数据包含原始输入以及插件补充的数据,其中协议处理插件包含数据解码器和数据编码器两个子插件,用于处理设备的上下行消息。本组件是边缘服务器的核心组件,信息处理队列中各个边缘插件除边缘基础组件中的默认插件之外,可自由扩展,实现定制化的消息及数据处理能力。在此对边缘插件的功能进行说明:协议处理插件用于将上下行消息转换为边缘服务器可识别的文本,得到翻译文本,消息处理插件用于按照业务需求判断翻译文本是否正确,场景感知插件用于基于翻译文本中的具体数值(如标志位)判断翻译文本是否触发联动动作,联动处理插件用于控制执行该联动动作。
边缘云组件,为边缘服务器的云客户端组件,用于实现边缘服务器与云平台(云端服务器)之间的通信,如,将边缘服务器自身注册至云平台、从云平台拉取最新配置、监控云平台的端点输出、从云平台缓存上行消息、将消息经过云平台安全传输至客户端。可选的,边缘云组件为可插拔组件,可通过配置关闭,关闭边缘云组件后,边缘服务器仅能在本地进行管理。此外此组件也可提供标准管理API,此API可用于对边缘服务器进行配置,通过***自带或自定义的业务***对边缘服务器的***配置、插件、日志、会话等功能进行管理。
在本实施例的一个联动场景中,多个边缘插件包括:协议处理插件,消息处理插件,以及场景感知插件,基于优先级信息采用信息处理队列处理上下行消息包括:调用协议处理插件解析物联网设备的原始状态数据,得到目标状态数据,其中,上下行消息包括原始状态数据;调用消息处理插件提取目标状态数据中的关键字段;调用场景感知插件基于关键字段生成物联网设备的场景信息;其中,优先级信息用于指示协议处理插件的优先级大于消息处理插件,消息处理插件的优先级大于场景感知插件。
在物联网(IoT)中,场景表示一种特定的状态,比如灯打开状态或者灯关闭状态、门磁处于打开状态、报警器处于报警状态,动作表示一种行为,可以使设备进入一种场景,或者切换状态,打开灯(动作)使灯处于打开状态(场景),结果上来说动作和场景相同,在IoT业务中,动作即是场景;自动化表示从一种场景自动地转变成另外一种场景;自动化从场景A自动地转变成场景B,那么场景A就称为条件,场景B称为动作,条件有几种来源,第一种是设备上报的数据(也是来源最大的一部分);第二种是环境数据,比如温度、湿度、天气、PM2.5、空气质量、日落日出,用户选择气象条件时,可以选择当前城市;第三种是场景本身,场景B作为动作,同样也可以作为条件;第四种是定时任务,定时或者周期性触发;同样,动作也有大概几类,第一类是设备动作,打开灯或者关闭灯;第二类是消息,发送短信,语音,推送,邮件;第三类是场景; 第四类是延时,延时多长时间触发动作。
在基于上述联动场景的一个实例中,物联网设备为灯,协议处理插件解析灯的原始状态数据(如开关状态、电压、电流等),生成数字信号,消息处理插件解析该数字信号,提取数字信号中的标志位(如0、1)、设备标识信息(如Light 1,Light客厅等)等作为场景信息,存储至边缘插件。
通过采用信息处理队列梳理消息,依次传递,可以保证整个物联网***的成熟可靠。
在实施例的一个实施方式中,边缘服务器还与云端服务器和客户端连接,云端服务器在接收到来自客户端的拉取配置指令后,从边缘服务器获取对应的消息明文,对消息明文做签名并对载荷数据做签名,生成JSON格式的响应消息,通过客户端订阅的下行Topic(Topic是kafka集群中的组件,topic逻辑上是:一个目标发送目的地,在物理上是:一个磁盘上的partition(隔扇)的目录)下发响应消息;客户端通过上行通道发送该拉取配置指令,以及在接收到响应消息后,用预配置的密钥或证书从响应消息解密数据,并进行签名验证,得到对应的消息明文,展示给用户。
客户端可通过上行通道发送拉取配置指令,云端服务器收到指令后通过客户端订阅的下行Topic下发,采用JSON格式传输响应消息,传输前对消息明文做签名并对Payload,通过SHA1算法做签名,客户端收到消息时需先用预配置的密钥或证书解密数据,并进行签名验证,保障消息可靠。通过在云端服务器和客户端之间进行传输加密,安全性好,支持安全链路和数据加密,同时实现了上下行消息的可靠传递,强化了物联网安全。
在本实施方式中,边缘服务器与云端服务器之间的通讯采用发布订阅机制实现,云端服务器可为kafka服务端,当边缘服务器与云端服务器建立连接时,采用SSL(SecureSockets Layer,安全套接字协议)/SASL(Simple Authentication and Security Layer,简单的认证及加密层)认证机制保障通讯安全及设备可靠。
在实施例的一个实施方式中,接收物联网设备的上下行消息包括:接收来自物联网设备的事件消息,解析事件消息并将事件消息转换为网关标准格式的场景消息;根据预设联动模板基于场景消息判断物联网设备是否触发目标场景;若触发目标场景,生成对应的控制指令,并将场景消息写入下行消息队列;若未触发目标场景,则将场景消息存入上行缓存队列。
可选的,若触发目标场景,还可以扫描下行消息队列,并将下行消息队列中的消息发送给对应的物联网设备;若未触发目标场景,还可以将上行缓存队列中的消息发送给云端服务器,若与云端服务器通讯失败则将场景消息保留在本地缓存中待边缘服务器与云端服务器通讯链路恢复后继续发送。
在本实施方式中,物联网设备与边缘服务器建立连接,通过设备鉴权后接入边缘服务器,边缘服务器会为连接建立会话,当物联网设备有状态变化时,会将事件消息发送给边缘服务器,边缘服务器解析消息并将消息转换为网关标准格式后传递给联动场景插件,插件根据联动模板判断是否触发目标场景,当触发时生成对应的控制指令写入下行消息队列,消息编码器会扫描此队列,并将队列中的消息发送给对应的设备,如未触发则判断云同步是否启动,如启动则将消息放入上行缓存队列,消息传输模块将缓存队列中的消息发送给云端,如通讯失败则保留在缓存中待与云端通讯恢复后继续发送。过程中Endpoint端点将消息计数器+1并记录消息大小、处理时间以及其他自定义监控事项,最后根据日志级别记录日志。采用本实施方式的消息处理方式,在边缘服务器中完善了缓存和日志管理机制,保证消息不会丢失。
可选的,边缘服务器可以采用SSL/TLS(安全传输层协议,Transport LayerSecurity)/DTLS(数据包传输层安全性协议,Datagram Transport Layer Security)等安全链路模型,提供链路加密,并采用AES、DES等对称加密算法对待传输的数据进行加密,保证物联网设备与边缘服务器之间的数据安全。
在本实施例中,边缘服务器还可以与物联网设备进行数据交互,包括以下至少之一:响应第一物联网设备的数据请求,通过标准API获取第一物联网设备的授权信息,在授权信息鉴权通过后向第一物联网设备返回对应的第一设备数据;接收第二物联网设备发布的订阅消息,查找与订阅消息匹配的第二设备数据,将第二设备数据封装在订阅消息的订阅响应消息中推送至第二物联网设备,其中,订阅消息用于向边缘服务器订阅指定主题或指定类型的设备数据。
可选的,在边缘服务器与物联网设备之间交互数据时,可以采用两种数据开放模式中的一种,一是通过标准API经授权后从物联网设备获取设备数据,另一种是开启边缘服务器中的消息订阅能力,使用授权账号在边缘服务器中订阅响应消息,边缘服务器会主动将响应消息推送给客户端,该订阅方式采用MQTT(Message Queuing TelemetryTransport,消息队列遥测传输)实现。
本实施例实现了一个通用的边缘网关解决方案,为社区级边缘网关提供一种通用适配的解决方案。边缘服务器可与云端服务器进行云边协同,也可不依赖于云端在本地独立运行,并通过独立输出的API实现本地管理。采用支持热加载技术的插件化模型注册和加载边缘插件,实现插件功能管理和扩展,使用信息处理队列处理物联网设备的上下行消息,可将插件串联连成pipeline(管道)实现复杂业务功能。边缘服务器还可以对物联网消息进行格式转换,将消息根据预定义模型统一,转换为网关标准格式的场景消息,通过内置基于脚本的联动处理插件,可实现丰富的设备间联动效果。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的***和方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例2
在本实施例中还提供了一种物联网设备的控制装置、***,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种物联网设备的控制装置的结构框图,如图5所示,该装置包括:接收模块50,确定模块52,处理模块54,其中,
接收模块50,用于接收物联网设备的上下行消息;
确定模块52,用于确定多个边缘插件的优先级信息,其中,多个边缘插件配置在边缘服务器上;
处理模块54,用于基于优先级信息采用信息处理队列处理上下行消息,其中,信息处理队列包括多个串联节点,每个边缘插件对应信息处理队列中的一个串联节点。
可选的,所述装置还包括:监测模块,用于监测所述物联网设备的设备状态信息;发送模块,用于将所述设备状态信息发送至云端服务器,其中,所述云端服务器用于根据客户端的查询请求向所述客户端反馈所述设备状态信息,以及接收所述客户端的插件配置请求,向所述边缘服务器下发配置信息。
进一步,所述处理模块包括:第一处理单元,用于采用第一信息处理队列处理第一上下行消息;获取单元,用于响应场景需求信息,获取待加载的目标边缘插件;暂停单元,用于在所述目标边缘插件校验通过后,暂停所述第一信息处理队列的消息处理进程,并缓存所述第一信息处理队列未处理的第二上下行消息,继续处理所述第一信息处理队列内的历史消息;***单元,用于采用插件引擎在所述第一信息处理队列中加载所述目标边缘插件,并基于所述目标边缘插件的预设优先级调整所述目标边缘插件在所述第一信息处理队列中的***位置,生成第二信息处理队列;第二处理单元,用于基于所述第二信息处理队列继续处理所述第二上下行消息和新接收到的第三上下行消息。
进一步,所述多个边缘插件包括:协议处理插件、消息处理插件、联动处理插件、数据存储插件、设备驱动插件、***日志插件、***鉴权插件、场景感知插件中的至少两个,其中,所述联动处理插件用于基于统一的场景配置模板接入所述多个物联网设备。
进一步,所述多个边缘插件包括:协议处理插件,消息处理插件,以及场景感知插件,所述处理模块包括:第一调用单元,用于调用所述协议处理插件解析所述物联网设备的原始状态数据,得到目标状态数据,其中,所述上下行消息包括所述原始状态数据;第二调用单元,用于调用所述消息处理插件提取所述目标状态数据中的关键字段;第三调用单元,用于调用所述场景感知插件基于所述关键字段生成所述物联网设备的场景信息;其中,所述优先级信息用于指示所述协议处理插件的优先级大于所述消息处理插件,所述消息处理插件的优先级大于所述场景感知插件。
进一步,所述接收模块包括:接收单元,用于接收来自所述物联网设备的事件消息,解析所述事件消息并将所述事件消息转换为网关标准格式的场景消息;判断单元,用于根据预设联动模板基于所述场景消息判断所述物联网设备是否触发目标场景;存储单元,用于若触发目标场景,生成对应的控制指令,并将所述场景消息写入下行消息队列;若未触发目标场景,则将所述场景消息存入上行缓存队列。
进一步,所述装置还包括:配置模块,用于在所述接收模块接收物联网设备的上下行消息之前,在所述边缘服务器中配置边缘基础组件,边缘服务组件,以及边缘云组件;其中,所述边缘基础组件包括多个通用场景的第一边缘插件,所述边缘服务组件包括多个自定义场景的第二边缘插件,所述边缘云组件用于与云端服务器进行通信。
进一步,所述装置还包括以下至少之一:返回模块,用于响应第一物联网设备的数据请求,通过标准API获取所述第一物联网设备的授权信息,在所述授权信息鉴权通过后向所述第一物联网设备返回对应的第一设备数据;推送模块,用于接收第二物联网设备发布的订阅消息,查找与所述订阅消息匹配的第二设备数据,将所述第二设备数据封装在所述订阅消息的订阅响应消息中推送至所述第二物联网设备,其中,所述订阅消息用于向所述边缘服务器订阅指定主题或指定类型的设备数据。
本实施例还提供了一种物联网设备的控制***,包括:多个物联网设备60,接入所属区域的边缘服务器62;边缘服务器62,与多个物联网设备连接,配置有多个边缘插件,包括:接收模块,用于接收所述物联网设备的上下行消息;确定模块,用于确定多个边缘插件的优先级信息,其中,所述多个边缘插件配置在边缘服务器上;处理模块,用于基于所述优先级信息采用信息处理队列处理所述上下行消息,其中,所述信息处理队列包括多个串联节点,每个所述边缘插件对应所述信息处理队列中的一个串联节点。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本申请实施例还提供了一种电子设备,图7是本发明实施例的一种电子设备的结构图,如图7所示,包括处理器71、通信接口72、存储器73和通信总线74,其中,处理器71,通信接口72,存储器73通过通信总线74完成相互间的通信,存储器73,用于存放计算机程序;处理器71,用于执行存储器73上所存放的程序时,实现如下步骤:接收物联网设备的上下行消息;确定多个边缘插件的优先级信息,其中,所述多个边缘插件配置在边缘服务器上;基于所述优先级信息采用信息处理队列处理所述上下行消息,其中,所述信息处理队列包括多个串联节点,每个所述边缘插件对应所述信息处理队列中的一个串联节点。
进一步,所述方法还包括:监测所述物联网设备的设备状态信息;将所述设备状态信息发送至云端服务器,其中,所述云端服务器用于根据客户端的查询请求向所述客户端反馈所述设备状态信息,以及接收所述客户端的插件配置请求,向所述边缘服务器下发配置信息。
进一步,基于所述优先级信息采用信息处理队列处理所述上下行消息包括:采用第一信息处理队列处理第一上下行消息;响应场景需求信息,获取待加载的目标边缘插件;在所述目标边缘插件校验通过后,暂停所述第一信息处理队列的消息处理进程,并缓存所述第一信息处理队列未处理的第二上下行消息,继续处理所述第一信息处理队列内的历史消息;采用插件引擎在所述第一信息处理队列中加载所述目标边缘插件,并基于所述目标边缘插件的预设优先级调整所述目标边缘插件在所述第一信息处理队列中的***位置,生成第二信息处理队列;基于所述第二信息处理队列继续处理所述第二上下行消息和新接收到的第三上下行消息。
进一步,所述多个边缘插件包括:协议处理插件、消息处理插件、联动处理插件、数据存储插件、设备驱动插件、***日志插件、***鉴权插件、场景感知插件中的至少两个,其中,所述联动处理插件用于基于统一的场景配置模板接入所述多个物联网设备。
进一步,所述多个边缘插件包括:协议处理插件,消息处理插件,以及场景感知插件,基于所述优先级信息采用信息处理队列处理所述上下行消息包括:调用所述协议处理插件解析所述物联网设备的原始状态数据,得到目标状态数据,其中,所述上下行消息包括所述原始状态数据;调用所述消息处理插件提取所述目标状态数据中的关键字段;调用所述场景感知插件基于所述关键字段生成所述物联网设备的场景信息;其中,所述优先级信息用于指示所述协议处理插件的优先级大于所述消息处理插件,所述消息处理插件的优先级大于所述场景感知插件。
进一步,接收物联网设备的上下行消息包括:接收来自所述物联网设备的事件消息,解析所述事件消息并将所述事件消息转换为网关标准格式的场景消息;根据预设联动模板基于所述场景消息判断所述物联网设备是否触发目标场景;若触发目标场景,生成对应的控制指令,并将所述场景消息写入下行消息队列;若未触发目标场景,则将所述场景消息存入上行缓存队列。
进一步,在接收物联网设备的上下行消息之前,所述方法还包括:在所述边缘服务器中配置边缘基础组件,边缘服务组件,以及边缘云组件;其中,所述边缘基础组件包括多个通用场景的第一边缘插件,所述边缘服务组件包括多个自定义场景的第二边缘插件,所述边缘云组件用于与云端服务器进行通信。
进一步,所述方法还包括以下至少之一:响应第一物联网设备的数据请求,通过标准API获取所述第一物联网设备的授权信息,在所述授权信息鉴权通过后向所述第一物联网设备返回对应的第一设备数据;接收第二物联网设备发布的订阅消息,查找与所述订阅消息匹配的第二设备数据,将所述第二设备数据封装在所述订阅消息的订阅响应消息中推送至所述第二物联网设备,其中,所述订阅消息用于向所述边缘服务器订阅指定主题或指定类型的设备数据。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的物联网设备的控制方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的物联网设备的控制方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。