面向智能家居消息中间件的设计与实现
2018-06-28付蔚杨鑫宇李威刘威蔡信露
付蔚 杨鑫宇 李威 刘威 蔡信露
摘 要:针对采用各种不同协议的智能家居设备无法互联互通的问题,文章依据中国智能家居产业联盟(CSHIA)标准,采用JMS设计规范和UPnP协议设计了一款面向智能家居的消息中间件。分块设计并实现设备管理、数据转换、WEB管理、消息处理和客户端接口五大功能模块。测试结果表明,软件设计可满足CSHIA标准的智能家居设备与应用程序的数据交互。
关键词:消息中间件;JMS;UPnP协议;互联互通
中图分类号:TP29 文献标志码:A 文章编号:2095-2945(2018)17-0039-02
Abstract: In view of the problem that smart home devices with different protocols can not interconnect with each other, this paper designs a message-oriented middleware for smart home based on JMS design specification and UPnP protocol according to China Smart Home Industry Alliance (CSHIA) standard, designing and implementing five function modules of equipment management, data conversion, WEB management, message processing and client interface. The test results show that the software design can meet the CSHIA standard of smart home devices and application data interaction.
Keywords: message-oriented middleware(MOM); JMS; UPnP; interconnection
引言
面向智能家居消息中间件的设计是将CSHIA中间件标准与消息中间件技术相结合,提出和划分了中间件的五大功能,即设备管理、数据转换、WEB管理、消息处理和客户端接口,使得应用程序通过消息中间件扩展至不同的操作系统和不同的网络环境,达成系统应用与智能家居之间的互通有无。
1 总体设计介绍
1.1 CSHIA中间件标准
CSHIA中间件标准是由中国智能家居产业联盟(China Smart Home Industry Alliance)于2014年7月发布的智能家居互联互通标准。CSHIA规范各设备生产厂商的子网关与主网关之间的数据交互模型。
1.2 总体架构
根据智能家居消息中间件的需求分析,设计的框架结构包含设备管理模块、WEB管理模块、数据转换模块、消息处理模块和客户端接口模块五种。
设备管理模块的中的UPnP协议通过设备寻址、设备发现、设备描述、事件触发等功能,将采集的信息转化为设备描述文档和服务描述文档,传递至数据转换模块[2]。数据转换模块将两类XML描述文件生成对应的DOM树,存入对应的两张数据表中,方便WEB管理模块从表中获取数据。而WEB管理模块分为前端后台两个方面,通过前台提供管理交互功能,对后台数据库进行修改与调用。消息处理模块则是将数据从数据库中取出,封装成规定的报文格式,将待处理的报文以消息队列的方式通过第三方程序接口进行发送与接收。
2 智能家居消息中间件模块设计
2.1 设备管理模块
2.1.1 设备发现
设备发现采用SSDP协议定义的M-SEARCH方法进行搜索请求,在底层网络不断进行搜索。一旦发现符合CSHIA标准的设备加入家庭网络,就会自动向DHCP申请规定的IP地址和端口号广播它的设备和服务,并获取该设备的描述信息。
2.1.2 设备描述
设备描述文档是一个XML格式的文档,由根节点及其子节点设备组成[3]。<基本属性>标签包含有设备类型deviceType、唯一识别号UDN和设备URL地址;
2.1.3 设备控制
设备控制采用SOAP协议,SOAP控制/反馈信息分为UPnP控制请求、UPnP控制响应和UPnP控制错误响应三种。SOAP通过HTTP协议传输,XML标记语言来编码来进行远程发送指令。
2.1.4 设备事件
设备管理模块通过GENA协议监听所有在线设备事件通知,同时使用NOTIFY方法发送事件通知[5]。
2.2 WEB管理模块
WEB管理模块为用户提供可视化管理界面,包括设备控制,设备删除,设备添加和设备状态四個功能。同时包含服务端和WEB端两个设计方面。
2.2.1 服务端设计
服务端负责将数据库的数据转发给前端页面,同时也要接收前端页面发过来的控制指令。通过WebSocket协议使用URI连接对前端的资源定位,使用onOpen()方法建立连接,在建立连接后调用onMessage()方法获取数据库的数据和接收前端页面的控制指令。在页面关闭后,会触发onClose()方法关闭前端与服务之间的连接[6]。
2.2.2 WEB端设计
WEB端设计采用HTML+CSS+JS搭建,通过WebSocket协议与服务端进行双向通信。前端设计与服务端的方法保持相应的映射关系,使用JS语言绑定四个事件,即onError事件、onOpen事件、onMessage事件和onClose事件。
2.3 数据转换模块
数据转换模块负责将采集回来的底层数据的DOM树转换为数据表的形式,然后传递给消息处理管理模块生成消息。
2.4 消息处理模块
消息处理模块负责将数据库中的数据封装成固定的报文格式,放入消息队列和消息主题中。模块大致分为三个功能,即消息生成、消息队列管理和消息订阅[8]。
3 测试与验证
根据智能家居中间件的功能设计,分别测试设备的发现、控制,消息的接收和发送功能,验证是否可以满足不同的设备连接,并可以在WEB界面进行观测。
设备发现功能测试:
在搭建好系统之后,嵌入智能家居消息中间件,系统可以自动发现家庭网络中的子网关1和其从属设备。
将设备全部入网,搭建好的WEB服务器通过智能家居中间件接收来自订阅主题的消息,消息订阅机制分为点对点通信模式和发布/订阅通信模式两种。
4 结束语
将智能家居消息中间件引入基于B/S架构的智能家居远程控制系统,通过智能家居消息中间件使得两个不同的网关在WEB平台上实现相互通信,验证了对符合CSHIA中间件标准设备的接入与控制。目前存在的问题在于智能家居消息中间件只针对符合CSHIA标准的产品,难以真正解决市面上应用各种不同协议和不同标准的智能家居产品互联互通的局面。对于其他标准产品,只有在后续工作中增加相应接口程序进行处理。
参考文献:
[1]李强.基于S3C6410智能家居网关的技术研究与设计[D].西安:西安科技大学,2014.
[2]马晓飞.VOD系统的UPnP控制点软件设[D].浙江:浙江大学,2007.
[3]靳新,谢进军.XML基础教程[M].北京:清华大学出版社,2016.
[4]崔尚森,张白一.Web应用开发技术:JSP[M].西安:西安电子科技大学出版社,2007.
[5]刘路.基于TIDavinci平台的高清网络数字摄像机软件设计与实现[D].武汉:华中科技大学,2015.
[6]彭灿华.J2EE项目开发与设计(第二版)[M].北京:中国铁道出版社,2016.
[7]陈颖,陈硕.基于UPnP与ZigBee的智能办公室研究[J].物联网技术,2014(10):26-29.
[8]徐文聪,徐慧,羊帥,等.基于消息中间件的远程医疗监护技术[J].指挥信息系统与技术,2014(1):52-57.
[9]侯刚.消息中间件TongLINK/Q的应用[J].电脑知识与技术,2014(14):3280-3282.