智能家居系统中往往会有远程控制部分,这些远程监控系统通常是基于单一C/S或B/S模式实现的,其功能和性能受到单一模式的限制,无法最大化满足用户需求。本文以家庭智能地暖控制系统为项目背景,基于现在流行的Node.js设计了一个C/S和B/S混合模式的远程监控系统,重点描述基于Node.js构架服务器的方法,并介绍其中网页与客户端部分的设计工具与方案。
一般的智能家居远程监控系统是以C/S 模式(客户机/服务器模式)或B/S 模式(浏览器/服务器模式)实现的,两种模式各有优缺点。
C/S 模式运行速度快,能在客户机上完成更多运算,减轻服务器负担。在家庭智能地暖系统中,客户端在移动平台上运行。问题在于,当今流行的移动操作系统很多,要适应不同用户的需要,就需开发不同版本的客户端,这大大增加了软件的开发和维护成本。
B/S 模式适用性更高,客户机只要运行浏览器,即可通过网络访问服务器来获取web 应用。Web 页面的开发维护更简单,只需在服务器端完成,软件成本低。但相对于B/S 模式,B/S 运行过需要传输更多数据,其运行效率较低,功能也有所限制[1]。
不同的用户在不同的情形下,可能有不同的使用需要。比如一个用户在使用电脑时,他可能更希望直接打开浏览器对系统进行远程监控;而在回家路上时, 他更希望使用自己手机上的软件实现远程监控。
本文将结合上述两种模式, 基于Node.js 开发C/S 和B/S 混合模式的远程监控系统, 此系统服务于家庭智能地暖系统。其中的客户端软件将使用QML 进行开发,web 页面则用HTML 实现。
2. 系统设计 家庭智能地暖系统有一个嵌入式控制终端,负责管理本地每个区域的温控器,终端与温控器间的通信使用Zigbee 技术。嵌入式终端通过自身的网络接口与局域网中的远程监控服务器建立网络连接,与服务器进行数据交互。远程监控服务器接入互联网中,互联网中的客户机可通过客户端或浏览器登录服务器,并通过服务器对本地的嵌入式控制终端实现监控。家庭智能地暖系统的结构如图1 所示。
3. 服务器设计 Node.js(简称Node)是一个建立在Chrome 的V8 JavaScript 引擎的服务器平台。Node 使用单线程、事件驱动、非阻塞I/O 来处理请求。相对于ASP.NET、PHP 等常见的服务器实现工具,Node 更加轻量,数据处理效率更高[2]。
Node 不需要依赖额外的服务器软件或运行库, 对于独立且小型的智能地暖系统来说, Node 无疑是更好的选择。
Node 有良好的开发生态和丰富的功能模块,给开发带来很多便利。Express.js (简称Express)就是一个被广泛使用的HTTP 服务器框架。
利用Express 可快速构建HTTP 网站, 且更好地实现URL 路由管理,