掌桥专利:专业的专利平台
掌桥专利
首页

一种智慧灯杆系统中软件高效对接各类挂载设备的方法

文献发布时间:2023-06-19 12:19:35


一种智慧灯杆系统中软件高效对接各类挂载设备的方法

技术领域

本发明涉及通信数据处理技术领域,尤其涉及一种智慧灯杆系统中软件高效对接各类挂载设备的方法。

背景技术

智慧灯杆上可方便挂载各类传感器和智能化设备,通过智能网关与平台软件进行通信,成为智慧城市重要的载体和入口。

智能化系统中,应用软件与硬件设备的通信对接通常采用通信协议对接、SDK对接以及第三方平台API对接等对接方式,其中部分已经有相关国家标准的通信协议,如视频监控有GB28181协议等,但大部分设备目前仍然没有相关标准协议的出台或得到实质性的应用,且厂家基于自身商业机密及竞争优势的考虑,在短时间内很难做到对接方式或通信协议的统一。

目前,智慧灯杆系统中应用软件(包括平台软件及智慧杆网关软件)与挂载设备的对接工作,一般是在项目所用设备厂家已经确定的前提下,有针对性地对接其中一家或几家的设备,其缺点有:

1)设备对接扩展不方便,对接一个厂家的设备,需要结合厂家设备及对接方式的特点,从前台改到后台;

2)设备参数设置不便,不同厂家的设备需要单独开发各不相同的参数设置界面;

3)因对接代码分散在多个软件模块中,耦合性增加,导致程序的开发和维护难度增加。

发明内容

技术目的:针对现有技术中的缺陷,本发明公开了一种智慧灯杆系统中软件高效对接各类挂载设备的方法,通过制定标准化的设备访问接口及操作流程,将外围设备对接代码集中到较小范围的驱动层代码中,并通过一致性的调用接口实现对挂载设备的访问和控制,从而提升智慧灯杆挂载设备的对接效率。

技术方案:为实现上述技术目的,本发明采用以下技术方案。

一种智慧灯杆系统中软件高效对接各类挂载设备的方法,包括以下步骤:

S1、共性数据提取:获取智慧灯杆上各挂载设备的功能及操作流程,提取各挂载设备的共性数据;

S2、设计设备驱动接口:根据步骤S1中提取的共性数据,设计数据结构,构建数据库表,设计设备驱动接口,所述设备驱动接口为包含一致属性、事件、方法的数据结构;

S3、实现各挂载设备驱动:根据步骤S2中设计的设备驱动接口,结合各挂载设备的通信协议、SDK开发包或API服务接口,配置连接参数,编写设备驱动实现类代码;

S4、创建设备通道,实现设备访问:对不同对接方式或不同IP地址的挂载设备创建独立的设备通道,进而实现设备访问及设备监控功能;应用层代码访问设备的链路为设备对象-设备通道-设备驱动-设备实体。

优选地,所述步骤S2的数据库表中包括逻辑主键deviceId和连接参数的字符串,所述逻辑主键deviceId用于在数据库和应用层代码中唯一标识设备,应用层代码通过逻辑主键deviceId查找设备驱动接口,进而操作设备;所述连接参数用于表示驱动或设备的通信标识信息。

优选地,所述步骤S3中配置连接参数具体包括:采用连接参数的自描述数据结构进行配置,连接参数采用键值对字符串的形式进行传递和保存,每个设备通道关联一个设备驱动实例和相应的连接参数。

优选地,所述连接参数包括驱动连接参数和设备连接参数,其中,驱动连接参数包括基于底层通信协议直接对接挂载设备时需要的本地IP地址和端口号,或是基于对接第三方平台时,需要的服务器IP地址、端口号、登录账号和密码,用于设备驱动实例的启动;设备连接参数包括设备访问过程中挂载设备的通信标识参数,用于表示设备的访问标识信息。

优选地,所述连接参数的自描述数据结构为动态参数配置,包括字段名称、最小值、最大值、值类型、数值长度、默认值、数值精度、数值单位名称。

优选地,所述连接参数的自描述数据结构采用元信息描述代码、配置文件或反射机制的方式进行简化、定义和提取。

优选地,所述步骤S2中设计设备驱动接口应用适配器模式,采用面向对象的设计方法,设备驱动程序采用JAVA、C#、C++或Python开发语言。

优选地,所述步骤S2中数据结构具体包括基类接口IDeviceDriver、各挂载设备驱动接口类和事件回调接口EventListener,所述基类接口IDeviceDriver用于定义通用的基础方法,各挂载设备驱动接口类用于定义应用模块相应方法和事件,事件回调接口EventListener用于定义设备驱动基础的事件类型,为各挂载设备驱动接口类定义对应的子接口,并在应用层代码中监听事件回调子接口的事件。

有益效果:

(1)本发明通过制定标准化的设备访问接口及操作流程,将外围设备对接代码集中到较小范围的驱动层代码中,并通过一致性的调用接口实现对挂载设备的访问和控制,从而提升智慧灯杆挂载设备的对接效率;

(2)本发明中采用驱动连接参数及设备连接参数的概念,实现对设备标识及访问的统一管理,并通过键值对字符串的形式统一连接参数的读写;

(3)本发明采用连接参数字段自描述简化设备参数配置,统一了各个厂家设备参数的编辑界面;

(4)本发明采用元信息描述代码、配置文件及反射机制,简化连接参数自描述结构的定义与提取。

附图说明

图1为本发明的总方法流程图;

图2为本发明的设备驱动接口数据结构连接关系示意图;

图3为本发明与现有技术的设备访问方式对比示意图。

具体实施方式

以下结合附图和实施例对本发明的一种智慧灯杆系统中软件高效对接各类挂载设备的方法做进一步的说明和解释。

智慧灯杆上挂载有各类设备,每一类设备都有其共性的数据、功能及操作流程,为此,可根据这些共性内容为每一类设备制定统一的驱动接口,然后为各个厂家的设备编写不同的设备驱动,最后将驱动实例绑定到设备通道上,实现对多个同类厂家设备的统一访问。

如附图1所示,一种智慧灯杆系统中软件高效对接各类挂载设备的方法,包括以下步骤:

S1、共性数据提取:获取智慧灯杆上各类挂载设备的功能及操作流程,提取各挂载设备的共性数据、设备功能及操作流程,一般参考同类型产品中主流设备厂商提供的对接文档,以分析提取出公共的数据接口、操作接口和操作流程等信息;

S2、设计设备驱动接口:根据步骤S1中提取的共性数据,设计数据结构,这里的数据结构为根据共性数据构建的共性数据结构,构建数据库表,设计设备驱动接口,所述设备驱动接口为包含一致属性、事件、方法的数据结构;这里的事件即为回调函数;一致属性包括设备驱动接口内驱动程序的开启状态、设备列表等;

S3、实现各挂载设备驱动:根据步骤S2中设计的设备驱动接口,启动厂家提供的各挂载设备的设备通信协议、SDK开发包或API服务接口,配置连接参数,编写设备驱动实现类代码;各个厂家的设备驱动实现设备驱动接口中所定义的相关属性、事件和方法;

S4、创建设备通道,实现设备访问:对不同对接方式或不同IP地址的挂载设备创建独立的设备通道,进而实现设备访问及设备监控功能,具体包括:启动设备驱动程序,连接数据库,加载设备列表及设备通道列表信息,通过设备直连、平台连接或端口监听的方式,进而实现设备访问,开启设备监控功能;应用层代码访问设备的链路为设备对象-设备通道-设备驱动-设备实体,反之亦然。

本发明通过制定标准化的设备访问接口及操作流程,将外围挂载设备对接代码集中到较小范围的驱动层代码中,并通过一致性的调用接口实现对挂载设备的访问和控制,从而提升智慧灯杆挂载设备的对接效率。

步骤S2中设计设备驱动接口应用适配器模式,采用面向对象的设计方法,设备驱动程序采用JAVA、C#、C++、Python等开发语言,设备驱动接口中的数据结构及关系如附图2所示。数据结构具体包括基类接口IDeviceDriver、各挂载设备驱动接口类和事件回调接口EventListener,所述基类接口IDeviceDriver用于定义通用的基础方法,各挂载设备驱动接口类用于定义应用模块相应的属性、方法和事件,事件回调接口EventListener用于定义设备驱动基础的事件类型,为各挂载设备驱动接口类定义对应的子接口,并在应用层代码中监听事件回调子接口的事件。具体如下:

IDeviceDriver是各个应用模块驱动接口的基类接口,定义了通用的基础方法:

1)open/close方法用于启动/停止驱动的业务功能;

2)isOpen方法用于获取驱动业务功能是否已经开启;

3)load方法用于清空驱动内部的设备模型缓存并重新加载设备列表;

4)add/update/remove方法用在设备模型变更时,将相关设备模型数据同步至驱动内部;

5)addListener/removeListener用来绑定/解绑事件的接听者;

6)getStatus/getStatusList方法用于获取单个或多个的设备状态。

ICameraDriver/ITrashcanDriver/IBroadcastDriver等为各个应用模块的驱动接口类,每个接口都定义了与其业务功能相匹配的属性、方法和事件。

EventListener为事件回调接口,定义了所有设备驱动基础的事件类型,各个应用模块应根据此基接口再定义对应的子接口(如上图ICameraListener接口所示),并在各应用模块的应用层代码中监听事件回调子接口的事件。

此外,步骤S2的数据库表中包括逻辑主键deviceId和连接参数的字符串,所述逻辑主键deviceId用于唯一标识设备,应用层代码通过逻辑主键deviceId查找设备驱动接口,进而操作设备;所述连接参数用于表示驱动或设备的通信标识信息。设备驱动接口中,对设备操作的方法都通过deviceId来唯一标识设备。因此,在设计数据库表时,设备模型表中应包含两个关键字段,一个是deviceId字段(可设置为逻辑主键),一个是设备连接字符串(即设备连接参数的字符串表现形式,此参数中包含厂家对设备的通信标识信息)。因此,当将设备模型加载至设备驱动后,设备驱动内部即存有了deviceId和厂家设备内部标识的对应关系,此时,应用层代码只需要通过deviceId来操作设备即可,避免了在应用层代码中通过不同厂家的设备内部标识来操作设备导致的混乱现象,如附图3所示。

此外,设备驱动的设计,采用的是适配器模式(adapter pattern),驱动中涉及到的方法及相关数据结构都应具备通用性,不与某个厂家硬绑定。

步骤S3中配置连接参数通过采用连接参数的自描述数据结构进行配置,连接参数采用键值对字符串的形式进行传递和保存,每个设备通道关联一个设备驱动实例和相应的驱动连接参数,每个设备关联一个设备通道和相应的设备连接参数。其中,驱动连接参数包括基于底层通信协议直接对接挂载设备时需要的本地IP地址和端口号,或是基于对接第三方平台时,需要的服务器IP地址、端口号、登录账号和密码,用于设备驱动实例的启动;设备连接参数包括设备访问过程中挂载设备的通信标识参数,用于表示设备的访问标识信息。驱动连接参数和设备连接参数还包括其他参数,如海康摄像头萤石云驱动中,驱动连接参数还需要包含AppKey和AppSecret字符串字段,用以区分各个用户的不同应用项目;如海康网络摄像头直连驱动中,驱动连接参数为空,而设备连接参数则需要包含网络摄像头的IP地址、端口号、用户名、密码和通道号,从而定位并访问各个网络摄像头数据。

本发明采用连接参数字段自描述简化设备参数配置,统一了各个厂家设备参数的编辑界面。

设备驱动需要相应的启动参数才能正常工作,如基于底层通信协议直接对接挂载设备的方式需要提供服务端绑定的IP地址和端口号,如基于第三方平台API对接的方式需要提供服务端平台软件的IP地址、端口号、登录账号及密码等,本发明将这部分参数称之为驱动连接参数。

设备的访问在不同的对接方式中,需要提供不同的通信标识信息才能正确定位,如基于海康萤石云的对接方式中,需要提供设备的GUID字符串进行标识;如基于硬盘录像机的对接方式中,需要提供设备的通道号进行标识等。本发明将这部分参数称之为设备连接参数。

为了方便上述两类连接参数的传递和保存,本方案采用键值对字符串的形式来表述连接参数,格式为:“{键名1}={值1};{键名2}={值2};...;{键名N}={值N};”。以海康NVR设备驱动为例,驱动连接参数的表述示例如下:“NvrAddress=192.168.0.100;NvrPort=8000;UserName=admin;Password=12345”,设备连接参数的表述示例如下:“ChannelNo=1;”。

本发明中采用驱动连接参数及设备连接参数的概念,实现对设备标识及访问的统一管理,并通过键值对字符串的形式统一连接参数的读写。

设备驱动实现类的实例,称之为设备通道(以下简称通道)。一个通道关联一个设备驱动实例及对应的驱动连接参数,应用软件可以同时创建多个设备通道,以实现同时监控和管理多个厂家设备的目的。

因不同厂家的驱动连接参数和设备连接参数不尽相同,如果按照传统的设计思路,静态地设计相关参数配置界面,需要为不同厂家的设备设计不同的参数配置界面,不利于后期扩展和维护。因此,本发明采用连接参数的自描述数据结构,结合动态参数配置界面,来简化驱动连接参数与设备连接参数的配置工作,统一了各个厂家设备参数的编辑界面。连接参数的自描述数据结构为动态参数配置,包括字段名称、最小值、最大值、值类型、数值长度、默认值、数值精度、数值单位名称,如表格1所示,表格1中给出了连接参数自描述结构字段说明。

当用户需要编辑驱动或设备连接参数时,首先调用相关内部函数获得对应的连接参数自描述结构对象数组,然后根据自描述结构解析连接字符串信息并动态创建对应的连接参数配置界面。最后,当用户编辑完连接参数内容后,再将连接参数各个字段的值拼接成连接字符串,保存至数据库表并同步设备驱动中。

连接参数的自描述数据结构采用元信息描述代码、配置文件或反射机制的方式进行简化、定义和提取。进一步的,对于像Java或C#等支持元信息表述及反射机制的高级语言,可以采用注解(Annotation, Java)或属性(Attribute, C#)方式将连接参数自描述信息包含在连接参数定义代码中,并通过反射机制实现自动提取,以实现连接参数的自动化管理;而如果是C语言等不支持反射机制的高级语言,则可采用配置文件(如JSON、XML、YAML等格式)的形式描述参数的元信息,并在程序启动时加载至程序的内存空间。本发明采用元信息描述代码、配置文件及反射机制,简化连接参数自描述结构的定义与提取。

以JAVA中反射机制的连接参数的自描述数据结构为例:

在JAVA反射机制的连接参数的自描述数据结构,通过DataField描述连接参数的信息,包括服务器IP、服务器端口、HTTP端口、登录账号、登录密码、保活时间。

以XML格式配置文件的元信息描述连接参数的自描述数据结构为例:

在XML格式配置文件的元信息描述连接参数的自描述数据结构中,海康NVR驱动连接参数包括ServerIP(服务器IP)、ServerPort(服务器端口)、HTTP Port(HTTP端口)、username(登录账号)、password(登录密码)、KeepAliveTime(保活时间),海康萤石云驱动连接参数包括appKey、appSecret、accessToken、keepAliveTime。

本发明中调用程序的流程如下:

1)启动程序,连接数据库表,加载设备列表及设备通道列表等信息;

2)创建设备通道,调用load方法加载对应的设备模型列表;

3)启动设备通道,开启设备监控功能;

4)开发应用,根据设备模型找到其对应的设备通道对象,调用驱动接口方法,实现设备数据/参数查询、设备控制等操作,并通过事件回调接口获取通道及设备的相关推送信息。

采用本方案,应用层代码对设备的访问都通过统一的驱动接口及标准化的数据结构进行访问,新设备的对接工作都集中在驱动层,无需修改应用层代码。本发明简化了智慧灯杆网关或配套平台软件对接各类挂载设备的实现代码,并实现了智慧灯杆系统各挂载设备厂家产品(如摄像机、LED大屏、网络音柱、一键呼叫、环境/气象传感器、单灯控制器等)的兼容并存访问。

以LED大屏控制卡为例,在参考熙讯、诺瓦、卡莱特等主流LED大屏控制卡对接资料的基础上,分析提取出该类型设备一般需要屏体开/关控制、节目下发/上传/播放/停止、资源下载/上传、工况查询、内容截图等功能接口,以及设备工作参数、屏体状态信息、节目格式等数据结构,再以此设计出对应的通用设备驱动接口。

在上述设备驱动设计完成之后,即可开始针对不同厂家产品的设备驱动开发工作。下面就熙讯、诺瓦和卡莱特三个实施例的后续实施过程分别进行说明。

实施例1:熙讯LED大屏控制卡对接

熙讯控制卡采用websocket+json协议对接的方式连接到服务端,因此,开发设备驱动时,驱动连接参数中需要包含服务端IP和端口号字段,而设备连接参数中则需要包含设备串号字段。

创建设备通道时,先从数据库表中加载该设备通道下的设备清单,然后根据驱动连接参数进行地址绑定,监听设备主动发起的websocket请求,一旦设备连接,则会产生对应的设备上线事件通知应用层;运行过程中,设备驱动内部不断监听各个设备的websocket连接及数据收发,一旦发现设备掉线,则产生设备掉线事件,而如果有数据到达,则会根据数据类型产生不同的事件通知;当应用层需要向指定控制卡发送指令时,则根据deviceId找到对应的websocket连接,再向设备发送对应格式的指令。

实施例2:诺瓦LED大屏控制卡对接

以连接诺瓦云实现设备连接为例,由于厂家服务器地址固定,因此,开发设备驱动时,驱动连接参数仅需提供账号和密码字段,而设备连接参数则需要提供设备串号字段。

创建设备通道时,先从数据库表中加载该设备通道下的设备清单,然后根据驱动连接参数连接至诺瓦云服务器,将所有设备的状态信息同步至本地缓存;运行过程中,后台线程周期性从云服务器中获取各个设备的状态,并根据从服务器中获取的设备状态进行事件推送;应用层如果有设备访问请求,则根据设备连接参数获得设备串号,再根据设备串号调用对应的云服务接口。

实施例3:卡莱特LED大屏控制卡对接

卡莱特控制卡采用云平台API +JSON数据格式的对接方式,驱动连接参数仅需提供云平台地址字段,而设备连接参数则需要提供登录账号与密码字段。

创建设备通道时,先从数据库表中加载该设备通道下的设备清单,然后连接至卡莱特云服务器,将所有设备的状态信息同步至本地缓存,同时创建HTTP REST服务地址,接收卡莱特服务器的消息推送;运行过程中,后台采用轮询+事件推送的方式,获取设备状态的变更,并产生相应的应用层事件推送;应用层如果有设备访问请求,则根据设备连接参数,直接调用对应的云服务接口。

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种智慧灯杆系统中软件高效对接各类挂载设备的方法
  • 一种智慧灯杆系统中软件高效对接各类挂载设备的方法
技术分类

06120113256252