薛冰, 温克欢, 张之涵, 魏恩伟, 刘仲夏
(1. 深圳供电局有限公司, 深圳 518001; 2. 深圳市康拓普信息技术有限公司, 深圳 518034)
智能家居控制平台是一种应用趋势,即利用先进的网络、计算机和无线通信等技术,通过特定的程序和平台将其联系成一个统一的整体,并能够远程控制家居中的各种家用电气设备[1]。该平台可以实现对设备的统一管理、远程监控和资源共享,极大地方便了生活、改善了的生活环境。
工业自动化水平的提高,远程控制成了应用越来越多的手段;通过远程控制系统可以访问家庭管理服务入口,并且家庭中的网站可以由计算机登录,并且可以通过Web浏览器容易地查询和控制家庭设备[2]。无论是从社会的角度来看,技术还是经济方面的考虑,设计一个基于Web方式的智能家居远程管理系统都将具有一定的意义。
智能家居指的是利用家庭网络连接设备,保持这些设备和住宅的协调,从而营造舒适和信息化的生活空间。智能家居可以将家庭内部所有的电气设备和信息设备连接起来,继而组成网络,科学管理家居生活的各个方面[3]。
智能家居优化人们的生活和环境,帮助人们有效地安排时间,节约各种资源,实现家电、照明等功能。具有定时控制和远程监控的功能。
智能家居系统大致可分为三个部分:家庭外部网络、家庭网关和家庭内部网络。智能家居的远程管理系统是指家庭内部各种信息设备通过家庭网关与家庭外部网络连接,在家庭网关中添加嵌入式Web服务器后,用户便可以通过浏览器端的界面实现对远方家庭的信息设备的查看和管理[4]。
家庭外网是指家庭对外能够通过网关与外部网络(如以太网、因特网、广域网)互联进行信息交换的一种崭新的组网和应用技术,从而实现对所有的家庭网络上的家电和设备进行使用、访问、控制和管理[5]。
家庭控制内部网络是指通过家庭内部网络连接的所有控制设备并负责所有与信息设备、住宅环境的查看和管理有关的服务平台,采用统一的通信协议,实现所有信息的传输[6]。智能家居组成如图1所示。
图1 智能家居示意图
CQRS(命令查询职责分离)由Greg Young提出,目前在领域驱动开发领域中被广泛使用。领域驱动开发则认为软件分析设计与实现应当从业务出发,使用同时包含数据和行为的充血模型,且仅仅视数据库为普通的持久化手段之一,而非系统的中心[7]。CQRS,在客户端就将数据的新增修改删除等动作和查询进行分离,前者称为命令(Command),调用命令服务(Command Service)对领域模型进行操作,而查询则会调用查询服务(Query Service)直接对数据进行查询。CQRS工作原理如图2所示。
图2 CQRS工作原理
2.2 JavaFX技术
JavaFx平台是一个富客户端平台解决方案,它能够使用应用程序开发人员轻松地创建跨平台的富客户端应用程序。在Java技术的基础之上,JavaFX平台提供了一组丰富的图形和媒体API与高性能硬件加速图形和媒体引擎,简化了开发数据驱动的企业客户端应用程序[8]。
JavaFX技术具有下列优点。
(1) 由于JavaFX平台是用Java编写的,Java开发人员可以使用现有的技术和工具来开发JavaFX应用程序。
(2) 因为Java是广泛使用的,所以很容易找到将JavaFX应用变成产品的开发人员。
(3) 因为JavaFX跟Java技术使用的是相同的服务端和客户端的平台,所以降低了应用企业解决方案所带来的风险。
(4) 因为上述优点,所以开发成本也会降低。
(5) JavaFX为开发者提供了一个创建跨平台企业级业务应用的开发框架和运行环境。
openHAB是系统所依赖的开源软件项目,提供了对虚拟设备进行控制的功能。它将物理硬件设备统一抽象为虚拟设备,然后在此基础上提供对虚拟设备进行控制的功能[9]。
在实际控制物理设备时,openHAB可以向事件总线发送对虚拟设备的控制命令、或者接收虚拟设备的状态更新;物理设备驱动则可以从事件总线接收虚拟设备控制命令,然后根据虚拟设备和物理设备之间的映射关系,对物理设备作出控制,然后再根据控制结果将虚拟设备状态更新发布到事件总线上[10]。openHAB这样的体系结构,理论上可以支持任何已有的智能家居解决方案或者任何硬件平台。
(1) 家庭内网组网方式选择
家庭的内部网络用于连接家庭内的家用电器、设备和传感器。目前,家庭中使用的网络技术有很多,如有线技术、无线技术(包括802.11、UWB、蓝牙、Zigbee等)和家庭网络(包括家庭数据网络和家庭)[11]。
(2) 远程管理方式选择
家庭外部网络可以是无线宽带网络、有线电视网络、电话网络和因特网。大多数采用比较成熟的联网技术[12]。家庭外部网络实现了本地上网工具接入网络,上网工具登录到家庭网关后可以管理家庭内部所有信息设备。
目前,远程管理的常用方法有遥控家用电器、拨拨固定电话、控制手机短信、控制家用电器、手机远程控制家用电器、PC遥控家用电器等[13]。
(3) 智能家居远程管理系统结构
上网工具和互联网的迅速发展,远程上网工具通过互联网与家庭网关互联,进一步实现基于Web方式的远程查看、操作、管理以及系统设备的添加和配置等功能的远程管理系统[14]。浏览器端的设备主要有3G智能手机、笔记本、台式机以及现在用户常用的iPad等上网工具。家庭网关具备TCP/IP网络通信能力,它提供网口与交换机连接,实现网口的扩展,再连接家庭中的路由器等网端设备,这样就可以实现家庭网关连接到互联网中。因此,家庭局域网上的任何上网工具都可以与其传递信息,进而家居中的信息设备可以得到控制。
(4) 智能家居远程管理系统的各个子系统
设计基于Web方式的智能家居的管理与控制系统,要实现家电的管理与控制、家庭设备的配置与控制以及实时音视频的管理等功能。通过这些功能的划分,智能化家庭系统可以分为以下几个子系统:智能照明控制系统、家庭电器控制系统、安全防盗系统和情景模式等[15]。
智能家居系统分成三部分:家庭外网、家庭网关和家庭内网。家庭网关用双核高性能开发板来实现,并在家庭网关上实现外网需要的服务器、数据库[16]。数据库里储存的数据即家庭内网的实时数据,通过三者的联合实现智能家居的远程管理系统,软件架构如下图3所示。
图3 软件架构图
(1) 嵌入式Linux操作系统的概述
微电子技术的发展以及人们对电子产品需求的增加,嵌入式设备也发展飞速,上也可以有LCD、键盘或者触摸屏,加载了嵌入式操作系统后,能实现网站的浏览、视频的观看以及邮件的转发等功能[7]。
(2) 嵌入式Linux系统开发流程
嵌入式系统的开发,需要将相应的终端设备连接到主设备中,这主要是通过开发相应的软件通过端口嵌入到主程序中以此来实现相应设备的互相通信。此外,仅仅依靠嵌入式设备的资源还不具有开发嵌入式软件的条件。在此前提下,可以通过以下方式实现嵌入式软件的开发:首先交叉开发模式;然后,编辑在主机设备上开发的程序;最后,编译并生成主程序可执行文件。嵌入式程序编译完成后复制到目标板OMAP3530上运行、验证程序。
嵌入式系统的开发过程主要有:安装主机LINUXOS、建立交叉编译环境、建立引导和加载程序、编译和移植Linux内核以及构建Linux根文件系统等。
智能家居远程管理系统的主要部分是家庭网关,选用OMAP3530处理器,并加入FPGA模块、以太网模块、Zigbee模块以及WCDMA模块等,构建了一个可以融合不同网络、处理家庭数据信息和控制信息的家庭网关。家庭网关中还扩展了另外几个功能模块,它们的功能分别是:FPGA模块和以太网模块:、Zigbee模块、WCDMA模块等。
以上模块的组合构成了功能丰富的家庭网关,实现了家庭内外网的互联,对于智能家居远程管理系统的建立创造了必要的条件,远程用户通过外网访问家庭网关,并通过内网实现控制家居生活,
随着网络的飞速发展,Web是嵌入式设备管理和交互应用的主要终端之一。
总体来说,嵌入式设备的资源有限,程序处理比较简单,因此不需要使用较大型服务器,如Boa、TTTPD、MIYNETHTPD、SHTTPD、LoTTDPD、GoaHand等。选择具有体积小、功能齐全、内存占用少、支持Linux作为嵌入式Linux Web服务器的Boa。然而,Boa服务器也是有缺陷的,它未提供CGI的分析头处理。
首先,移植嵌入式Boa服务器的环境为:PC机安装了Ubuntu8.04操作系统,交叉编译工具是arm-nong-linux-guneabi,目标板为OMAP3530Mini板。数据移植和配置Boa服务器步骤如下所示:Boa源码下载、安装需要工具bison和flex、修改文件、修改src/log.c、修改src/Boa.c、生成Makefile文件、修改Makefile、编译后生成Boa、Boa的配置、测试并运行Boa。
(1) 嵌入式数据库的选择和特点
为了将所有内部控制信息存储在家庭网关中,以便于Web服务器访问,需要将其存储到嵌入式数据库中。嵌入式数据库代码简单,无需配置,直接在应用程序中运行,占用较少的内存空间,还具有自适应性和自调整性,被广泛应用。
SQLite具有以下几方面的特点:运行时占用的资源很少,大部分内容支持现行相关标准;可以实现并列运行以满足多个读访问。
(2) 数据的移植
数据的移植过程如下:下载文件并解压、生成Makefile相关文件、修改Makefile文件、编译SQLite数据库和函数,生成需要的库函数和相应的头文件、把SQLite放在目标板、查询数据库是否可用、对移植的SQLite进行测试。
智能家居中Web平台管理系统为研究对象,以易移植、占用空间少、操作方便的嵌入式Boa服务器和嵌入式SQLite数据库为基础,以系统的软件方案设计与实现为工作重点。通过对该系统的研究,可以得出以下结论:
(1) 智能家居的远程管理系统需要实现以下几项主要功能:智能照明系统、家庭电器控制系统、安防系统和智能情景模式设置。实现这些功能首先要构建系统的开发平台,主要包括家庭网关的硬件平台的选择、软件平台的搭建、软件架构的设计和实现等。
(2) 智能家居管理系统中嵌入Web平台,首先需要选择服务器,并做好数据迁移的工作,在此基础上,还应该构建适当的数据库。