面向智能家居消息中间件的设计与实现*
引言
面向智能家居消息中间件的设计是将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 设备发现
为此,利用自主设计加工的一种测试混凝土水及气体渗透系数的试验装置,可实现利用稳定渗流法,同时测定多个混凝土试件的水和气体渗透系数。经过试验性测量及与其它文献的结果比较,该装置结构相对简单、测定结果稳定性好。基于稳定渗流法的混凝土水(气体)渗透性测试的装置实物及基本原理示意图如图4。
机械结构主要由传送带、光电传感器和左侧方的漏斗构成。传感器1和2分别在进料区和烹饪区,用于判断电饭煲是否到达指定的区域。传感器3在传送带右侧作为限位开关,限制传送带转动方向,图1所示为电饭煲机械结构图。储料箱和大米清洗管道在墙体,此处不做进一步详述。
海兰有些忧心:“人人以为小主在潜邸时受尽恩宠,福泽深厚。如今妾身看来,怕却是招祸多于纳福。还请小主万事小心。”她微微黯然,“这些话不中听……”
2.1.2 设备描述
他的妻子觉得奇怪,问他:“这是你的家,你怎么还不进来呢?”那人说:“门口没有挂鞋,这不是我的家。”他的妻子无奈地问:“你难道也不认识我了?”那个人仔细地看了看妻子,这才恍然大悟。
设备管理模块通过GENA协议监听所有在线设备事件通知,同时使用NOTIFY方法发送事件通知[5]。
2.2.2 WEB端设计
2.1.4 设备事件
设备描述文档是一个XML格式的文档,由根节点及其子节点设备组成 [3]。<基本属性>标签包含有设备类型deviceType、唯一识别号UDN和设备URL地址;<action-Mode>标签表示结点采用的控制方式;<serviceList>表示设备提供的服务列表;<deviceList>表示下属节点的子设备列表,包含有多个<device>的子设备标签。当获取XML文件成功后,依据XML中的标签建立元素对象模型(Document Object Model,简称 DOM)树[4]。
2.1.3 设备控制
2.2 WEB管理模块
WEB管理模块为用户提供可视化管理界面,包括设备控制,设备删除,设备添加和设备状态四个功能。同时包含服务端和WEB端两个设计方面。
2.2.1 服务端设计
服务端负责将数据库的数据转发给前端页面,同时也要接收前端页面发过来的控制指令。通过WebSocket协议使用URI连接对前端的资源定位,使用onOpen()方法建立连接,在建立连接后调用onMessage()方法获取数据库的数据和接收前端页面的控制指令。在页面关闭后,会触发onClose()方法关闭前端与服务之间的连接[6]。
设备控制采用SOAP协议,SOAP控制/反馈信息分为UPnP控制请求、UPnP控制响应和UPnP控制错误响应三种。SOAP通过HTTP协议传输,XML标记语言来编码来进行远程发送指令。
市场经济环境复杂多变,企业客户类型也是多种多样。因此,信用信息管理流程不可能一成不变。目前,企业对信用信息进行管理的流程大致可以用图1表示。
WEB端设计采用HTML+CSS+JS搭建,通过WebSocket协议与服务端进行双向通信。前端设计与服务端的方法保持相应的映射关系,使用JS语言绑定四个事件,即on-Error事件、onOpen事件、onMessage事件和onClose事件。
消息处理模块负责将数据库中的数据封装成固定的报文格式,放入消息队列和消息主题中。模块大致分为三个功能,即消息生成、消息队列管理和消息订阅[8]。
2.3 数据转换模块
数据转换模块负责将采集回来的底层数据的DOM树转换为数据表的形式,然后传递给消息处理管理模块生成消息。
设备发现采用SSDP协议定义的M-SEARCH方法进行搜索请求,在底层网络不断进行搜索。一旦发现符合CSHIA标准的设备加入家庭网络,就会自动向DHCP申请规定的IP地址和端口号广播它的设备和服务,并获取该设备的描述信息。
2.4 消息处理模块
基于表3的排序结果,可以针对特定的大学生,分析影响其综合素质的因素,特别是涉及关键控制点的值,并剖析其产生的客观原因或主观原因,进而加以改进。
3 测试与验证
根据智能家居中间件的功能设计,分别测试设备的发现、控制,消息的接收和发送功能,验证是否可以满足不同的设备连接,并可以在WEB界面进行观测。
设备发现功能测试:
在搭建好系统之后,嵌入智能家居消息中间件,系统可以自动发现家庭网络中的子网关1和其从属设备。
将设备全部入网,搭建好的WEB服务器通过智能家居中间件接收来自订阅主题的消息,消息订阅机制分为点对点通信模式和发布/订阅通信模式两种。
家电控制的点对点通信测试如图1所示:
图1 家电控制WEB界面
环境显示的发布/订阅模式测试如图2所示:
图2 环境检测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.