基于IAIDL 的家庭網(wǎng)關(guān)設計與實(shí)現
用戶(hù)在遠程監控端 (如手機、萬(wàn)能遙控器)上打開(kāi)瀏覽器,輸入家庭網(wǎng)關(guān)的外部IP 號,經(jīng)權限確認后瀏覽器上將出現網(wǎng)關(guān)主頁(yè)面,選擇要控制或查詢(xún)的家電設備,或注冊新家電,然后填寫(xiě)HTML 表單信息并提交進(jìn)而控制家電、查詢(xún)MySQLite 中家電狀態(tài)信息及注冊新用戶(hù)。目前,uCLinux 中已包含了BOA 的源代碼,通過(guò)在boa.conf 和mime.types 文件中修改網(wǎng)頁(yè)存放的路徑以及CGI 程序存放的目錄,實(shí)現在uCLinux 中BOA 的WEB 服務(wù)。
IAIDL 編譯器模塊將逐條解讀事先由廠(chǎng)家按IAIDL 語(yǔ)法規則描述的信息家電的IAIDL 文件,編譯器將IAIDL 文件的關(guān)鍵信息提取出來(lái)并做一定的處理后,結果存儲到MySQLite 的表格里,以后遠程用戶(hù)端和設備之間將根據設備號通過(guò)網(wǎng)絡(luò )經(jīng)由數據庫完成交互。以甲公司生產(chǎn)的某品牌空調A 為例,其IAIDL 文件描述如下:
A 空調 is 空調>
{
enum switch=( 開(kāi),關(guān));
enum state=( 左右掃風(fēng),上下掃風(fēng));
[attribute: ‘ 廠(chǎng)家’]string 甲公司;
[attribute: ‘ 功率’]string 200W;
[function: ‘ 調溫度’]void SetTemperature(in int temperature[[0,40]]);
[function: ‘ 轉換狀態(tài)’]void SetState(in state oo)provided;
[function: ‘ 開(kāi)關(guān)’]void OnOff(in switch oo)provided;
}
4.3 專(zhuān)家協(xié)作系統設計及實(shí)現
專(zhuān)家協(xié)作系統將信息家電的協(xié)作信息作為它的知識庫存儲在嵌入式數據庫中,并通過(guò)自帶的推理機對這些協(xié)作規則進(jìn)行推理,用戶(hù)如果需要選擇信息家電間智能協(xié)作方式,可以在遠程終端或客戶(hù)端通過(guò)瀏覽器界面使用該系統,由推理機對協(xié)作規則匹配、比較得到判斷結果,將結果以HTML 頁(yè)面形式反饋到用戶(hù)端,專(zhuān)家協(xié)作系統推理正確后會(huì )調用與協(xié)作相關(guān)的信息家電API 接口來(lái)實(shí)現信息家電間的智能協(xié)作。下列語(yǔ)句是幾個(gè)信息家電協(xié)作的規則。
If (電視機 on) then DVD on;
If (門(mén)打開(kāi)) (time=17:30), then 燈打開(kāi);
4.4 嵌入式數據庫MySQLite 設計及實(shí)現
家庭網(wǎng)關(guān)數據庫MySQLite 中包含有三種類(lèi)型的數據表:用戶(hù)信息表、協(xié)作規則庫表和家電信息表。用戶(hù)信息表用于存儲用戶(hù)名稱(chēng)和密碼,以保證家庭網(wǎng)關(guān)的使用安全。協(xié)作規則庫表用于存儲可以智能協(xié)作的信息家電組信息,以及家電之間協(xié)作的動(dòng)作及規則。家電信息表主要存儲家電的運行狀態(tài)數據,主要與家電控制程序controller 、查詢(xún)程序query 進(jìn)行交互。下面的代碼主要說(shuō)明在家庭網(wǎng)關(guān)應用程序中是如何將客戶(hù)的注冊信息,通過(guò)CGI 程序寫(xiě)入數據庫文件IA_db 中表users 中的。
#include sqlite.h> // 其它頭文件略過(guò)2 sqlite *db=sqlite_open(“/home/liwenbo/jx44b0/uClinux_dist/user/mySQLite/IA_db”,0777,errmsg); //打開(kāi)數據庫語(yǔ)句void insert_device_list(char *table_name, int type_id, char *device_name, int device_ip) //用于處理新的信息家電注冊信息,將其插入MySQLite 中
基金資助項目名稱(chēng):傳感器網(wǎng)絡(luò )密鑰預分配方案的組合論研究(編號:10571052) 頒發(fā)部門(mén):國家自然科學(xué)基金委
{ //int i; //i 為最新注冊的信息家電id 號 //i=sqlite_last_insert_rowid(db)+1; printf(“/n table_name: %s type_id: %d device_name: %s ip: %dn”,.
table_name, type_id, device-name, device_ip); qry=sqlite_mprintf(“INSERT INTO users (type_id, device_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: %sn”,errmsg);
}
sqlite_close(db);
}
5.結束語(yǔ)
本實(shí)驗通過(guò)以上代碼,已經(jīng)基本實(shí)現了智能家庭網(wǎng)關(guān)中幾大主要模塊的功能,并已經(jīng)在A(yíng)RM7 平臺上得到模擬實(shí)驗結果,PC 機能通過(guò)瀏覽器發(fā)出家電監控請求,網(wǎng)關(guān)通過(guò)訪(fǎng)問(wèn)數據庫來(lái)獲得家電最新?tīng)顟B(tài)和屬性信息;新的家電加入網(wǎng)絡(luò )時(shí)能通過(guò)B/S 方式實(shí)現其在數據庫中的注冊;專(zhuān)家協(xié)作系統的推理機和數據庫中知識庫的使用結合,用于實(shí)現多個(gè)信息家電之間的智能協(xié)作。完善之后的系統將是集多種智能管理于一身的智能家庭網(wǎng)關(guān)系統,相信會(huì )獲得很好的市場(chǎng)前景。
2. 6.本文作者創(chuàng )新點(diǎn)
本文在傳統網(wǎng)關(guān)的設計基礎上,加入了適合嵌入式系統的嵌入式數據庫(MySQLite); 并創(chuàng )造性地將IAIDL 編譯器移植到家庭網(wǎng)關(guān)上,解決了不同品牌家電加入智能家居網(wǎng)絡(luò )時(shí)的異構問(wèn)題;此外,還首次將專(zhuān)家協(xié)作系統作為智能家庭網(wǎng)關(guān)的一個(gè)模塊添加進(jìn)來(lái),實(shí)現智能家居中的智能家電協(xié)作功能。
評論