手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

基于IAIDL的家庭网关设计与实现

李文博; 刘宏; 朱匆; 刘先锋| 智能家庭网关,IAIDL编译器,专家协作系统| 2010-11-29
1287 收藏
分享到: 
每日精选
热门文章
热门方案

【中心议题】

  • 基于IAIDL提出了一种信息家电的家庭网关的设计方案
  • 介绍了本实验的部分实现代码

【解决方案】

  • 在传统网关的设计基础上,加入了适合嵌入式系统的嵌入式数据库(MySQLite)
  • IAIDL编译器移植到家庭网关上
  • 将专家协作系统作为智能家庭网关的一个模块添加进来

1 引言

信息家电就是利用电脑、电信和电子技术与传统家电相结合的创新产品,是为了使数字化与网络技术更广泛地深人家庭生活而设计的新型家用电器。嵌入式家庭网关是信息家电所处的家庭信息网络的核心部分,也是智能家居的心脏,它被用来连接信息家电网络和Internet外部网络,完成内外网络间不同通信协议的转换及家庭内各信息家电之间的智能协作,实现对家电设备的智能管理和远程控制。图1为该家庭网关的概要功能示意图。

2 信息家电网关开发平台及软件

在本文的家庭网关设计中,ARM 7作为家庭网关硬件平台。裁减并移植嵌入式操作系统uCLinux提供底层软件支撑。信息家电通过IAIDL(信息家电接口定义语言)向家庭网关注册,嵌入式数据库MySQLite存放每个家电的注册信息、参数值以及状态信息等。IAIDL编译器和专家协作系统,用于实现异构信息家电之间的协议转换,以及信息家电之间的智能协作。嵌入式WEB服务器BOA调用相应的CGI应用程序来执行远程监控操作。下面就来介绍一下在ARM 7开发平台下进行的基于IAIDL的信息家电家庭网关的设计与实现过程。

 

3 IAIDL编译器设计与实现

位于家庭网关上的IAIDL编译器主要用于实现家庭网络中各类信息家电的注册管理、控制管理及状态管理等基本服务。按照IAIDL规范书写的设备描述文件即IAIDL文件由各家电厂商提供,IAIDL的原料信息则由用户远程操作不同种类信息家电提供。我们将从IAIDL中提取出来的信息(以一种易记录、存储和使用的方式表示,称为中间信息)存储在网关上的数据库中,当用户对某设备发出操作请求时,我们先根据数据库中的相关信息在客户端生成一个相应的操作界面,用于反映该设备的状态和属性信息,用户选择执行完某一具体操作后,若设备的状态和属性发生了变化,数据库中相关数据表和客户机的操作界面将同步体现出来。而这种完成提取中间信息的工作和界面自动生成工作的软件就是本文中要加入家庭网关的IAIDL编译器的接口解释器和界面解释器部分。图2IAIDL编译器在家庭网关中的功能结构图。

IAIDL编译器是采用lexyacc实现的。它们是特意为编写编译程序和解释程序的人设计的工具,适用于在输入中查找模式或者拥有输入或命令语言的任何应用程序。下列程序段是IAIDL使用语法分析器yacc在定义段的部分内容(接口解释器):

%%

S:A B{printf("S reduced!\n");

//关闭数据库

close_database();}

;

A:P IS'<'P'>'{//提取设备名和设备类型

device_name=$1;type_name=$3;

 

//检测该类型是否已经存在于设备类型表中

flag=check_type(type_name);……

//向设备类型表中添加新的类型信息

insert_device_type("device_type","type_name",type_name);

……;};

4智能家庭网关体系结构

智能家居网关是家庭信息网络的核心部分,它被用来连接整个家庭信息网络的中心控制服务器和内外网,完成内外网络间不同通信协议的转换及家庭内各信息家电之间的智能协作,实现对家电设备的智能管理和远程控制。图3为该家庭网关的体系结构。

 

4.1 BOA结构设计及实现

用户在远程监控端(如手机、万能遥控器)上打开浏览器,输入家庭网关的外部IP,经权限确认后浏览器上将出现网关主页面,选择要控制或查询的家电设备,或注册新家电,然后填写HTML表单信息并提交进而控制家电、查询MySQLite中家电状态信息及注册新用户。目前,uCLinux中已包含了BOA的源代码,通过在boa.confmime.types文件中修改网页存放的路径以及CGI程序存放的目录,实现在uCLinuxBOAWEB服务。

4.2 IAIDL编译器设计及实现

IAIDL编译器模块将逐条解读事先由厂家按IAIDL语法规则描述的信息家电的IAIDL文件,编译器将IAIDL文件的关键信息提取出来并做一定的处理后,结果存储到MySQLite的表格里,以后远程用户端和设备之间将根据设备号通过网络经由数据库完成交互。以甲公司生产的某品牌空调A为例,IAIDL文件描述如下:

A空调is<空调>

{

enum switch=(,);

enum state=(左右扫风,上下扫风);

[attribute:‘厂家’]string甲公司;

[attribute:‘功率’]string 200W;

[function:‘调温度’]void SetTemperature(in int temperature

[[0,40]]);

[function:‘转换状态’]void SetState(in state oo)provided;

 

[function:‘开关’]void OnOff(in switch oo)provided;

}

4.3专家协作系统设计及实现

专家协作系统将信息家电的协作信息作为它的知识库存储在嵌入式数据库中,并通过自带的推理机对这些协作规则进行推理,用户如果需要选择信息家电间智能协作方式,可以在远程终端或客户端通过浏览器界面使用该系统,由推理机对协作规则匹配、比较得到判断结果,将结果以HTML页面形式反馈到用户端,专家协作系统推理正确后会调用与协作相关的信息家电API接口来实现信息家电间的智能协作。下列语句是几个信息家电协作的规则。

If(电视机on)then DVD on;

If(门打开)&(time=17:30),then灯打开;

4.4嵌入式数据库MySQLite设计及实现

家庭网关数据库MySQLite中包含有三种类型的数据表:

用户信息表、协作规则库表和家电信息表。用户信息表用于存储用户名称和密码,以保证家庭网关的使用安全。协作规则库表用于存储可以智能协作的信息家电组信息,以及家电之间协作的动作及规则。家电信息表主要存储家电的运行状态数据,主要与家电控制程序controller、查询程序query进行交互。下面的代码主要说明在家庭网关应用程序中是如何将客户的注册信息,通过CGI程序写入数据库文件IA_db中表users中的。

#include<sqlite.h>//其它头文件略过2

sqlite*db=sqlite_open(“/home/liwenbo/jx44b0/uClinux_dist/

user/mySQLite/IA_db”,0777,&errmsg);

//打开数据库语句

void insert_device_list(char*table_name,int type_id,char

*device_name,int device_ip)

 

//用于处理新的信息家电注册信息,将其插入MySQLite

{//int i;//i为最新注册的信息家电id

//i=sqlite_last_insert_rowid(db)+1;

printf(“/n table_name:%s type_id:%d device_name:%s

ip:%d\n”,.

table_name,type_id,device-name,device_ip);

qry=sqlite_mprintf(“INSERT INTO users(type_id,de-

vice_name,device_ip)”

VALUES(‘%d’,upper(‘%q’),’%q’)”,

type_name,type_id,device_name,device_ip);

ret=sqlite_exec(db,qry,NULL,NULL,&errmsg);

if(ret!=SQLITE_OK)

{

printf(stderr,”SQL error:%s\n”,errmsg);

}

sqlite_close(db);

 

}

5结束语

本实验通过以上代码,已经基本实现了智能家庭网关中几大主要模块的功能,并已经在ARM7平台上得到模拟实验结果,PC机能通过浏览器发出家电监控请求,网关通过访问数据库来获得家电最新状态和属性信息;新的家电加入网络时能通过B/S方式实现其在数据库中的注册;专家协作系统的推理机和数据库中知识库的使用结合,用于实现多个信息家电之间的智能协作。完善之后的系统将是集多种智能管理于一身的智能家庭网关系统,相信会获得很好的市场前景。

本文作者创新点:本文在传统网关的设计基础上,加入了适合嵌入式系统的嵌入式数据库(MySQLite);并创造性地将IAIDL编译器移植到家庭网关上,解决了不同品牌家电加入智能家居网络时的异构问题;此外,还首次将专家协作系统作为智能家庭网关的一个模块添加进来,实现智能家居中的智能家电协作功能。

点赞

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号