摘要:家電控制是智能家居系統(tǒng)的重要組成部分,而隨著智能手機的普及和3G網(wǎng)絡技術的快速發(fā)展,以智能手機作為智能家居遠程控制的終端設備是一個非常理想的選擇。目前在全球范圍內(nèi),Android是一個市場占有率高,免費,開放的智能設備操作系統(tǒng)。因此,本系統(tǒng)以Android智能終端作為客戶端,使用UDP網(wǎng)絡傳輸協(xié)議,以實現(xiàn)家電遠程控制系。
關鍵詞:Android;家電控制;智能家居;UDP協(xié)議
在科學技術飛速發(fā)展的今天,人們的物質(zhì)條件和生活水平都在不斷地提高,人們對家居環(huán)境的要求也在不斷地增長。家居不僅要舒適更加需要安全和便捷。遠程家電控制,使人們可以隨時隨地控制家中設備,給人們帶來便捷的生活方式。傳統(tǒng)的智能家居系統(tǒng)中,大多基于Int ernet的遠程控制,并采用PC做監(jiān)控終端,受到Internet地域的限制,使用起來不是很方便。但隨著智能手機的普及,由于手機體積小便于攜帶,智能手機作為智能家居的控制終端是大勢所趨。
1 Android介紹
Android是Google公司在2007年11月正式推出的一款開源的操作系統(tǒng)。Android系統(tǒng)在它推出后僅僅兩年的時間,就打敗了稱霸智能手機市場10年的諾基亞Symbian成為全球最受歡迎的手機操作系統(tǒng)。
1.1 Android的安全機制
Google為Android引進了以下特有的安全機制:應用程序權限機制,組件包裝和數(shù)字簽名。
(1)應用程序權限機制
Android把每個權限定義成一個字符串,開發(fā)過程中可以通過在XML Manifest文件中進行權限的聲明和請求。權限定義分為兩個類別,一類是應用程序在執(zhí)行時所需要請求的權限,另一類是被其他組件請求的權限。
(2)組件包裝
Android通過定義組件的“exported”屬性來實現(xiàn)把組件包裝在程序內(nèi)容內(nèi)。將“exported”屬性設置為“false”就是拒絕被其他外部程序調(diào)用。
(3)數(shù)字簽名
Android的所有應用程序必須有數(shù)字證書,這個數(shù)字證書是可以自簽名的。
1.2 Android的系統(tǒng)框架
如圖1所示Android的系統(tǒng)框架由4個部分組成:Linux內(nèi)核層、系統(tǒng)運行庫層、應用程序框架層和應用程序?qū)印?/p>
(1)Linux內(nèi)核層
Android的Linux內(nèi)核層是基于Linux2.6的,它是介于硬件層和其他軟件組的一個抽象層次。提供內(nèi)存管理、安全性、進程管理、驅(qū)動模型、網(wǎng)絡組等核心服務。
(2)系統(tǒng)運行庫層
這一層分成兩個部分,系統(tǒng)庫和Android運行時庫。
系統(tǒng)庫是應用層框架庫的支撐。它起到了紐帶的作用。它主要負責2D和3D繪圖、顯示合成和支持多種常用的音頻、視頻格式錄制和回放等功能。
Android運行時庫又包括核心庫和Dalvik虛擬機兩部分。核心庫提供了Java語言核心庫內(nèi)的大部分功能;Dalvik虛擬機是Android重新設計的一款虛擬機。Dalvik可以在消耗較少的資源情況下,使一臺設備同時運行多個虛擬機程序。
(3)應用程序框架層
應用程序框架層為開發(fā)者提供開發(fā)所需的各種API,常用的組件有:UI組件、Content Providers(提供一種使應用程序之間可以實現(xiàn)數(shù)據(jù)互相訪問和共享的服務)、資源管理(管理字體、圖片、組件ID等)、活動管理(它管理了整個程序的生命周期)等。
(4)應用程序?qū)?br />
應用層是和用戶交互的一個層次,用戶可以看得見和操作的一些應用。Android本身提供了桌面,聯(lián)系人,撥打電話,瀏覽器等很多基本的應用程序。開發(fā)人員可以使用應用框架提供的API編寫自己的應用程序。
2 智能家居遠程家電控制系統(tǒng)的組成
整個系統(tǒng)主要包括3個部分:遠程控制終端(Android手機或者平板電腦),服務器和家電控制器。先由遠程終端發(fā)送帶有控制命令的數(shù)據(jù)包到服務器,當服務器收到控制指令之后,再由服務器發(fā)送控制命令到相應的家電控制器上。圖2是遠程家電控制系統(tǒng)的結(jié)構圖。
在本文中,主要介紹控制終端的設計,下面簡單地介紹一下服務器和家電控制終端。服務器收到命令數(shù)據(jù)時,通過設備類型和子設備號來識別是哪個設備的控制命令,然后將相應的控制命令發(fā)送到相應的控制器上。具體的幀格式定義,會在下一章節(jié)中講解。對于家電控制器,分為兩種。一種是簡單控制電路的通斷來控制電器的控制器,主要可控制燈光、冰箱、排風扇等家電,一種是模擬紅外遙控器發(fā)出信號的控制器,主要可控制空調(diào)、電視機等使用紅外遙控器的家電。我們有了家電控制器之后,就可以在不對家電做任何的改動的情況下,對家電進行控制。
3 終端程序設計
3.1 傳輸協(xié)議的選擇
在智能家居中的應用原則中,TCP和UDP作為目前最常用到的網(wǎng)絡通信協(xié)議,可以看出TCP是基于連接的協(xié)議,UDP是一個無連接的、不可靠的協(xié)議,相對于基于流傳輸?shù)腡CP而言,UDP是基于消息傳輸?shù)?,整體上具有傳輸速度快等優(yōu)點。通過研究可以看出家用電器的控制信息特點是數(shù)據(jù)量小,控制信息短,適合用于傳送少量數(shù)據(jù)、對可靠性要求不高的應用環(huán)境,因此更適合采用簡單的、面向數(shù)據(jù)報的UDP協(xié)議。
3.2 應用層幀格式的定義
由于目前智能家居沒有統(tǒng)一的標準,各個不同的系統(tǒng)都是自己定義各個設備的通信協(xié)議。表1是本系統(tǒng)家電控制系統(tǒng)應用層報文幀格式的定義。
(1)報頭:固定為0x66、0xAD兩字節(jié),表示一個報文幀的開始。
(2)數(shù)據(jù)長度:從報頭段0x開始算到命令數(shù)據(jù)段的最后一個字節(jié)總和。表示整個幀的字節(jié)數(shù)。
(3)路由地址:這個數(shù)據(jù)位是對路由進行選擇。根據(jù)部署的網(wǎng)絡不同的位置,選擇鏈路質(zhì)量最好的路由節(jié)點進行數(shù)據(jù)傳輸。
(4)設備類型:表示家居設備的種類,我們將家電控制系統(tǒng)固定為0xF4。
(5)子設備號:此字段為家電控制系統(tǒng)里的設備分配唯一的地址,這樣我們可通過設備類型段和子設備號兩個字段唯一標識某個家電設備,便于控制信息的準確有效送達到控制器。
(6)命令數(shù)據(jù):裝載具體的家電控制命令,告訴家電控制器收到數(shù)據(jù)之后需要對家用電器做哪些操作。
3.3 Socket套接宇
在網(wǎng)絡層通過傳輸層進行數(shù)據(jù)通信時,常常會遇到多個應用程序提供并發(fā)服務的問題,為了區(qū)別不同的應用程序進程間的網(wǎng)絡通信和連接,就需要使用socket套接字這個接口。對于使用不同的協(xié)議通信,TCP是使用socket對象來實現(xiàn),而UDP是使用DatagramSocket對象來實現(xiàn)。由于我們遠程家電控制系統(tǒng)使用的是UDP協(xié)議,在這里我只介紹DatagramSocket。
DatagramSocket是用于連接兩個端點的分組投遞服務,是由Android系統(tǒng)提供的一個公共類。根據(jù)編程人員所給的參數(shù),它可以建立與任意可用端口或者與給定端口的連接。
這里我們需要了解的方法有close()、receive(Datagram Packet pack)和send(DatagramPaeket pack)。它們分別是關閉套接字、接收數(shù)據(jù)報和發(fā)送數(shù)據(jù)報。
從上文我們可以看到發(fā)送和接收數(shù)據(jù)報時,我們接收到的是一個DatagramPaeket對象。所以在這里必須得提到的就是用來存儲數(shù)據(jù)報數(shù)據(jù)的final類DatagramPacket。DatagramPacket有多個構造方法,但是它的每個構造方法中一定包括byte[]buf和int lcnsth這兩個參數(shù)。buf是用來存儲所要傳輸?shù)臄?shù)據(jù),length是表示傳輸?shù)臄?shù)據(jù)的長度。當然你在創(chuàng)建DatagramPaeket對象時,還可以指定接收端的IP地址和端口號。
發(fā)送數(shù)據(jù)報的代碼為:
其中portNumber是指服務器的端口號,message是根據(jù)應用層幀格式得到的控制命令,serverAddr是指服務器的IP地址。
3.4 軟件設計流程
圖3是整個基于Android遠程控制系統(tǒng)軟件設計流程圖。
為了方便地適用于不同的家電控制系統(tǒng),我們將服務器的IP地址以一個由用戶輸入的方式來完成,這樣當在一個新的地方安裝整套系統(tǒng)時,在無需改變Android安裝包的情況下,自己輸入新的系統(tǒng)的服務器IP即可實現(xiàn)遠程控制。
4 測試結(jié)果
本家電控制器在完成設計、調(diào)試后,在實際展廳進行控制實驗表明該設計可以完成預定功能。在長期的實踐和全面測試的過程中,證實本套系統(tǒng)可完成以下功能并且性能穩(wěn)定。
(1)空調(diào)控制:空調(diào)開關,模式轉(zhuǎn)換,掃風功能,調(diào)節(jié)風速;
(2)電視控制:電視遙控(開關、選臺、音量調(diào)節(jié)、電視菜單),電視導航(包括各地省級市級電視臺電視節(jié)目預告),電視游戲;
(3)燈光控制:各個房間燈光的開關;
(4)風扇控制:各個房間風扇的開關。
如圖4所示,是手機控制界面圖。從左到右依次是空調(diào)控制界面,電視控制界面,燈光和風扇控制界面。
5 小結(jié)
本文簡要的介紹了基于Android的智能家居遠程家電控制的終端設計和關鍵技術,包括Android的安全機制和內(nèi)核分析,遠程家電控制系統(tǒng)的組成,每個組成部分的功能,應用層幀格式的定義,傳輸協(xié)議的選用以及軟件設計流程。并在最后展示了測試結(jié)果,證明了基于Android遠程家電控制的可行性。與傳統(tǒng)的基于Internet的遠程家電控制系統(tǒng)相比,基于Android手機的控制系統(tǒng)有著巨大的優(yōu)勢和前景。