基于对象的智能家居网关通讯接口框架的制作方法

文档序号:11148009阅读:601来源:国知局
基于对象的智能家居网关通讯接口框架的制造方法与工艺

本发明涉及通讯接口框架技术领域,具体地,涉及一种基于对象的智能家居网关通讯接口框架。



背景技术:

随着经济的发展,人们期望拥有一个安全、舒适、节能和便捷的家居环境,智能家居系统通过计算机技术、嵌入式技术、传感器技术、网络通讯技术的融合,及远程监控、安全防范、照明控制、网络连接的功能与一体,满足信息时代人们对高水平生活的追求。在智能家居系统中,智能家居网关是整个系统的核心。智能家居网关要连接智能家居系统中各种不同接口,不同协议数量众多的智能设备,当智能家居网关与其他智能设备组成工作网路后,即可实现智能家居系统的远程控制、联动控制、定时控制、编程控制,以及人机互动控制等功能。当前智能家居系统的中的各类设备数量众多,智能家居网关要和开关照明、窗帘、地暖、空调、门锁、门口对讲及安防系统、蓝牙室内定位系统、智能白色家电这些设备进行对接,而且对接的硬件接口也各异,有KNX接口、RS232接口、RS485接口、有干接点输入输出接口、Ethernet接口、WIFI接口、ZigBee接口、蓝牙接口。协议除了比较标准化的KNX协议和Modbus协议外,很多智能家居系统设备厂商都使用了自己定义的协议。这就造成了各个设备互连上的兼容性问题。而基于ARM-Linux智能家居网关的出现解决了这个问题。基于ARM内核的CPU,其功耗小,外围接口丰富,Linux操作系统是著名的开源的操作系统,非常方便根据需要进行裁剪,并且基于Linux开源操作系统有大量开源成熟的软件可以使用,因此基于ARM-Linux架构的智能家居网关非常符合智能家居系统的需求。

现在市场上智能家居网关,硬件大多是基于X86,操作系统是Widonws,功耗大,需要加装风扇进行散热,可靠性差。而且每当需要连接一个新的智能家居设备,都需要根据智能家居设备的通讯协议开发新的通讯接口,并更新智能家居网关程序,而更新通常需要专业的人员去更新设置,灵活性,易用性不够。另外很多网关 没有断线重连的功能,就是说当智能网关所连接的设备因为故障或者是人为地断电重启后,智能家居网关不能自动和这些设备建立连接后进行通讯。必须给智能家居网关复位重启才能恢复正常的通讯功能。而基于ARM-Linux智能家居网关则不存在上述问题,ARM-Linux网关集成了通用程度比较高的KNX协议接口和Modbus协议接口以外,对于第三方设备的支持非常便捷和容易,只要能获得第三方设备的通讯协议就可以实现。获得第三方设备的通讯协议后需根据相应的模板撰写XML文件,并用该XML文件描述协议的特性,将该XML文件复制到智能网关制定目录中,并重启智能网关,智能网关就可以和第三方的设备进行正常通讯了。而且对于通讯故障的设备具备自动恢复通讯的功能。基于ARM-Linux架构的智能网关具有KNX、RS232、RS485、GPIO、Ethernet等多种硬件通讯接口,通过这些硬件接口可以连接各种各样不同种类的设备。鉴于这些接口不同的工作方式,比如KNX是基于事件驱动的通讯总线,RS232是基于全双工通讯接口,RS485是基于半双工通讯接口,GPIO是基于查询的通讯接口,Ethernet是全双工通讯接口。为此亟需设计了一种可以兼容以上各种硬件接口的通讯接口框架。

目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。



技术实现要素:

本发明针对现有技术中存在的上述不足,提供了一种基于对象的智能家居网关通讯接口框架,该通讯接口框架可以兼容上各种硬件接口的通讯接口框架,通过这种通讯接口框架可以快速的支持各种接口、各种格式的通讯协议,和众多厂家的设备进行互连通讯。

为实现上述目的,本发明是通过以下技术方案实现的。

一种基于对象的智能家居网关通讯接口框架,包括硬件接口模块、通讯协议模块和数据读写模块;所述通讯协议模块与硬件接口模块相连接,所述数据读写模块与通讯协议模块相连接;

其中:

所述硬件接口模块,通过将实际的硬件接口抽象为接口对象Interface,实现硬件通讯接口连接;

所述通讯协议模块,通过将通讯协议抽象为驱动对象Driver,实现存放硬件接口模块连接的硬件通讯接口下同时支持的通讯协议驱动程序;

所述数据读写模块,通过将连接设备上的数据点抽象为数据点对象DataTag,实现对通讯协议的报文读写。

所述通讯协议模块与硬件接口模块相连接,用于获取硬件接口模块Interface的使用权,所述通讯协议模块与数据读写模块相连接,用于获取数据读写模块需要处理的DataTag。

优选地,所述硬件接口模块设有用于设置Interface的Interface单元,所述Interface单元包括服务器工作模式和客户端工作模式,其中:

所述服务器工作模式用于实现KNX总线协议、UDP协议和TCP协议下的硬件通讯接口连接;

所述客户端工作模式用于实现Modbus协议下的硬件通讯接口连接;

对于RS485总线协议和RS232总线协议的硬件通讯接口连接,根据连接设备的工作方式选择接Interface单元的工作模式:当连接设备的工作方式为事件通知Event时,选择Interface单元的服务器工作模式;当连接设备的工作方式为轮询POLL时,选择Interface单元的客户端工作模式。

所述Interface的对象具有打开、关闭、发送、接收的功能和方法。

所述通讯协议模块设有Driver链表单元,所述通讯协议驱动程序存放于Driver链表单元。

所述通讯协议驱动程序包括通讯驱动主程序eHomeEngine和通讯驱动更新程序*.so文件;所述通讯驱动主程序eHomeEngine通过调用通讯驱动更新程序*.so文件完成增加新的通讯协议驱动程序。

所述数据读写模块包括读取链表单元和写入链表单元,所述读取链表单元用于存放需要读取的DataTag,所述写入链表单元用于存放需要写入的DataTag。

所述DataTag的对象包括数据的地址、类型、格式、读写属性以及重读次数。

所述数据依赖于具体的连接设备。

所述DataTag中的所有Tag点,通过Tag目录TagDirectory建立Tag.ID和Tag的映射。

通讯协议模块的Driver链表单元用于获得Interface的使用权,并从数据读写模块保存DataTag的读取链表单元和写入链表单元获取需要处理的DataTag对象;

通讯协议模块获取到需要处理的DataTag对象后,根据连接设备的通讯协议实现报文的打包,并调用Interface对象的发送方法将构建好的报文发送出去;

通讯协议模块调用Interface对象的接收方法接收连接设备的应答,在接收到的应答数据中查找、校验是否有正确的报文:

-如果有正确的报文,就将报文中的数据解析出来放到DataTag对象中;

-如果没有正确的报文,则根据是否设置了DataTag对象中的重读参数进行报文的重新读取和/或写入。

优选地,设置连接设备的写入优先权高于读取优先权,通讯协议模块的Driver链表单元从数据读写模块保存DataTag的读取链表单元和写入链表单元获取需要处理的DataTag对象时,先从写入链表单元中获取DataTag。

与现有技术相比,本发明具有如下有益效果:

1、本发明通过对智能家居网关和各种智能家居设备的通讯进行抽象,解决了现有技术中没有解决的兼容问题,使设备连接更加方便;

2、本发明结构可靠、灵活性强、简单易用,可以兼容上各种硬件接口的通讯接口框架,通过这种通讯接口框架可以快速的支持各种接口、各种格式的通讯协议,和众多厂家的设备进行互连通讯;

3、本发明填补了现有技术中关于该通讯接口框架的空白,适合推广。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为通讯接口框架的结构图;

图2为通讯协议驱动程序关系示意图;

图3为通讯接口框架Json树形图。

具体实施方式

下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

实施例

本实施例提供了一种基于对象的智能家居网关通讯接口框架,包括硬件接口模块、通讯协议模块和数据读写模块;所述通讯协议模块与硬件接口模块相连接,所 述数据读写模块与通讯协议模块相连接;

其中:

所述硬件接口模块,通过将实际的硬件接口抽象为接口对象Interface,实现硬件通讯接口连接;

所述通讯协议模块,通过将通讯协议抽象为驱动对象Driver,实现存放硬件接口模块连接的硬件通讯接口下同时支持的通讯协议驱动程序;

所述数据读写模块,通过将连接设备上的数据点抽象为数据点对象DataTag,实现对通讯协议的报文读写;

所述通讯协议模块与硬件接口模块相连接,用于获取Interface的使用权,所述通讯协议模块与数据读写模块相连接,用于获取需要处理的DataTag。

进一步地,所述硬件接口模块设有用于设置Interface的Interface单元,所述Interface单元包括服务器工作模式和客户端工作模式,其中:

所述服务器工作模式用于实现KNX总线协议、UDP协议和TCP协议下的硬件通讯接口连接;

所述客户端工作模式用于实现Modbus协议下的硬件通讯接口连接;

对于RS485总线协议和RS232总线协议的硬件通讯接口连接,根据连接设备的工作方式选择接Interface单元的工作模式;当连接设备的工作方式为事件通知EVENT时,选择Interface单元的服务器工作模式,当连接设备的工作方式为轮询POLL时,选择Interface单元的客户端工作模式。

进一步地,所述Interface的对象具有打开、关闭、发送、接收的功能和方法。

进一步地,所述通讯协议模块设有Driver链表单元,所述通讯协议驱动程序存放于Driver链表单元。

进一步地,所述通讯协议驱动程序包括通讯驱动主程序eHomeEngine和通讯驱动更新程序*.so文件;所述通讯驱动主程序eHomeEngine通过调用通讯驱动更新程序*.so文件完成增加新的通讯协议驱动程序。

进一步地,所述数据读写模块包括读取链表单元和写入链表单元,所述读取链表单元用于存放需要读取的DataTag,所述写入链表单元用于存放需要写入的DataTag。

进一步地,所述DataTag的对象包括数据的地址、类型、格式、读写属性以及重读次数。

进一步地,所述数据依赖于具体的连接设备。(例如:连接设备为开关灯,那么这里所描述的数据就是开关和亮度。)

进一步地,所述DataTag中的所有Tag点,通过Tag目录TagDirectory建立Tag.ID和Tag的映射,方便Interface单元查询Tag点和改变Tag点的值。

进一步地,硬件接口模块、通讯协议模块以及数据读写模块之间主要实现的信息交互功能为:

通讯协议模块的Driver链表单元获得硬件接口模块Interface的使用权后,从数据读写模块保存DataTag的读取链表单元和写入链表单元获取需要处理的DataTag对象;

通讯协议模块获取到需要处理的DataTag对象后,根据连接设备的通讯协议实现报文的打包,并调用Interface对象中的发送方法将构建好的报文发送出去;

通讯协议模块调用Interface对象中的接收方法接收连接设备的应答,在接收到的应答数据中查找、校验是否有正确的报文:

-如果有正确的报文,就将报文中的数据解析出来放到DataTag对象中;

-如果没有正确的报文,则根据是否设置了DataTag对象中的重读参数进行报文的重新读取和/或写入。

进一步地,设置连接设备的写入优先权高,通讯协议模块的Driver链表单元从数据读写模块保存DataTag的读取链表单元和写入链表单元获取需要处理的DataTag对象时,先从写入链表单元中获取DataTag。

具体地,

本实施例提供的基于对象的智能家居网关通讯接口框架,将智能家居网关和各种智能家居设备的通讯进行了抽象,将实际的硬件接口抽象为Interface,将通讯协议抽象为Driver,而将设备上的数据抽象为DataTag,Interface对象具有打开、关闭、发送、接收等基本的功能和方法,Interface(Interface单元)有两种工作模式,一种是Server(服务器)工作模式,一种是Client(客户端)模式,对于KNX总线和UDP/TCP Server,采用的是Server工作模式,对于Modbus协议则采用的是Client工作模式,对于RS485/RS232模式,采取哪种工作模式取决连接设备的工作方式。而且Interface对象里面包括一个Driver的链表,用于存放该硬件接口下可以同时支持的通讯协议驱动程序,设计该链表的目的是用来解决在一条总线上,可以同时支持和不同协议的智能家居设备进行通讯(前提是该总线上所有的通讯参数必须一 致,包括通讯速率、数据位、奇偶校验和停止位)。每个Driver对象下面存在两个链表,一个链表用来保存需要读取的DataTag(读取链表),一个链表中保存需要写入的DataTag(写入链表),当Driver获得Interface的使用权后,从保存DataTag的两个链表获取需要处理的DataTag对象(向设备写入优先权高,所以先从保存写入DataTag的链表中获取DataTag),获取到DataTag后根据设备的通讯协议实现报文的打包,然后调用Interface的发送方法将构建好的报文发送出去,然后调用Interface的接收方法(接收函数)接收硬件设备的应答后,在接收到数据中查找、校验是否有正确的报文,如果有正确的报文就将报文中的数据解析出来放到DataTag对象中,如果没有正确的报文,则根据是否设置了重读参数进行重新读取/写入。DataTag对象则是对各类设备上所有的数据点进行抽象,DataTag对象包括了数据的地址、类型、格式、读写属性、重读次数。

通讯驱动主程序eHomeEngine,主要功能如下:

(1)启动时解析Xml/Jason配置文件;

(2)解析Xml/Jason文件,根据配置文件内容初始化硬件端口并加载所使用的驱动动态库文件*.so;

(3)根据Xml/Jason文件,动态创建多个数据点,并将这些数据点进行分类归属具体的驱动程序;

(4)启动通讯线程,通过硬件端口和现场实际的设备进行通讯;

(5)通过LedIODrv软件模块驱动Led进行显示,并接收外部的按键输入操作;

(6)通过libComSockDrv软件模块第三方软件进行通讯,通过该接口,第三方软件程序可以读/写eHomeEngine中的数据点,当eHomeEngine中的数据点的值发生变化时,可以通过该接口模块主动通知。

通讯驱动更新程序*.so文件,在这些*.so文件中实现了具体的协议内容:

(1)为了提高通讯协议驱动程序的可扩展性和维护性,将通讯协议驱动程序分为两个部分:通讯驱动主程序eHomeEngine和通讯驱动更新程序*.so文件;

(2)当主机新增加了一个通讯协议驱动程序时,只需开发一个新的通讯驱动更新程序*.so文件给通讯驱动主程序eHomeEngine调用即可,而不必重新编译、更新通讯驱动主程序eHomeEngine,如图2所示。

对于项目中定义的所有Tag点,要有一个TagDirectory建立Tag.ID和Tag的映射,方便Interface接口快速查询Tag点和改变Tag点的值。

关于接口架构,可以用Json树形图来表示,如图3所示。

本实施例提供的基于对象的智能家居网关通讯接口框架,通过对智能家居网关和各种智能家居设备的通讯进行抽象,解决了现有技术中没有解决的兼容问题,使设备连接更加方便;结构可靠、灵活性强、简单易用,可以兼容上各种硬件接口的通讯接口框架,通过这种通讯接口框架可以快速的支持各种接口、各种格式的通讯协议,和众多厂家的设备进行互连通讯;补了现有技术中关于该通讯接口框架的空白,适合推广。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1