摘 要: 在介绍了家庭网络(HomeNet)发展概况以及消费总线(Consumer Electronic Bus)和公共应用语言(Common Application Language-)的基础上,详细描述了基于CEBus的家庭网络管理器的硬件接口和软件设计与实现,重点在于管理器的软件设计。
关键词: CEBus 家庭网络 用户界面 个性化定制
1 家庭网络概况
国外家庭网络(总线)的概念始于20世纪70年代。开始时各公司自定标准,各自为政,不同公司的产品互不兼容,导致市场的开拓和技术的进步极为缓慢。近十年来,遵循统一标准已成为业内的共识。目前,国际上公认的有影响的家庭网络标准有:美国标准X10、日本标准家庭总线(HomeBus)、欧洲标准安装总线(EIB)、澳洲奇胜(Clipsal)公司的C-BUS等,它们都各有侧重,有的总线仅仅限于灯光控制。1984年,美国电气工业协会的消费电器小组开始着手制定家电互联规范,并于1992年发布CEBus规范(EIA600),即消费总线[1][2]。1994年,成立了消费工业委员会,专门负责消费总线的有关事宜。CEBus得到了IBM、Honeywell、Microsoft、Intellon、Demosys、Lucent、Philips、Siements、XLSynergy等国际著名公司的支持。1999年2月,Demosys公司在美国加州展示基于CEBus的“Demosys墙”,以展示CEBus即插即用的互操作性能。来自6个不同公司的几十个产品安装在展示墙上,通过电源线通讯,这些产品构成协调一致的智能系统,每个产品都能够自动寻找到它应该控制的相应产品。由于遵循了统一的CEBus标准,不同厂家的产品达到了互联互操、即插即用的完美境界,最大限度地满足了家庭网络用户对易用性的苛刻要求。
国内家庭网络尚处于启蒙状态:方正的卓越Z系列、海信的海景二代、海尔的e家庭和网络家电、TCL的家庭信息显示器(HID)以及初露端倪的联想.home等等。这些有益的尝试,尽管为用户描述了一幅智能家居的美好前景,但是由于缺乏统一的标准、规范和接口协议,在更多意义上还只能算是一种概念性产品。
2 CEBus和CAL简介
消费总线(CEBus)是美国电气工业协会(EIA)的消费电子小组制定的家用消费产品的网络通讯标准,它描述了一种家庭电子产品之间的通讯方法,通过CEBUS协议可以实现家庭网络。CEBus采用了简化的OSI模型,分为物理层、数据链路层、网络层和应用层。CEBus是一个完全面向报文分组(packet)的对等网络,使用载波侦听多重访问和冲突检测与冲突分辨协议(CSMA/CDCR)。
CEBus在应用层定义了一种面向对象的、严格的设备描述语言CAL(Common Application Language EIA721),简称公共应用语言[1],其内容涵盖了家庭中可能拥有的家电。公共应用语言采用了面向对象的方法,把任意一个家电设备按照功能分解成几个预定义的对象模型。在面向对象的编程语言中,一个对象由数据和操作这些数据的函数组成。在消费总线中,这些对象也由数据(称为实例变量)和操作(称为方法)组成,不同的设备可以采用相同的对象,用相同的方法操作,但是控制结果随设备的不同而有不同的意义。
CAL用一种层次关系描述设备的功能。如图1所示。一个设备可以分成几个上下文,它们代表了这个设备按照功能分的子系统。上下文又被分为几个对象,每个对象代表了上下文中的一种控制功能,对象分为若干类,每一类代表一种共有的功能。CAL预定义了27个对象模型[1]。例如,类号为07的对象是模拟控制对象(Analog Control Object),它可以用来代表音量控制、温度调节或调光器。一个对象的具体功能完全由他所属的上下文决定。每个对象包含一定数量的实例变量。每个对象都能够解释执行方法,更新实例变量,并完成实际操作。
3 基于CEBus的家庭网络总体结构
由浙江大学系统工程研究所和合作伙伴联合开发的基于CEBus的家庭网络结构框架如图2所示。
从网络结构不难发现,独立的、分散的、单体测量装置是构成CEBus分布式网络的节点,因此CEBus家庭网络是一种典型的对等(peer to peer)模型结构。CEBus摒弃了传统的控制中心的概念,任一网络节点的失效都不会引起系统的瘫痪,换言之,系统具备高度自治的优良特性。
用户对设备有多种操作方式:通过计算机上的家庭网络管理器实现对所有设备的操作和设定;用自定义控制面板上按钮的功能,实现对其它设备的控制;用PDA等手持设备控制设备;用语音控制模块实现语音控制;可以在远程与嵌入式的家庭网关连接,从而实现远程操作。但最方便、最直观地实现所有家电的监视和控制,还是要使用可定制界面的家庭网络管理器。
4 家庭网络管理器的硬件接口
家庭网络管理器是通过一个CEBus适配器和家庭网络实现数据通讯的。家庭网络管理器硬件结构如图3所示。通过CEBus适配器,管理器维护一个实时数据库来实现设备信息的更新和保存。借助于一个内置的定时器,管理器每隔三分钟启动一个后台线程,自动从家庭网络上面读取新的设备信息,来更新数据库和用户界面。另外,当用户按下刷新按钮时,系统也会启动刷新线程,来更新数据库和用户界面。
家庭网络管理器通过下述方法实现设备信息的更新:
(1)发送广播消息,获取所有设备的地址。然后根据设备个数在用户数据库的设备表中增加新记录,并且将获得的设备系统地址和单元地址[1][2]保存到新记录的sys_addr和unit_addr字段中。
(2)根据设备表中每一条记录对应的系统地址和单元地址,发送命令获取上下文列表实例变量(Context_List)[1][2]的值。然后根据上下文的个数在上下文表中增加新记录,同时将读取到的各个上下文的序号和类号保存到新生成的上下文记录相应的字段中。
(3)根据上下文表中的每一条记录对应的上下文序号和类号,发送命令获取对象列表实例变量(Object_List)[1][2]的值。然后根据对象的个数在对象表中增加新记录,同时将读取到的对象序号和类号保存到新生成的对象记录相应的字段中。
(4)根据对象表中的每一条记录的对象类号在标准CEBus数据库中查找所有预定义的实例变量,并且为每一个预定义实例变量在实例变量表中增加新记录,写入新记录的name、label、type字段的值。然后逐个发送命令读取实例变量的值,并且将读取到的值保存到实例变量表中。
5 家庭网络管理器的软件设计与实现
这套软件主要包括两个功能界面:虚拟设备显示界面、定制设备显示界面。
5.1 虚拟设备显示界面
在第2节介绍CAL语言时已经提到,CAL预定义了27个对象模型。笔者给每个对象都编写了多种界面模型,例如图4中,(a)、(b)是对象模型二元开关(Binary Switch)的两种界面模型;(c)、(d)、(e)是对象模型多路元开关(Multi_state Switch)的三种界面模型。这样就可以用软件形象地表达每一种对象了。
对于普通用户来说,虚拟设备显示界面是最常用到的功能界面。当切换到这个界面时,根据用户选择的设备标识号,从用户数据库读入信息,根据组成设备对象的类型号,动态地恢复成为一个虚拟的设备控制面板,从而用户可以对家电进行形象化的监视和操作。如图5(a)所示,这是当空调动态显示时的虚拟设备面板。管理器读取到的四个需要显示的对象:启动(二路开关)、工作模式(多路开关)、风速(多路开关)、温度设定(模拟开关),根据四个对象的类型号,取得相应的缺省对象界面模型,从而组合成空调的虚拟控制面板。
值得一提的是,当用户改变了设备状态的时候,首先更新用户数据库的信息,然后,通过数据库的更新事件来实现家庭网络上实际设备的状态控制,而不是直接对每一个状态更新事件单独编写程序。这样一方面可以提高代码的重用率和可调试性,更为重要的是可以大大增强程序的模块化水平,从而提高程序的可维护性。
5.2 定制设备显示界面
在上一小节已经提到,对应CEBus预定义的27种对象,都编写了多种显示模型,并且为每一种对象都指定了一个缺省显示模型,从而系统会自动生成缺省设备控制面板。但是由于系统本身不具有智能,只是根据对象的类型号来选择对象显示模型,因而对于某个具体的设备来说,该缺省对象显示模型可能是不恰当甚至是不正确的,从而导致缺省设备显示面板的机械性。如图5中(a)图所示,由于启动(电源按钮)本身也是一个二路开关,因此在缺省控制面板中的启动对象显示为一个缺省二路开关,显得不是很直观。另外由于工作模式和风速对象都是多路开关类型,从而在缺省控制面板中,都是以旋钮开关显示的,风速对象不太符合人的习惯。
定制设备显示界面正是为了解决这个问题。定制设备显示界面可以实现设备显示面板的个性化定制,用户可以通过选择预定义的对象界面模型来定制由系统自动生成的缺省控制面板,从而生成个性化的设备显示面板。如图5中(b)图所示,通过简单的定制,启动按钮换成了熟悉的电源开关,而风速对象换成了形象化的垂直调节杆,从而实现整个设备控制面板的个性化定制。
个人计算机正在成为家庭中工作、通信、教育和娱乐的强大平台。与此同时,几乎在一夜之间,Internet逐渐成为信息交流的基本方式之一。正如把户外的信息和宽带娱乐资源(如Internet和有线电视)高速接入的需要不断增加一样,在家庭里,把家电设备进行数字化连接的需求也在迅速增长。当然可以通过局域网来实现家庭内部的连接,然而,在家中布置一个局域网成本太高,布线也比较复杂。于是,人们设计出利用现有的电话线或者电力线,来完成简单、高速和廉价的家庭网络。家庭网络的兴起和推广应用,将会带来一场家电市场的革命。
参考文献
1 CEBus Industry Coucil - CIC. EIA 600.81 Common Application Language (CAL) Specification,June 29th 1992
2 CEBus Industry Coucil - CIC.Home Plug & Play
3 CEBus Industry Coucil - CIC.EIA 600.82 CAL Context Description, June 29th 1992
4 Zhou Yong. CEBus Demostration System.www.hometoys.com, 2000.6
5 郑 奕,乐嘉锦.以数据库为核心——工控组态软件的设计与实现[J]. 兰州大学学报,1999;35(8)
6 马 茜,盖 刚,张勇.面向对象的软件设计基础[M].北京科海培训中心,1992
7 王盛青,胡正华,田忠和.Delphi高级技术在工业监控软件中的应用.微计算机与应用,1997;(3)
8 周苏.软件工程及其应用.天津:天津科技出版社,1992.
9 Ronald J.Norman.OBJECT_ORIENTED SYSTEMS ANALYSIS AND DESIGN.Prentice-Hall International, Inc
10 王 荃,金海东,李福中.工控组态软件实时数据库系统的设计与实现.化工自动化及仪表,2000;40(3)