??? 摘 要: 介紹了xPL協(xié)議的基本內(nèi)容、工作過程和使用方法;并以電話遠(yuǎn)程遙控" title="遠(yuǎn)程遙控">遠(yuǎn)程遙控系統(tǒng)運(yùn)用xPL與上位機(jī)" title="上位機(jī)">上位機(jī)、下位機(jī)" title="下位機(jī)">下位機(jī)完成數(shù)據(jù)通信,最終實(shí)現(xiàn)對家居設(shè)施的遠(yuǎn)程控制" title="遠(yuǎn)程控制">遠(yuǎn)程控制。
??? 關(guān)鍵詞: xPL協(xié)議? 遠(yuǎn)程控制? 智能家居
?
??? 智能家居控制系統(tǒng)的出現(xiàn)使得人們可以通過電話、手機(jī)或者互聯(lián)網(wǎng)在任何時候、任意地點(diǎn)對家中的任意電器,如燈光、電源和家庭環(huán)境等進(jìn)行遠(yuǎn)程控制。然而,為了協(xié)調(diào)家居各子系統(tǒng)能順利工作,控制系統(tǒng)必須使用具有強(qiáng)大兼容性的協(xié)議對各個子系統(tǒng)進(jìn)行控制。xPL協(xié)議[1](eXtremely simPle protocoL)就是這樣一個具有強(qiáng)大兼容性的協(xié)議,是一種新穎的智能家居控制系統(tǒng)中的通信協(xié)議,2003年1月由英國的兩名工程師 Ian Lowe和Tony Tofts發(fā)起,并于2003年上半年得到完善。運(yùn)用xPL協(xié)議,可以根據(jù)用戶自身的需要,編寫出相應(yīng)的個性化程序,將使智能家居系統(tǒng)的開發(fā)變得簡單,并能完成對多種家電的控制。開發(fā)的系統(tǒng)將具有可靠性、兼容性和安全性。
1 xPL協(xié)議的指令信息格式
??? xPL信息有三種類型,分別為xpl-cmnd、xpl-stat 和xpl-trig,它們使得xPL網(wǎng)絡(luò)中各設(shè)備之間的相互通信過程變得簡單。
??? xPL程序以行為單位,每行以一個換行符作為結(jié)束。一個完整的xPL信息應(yīng)該由以下四部分組成:
??? (1) 信息類型(xpl-cmnd、xpl-stat 或者xpl-trig);
??? (2) 一個大小可以變(但須在限定范圍內(nèi))的頭文件;
??? (3) schema.version 格式的信息樣式表;
??? (4) 一個單一信息“體”,包含 name=value。
??? 信息格式(Schema)標(biāo)識符是為了使來自不同廠商的設(shè)備和程序能夠在開放的環(huán)境下通信,schema定義了傳輸信息的格式內(nèi)容。這樣,每條信息將屬于一個特定的類。
??? 命令、狀態(tài)和其他信息是以一系列名稱/值對組成的xPL信息表達(dá)的。一個xPL信息可能包含很多這樣的對。信息包含的特定內(nèi)容以及這些內(nèi)容的順序由所用信息的schema規(guī)定。開發(fā)者可以在其中加入更多的信息,但由信息schema規(guī)定的基本要素必須總是以正確的順序羅列出。
1.1 xpl-cmnd指令
??? xpl-cmnd指令是用來使一個裝置執(zhí)行一個動作的,分為兩種:定向命令信息和廣播命令信息。
1.1.1? 定向命令信息
??? 如果想對家居環(huán)境中的一個特定的裝置進(jìn)行控制,如休息室里的窗簾控制器,或者中央供暖系統(tǒng)的加熱器,信息可以通過目標(biāo)定向傳達(dá)到受控裝置或程序。只有信息中指定的目標(biāo)定向裝置或程序才會對收到的定向命令信息進(jìn)行響應(yīng)。
1.1.2? 廣播命令信息
??? 廣播命令信息向xPL網(wǎng)絡(luò)中所有裝置和應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序發(fā)送一個xPL命令,一旦此信息發(fā)出,xPL網(wǎng)絡(luò)中所有裝置和應(yīng)用程序都會對此信息進(jìn)行響應(yīng)。
1.2 xpl-stat指令
??? xpl-stat指令是用來獲取xPL網(wǎng)絡(luò)中的裝置或程序的實(shí)際狀態(tài)信息的。所有的裝置和應(yīng)用程序都應(yīng)該定時發(fā)送一個“heartbeat”(心跳)狀態(tài)信息,并且可以隨意地對詢問當(dāng)前狀態(tài)的請求作出回應(yīng)。
1.2.1 Heartbeat心跳信息
??? 一個xPL網(wǎng)絡(luò)中的所有裝置都應(yīng)該發(fā)送heartbeat信息(Hub除外)。Heartbeat中囊括了配置信息、正常監(jiān)視、故障診斷和事件日志。Heartbeat的時間間隔由開發(fā)者定義,可以是5~30分鐘內(nèi)的任何時間長度。請求所有設(shè)備識別它們自身,程序可發(fā)送一個廣播命令。格式是一個schema類hbeat.request類型和command=request單一體元素。當(dāng)一個xPL設(shè)備接收到這樣的信息時,它應(yīng)當(dāng)發(fā)送一個標(biāo)準(zhǔn)的heartbeat信息作為回復(fù)。
1.2.2 狀態(tài)請求
??? 與采用通常的heartbeat一樣,在xPL網(wǎng)絡(luò)中的設(shè)備要想知道另一個設(shè)備的當(dāng)前狀態(tài),可以啟用狀態(tài)請求機(jī)制。
1.3? xpl-trig指令
??? 在xPL網(wǎng)絡(luò)中,無論何時,當(dāng)出現(xiàn)一個裝置的狀態(tài)改變、響應(yīng)一個xPL命令、一個人的直接的行為(如按下一個開關(guān))等情況時,不論這種變化是否由一個外部事件(按下一個按鈕,IR探測,達(dá)到溫度,或者一個設(shè)備啟動)引起,觸發(fā)信息都會被發(fā)送。
2 xPL設(shè)備配置
2.1 Group(組)
??? 當(dāng)智能家居環(huán)境中的同類設(shè)備不止一個、用戶想同時控制它們的打開或者關(guān)閉時,可將此類設(shè)備設(shè)置為同一個組。xPL為此提供了一個強(qiáng)大的機(jī)制,它的形式為:“group=”的配置標(biāo)簽。配置信息中的 “group=”標(biāo)簽將清空已經(jīng)存在的組。因此,當(dāng)一個設(shè)備的組將要發(fā)生改變時,所有想要包含此設(shè)備的組必須在配置信息中全部被設(shè)定。
2.2 Filter(過濾器)
??? 在xPL網(wǎng)絡(luò)中,有大量的xPL信息,但其中的設(shè)備并不是每條信息都需要接收,這樣,就需要一個過濾器filter將與其無關(guān)的信息過濾掉,而只接收與自身匹配的信息。信息過濾器可以通過一個配置信息指定使用。過濾器是在一個配置信息中用“filter=tag”來定義。一個配置信息中的“filter=tag”將會清空已有的過濾器,因此,當(dāng)要改變一個過濾器時,所有期望的過濾器必須在配置信息中設(shè)定。過濾器只應(yīng)用于廣播信息,為的是減少設(shè)備所使用信息的數(shù)量。如果多個過濾器同時存在,只要其中的一個與將要處理的信息匹配就可以了。
3 xPL服務(wù)器配置
3.1 xPL Hub
??? 因?yàn)門CP/IP協(xié)議一次只允許一個應(yīng)用程序占用一個特定的端口,因此,用一個“Hub”機(jī)制來實(shí)現(xiàn)多個xPL應(yīng)用程序在同一個主機(jī)上運(yùn)行。一個應(yīng)用程序如果要偵聽xPL通信,應(yīng)該與一個動態(tài)UDP端口進(jìn)行綁定,并且在心跳信息或者設(shè)置信息中將程序偵聽的端口發(fā)送出去。Hub接收到這些心跳信息后將應(yīng)用程序添加到它的客戶機(jī)名單中。當(dāng)進(jìn)來的xPL信息在一個xPL端口被接收到時,Hub會把它們轉(zhuǎn)發(fā)給所有注冊的客戶機(jī)。在以太網(wǎng)上傳輸?shù)膞PL信息支持最大為1 500字節(jié)的信息長度。
3.2 xPLHal
3.2.1 xPLHal的概念
??? xPLHal是一個沒有圖形用戶界面的服務(wù)程序。在沒有xPL設(shè)備接入網(wǎng)絡(luò)的情況下,它也會一直在后臺運(yùn)行。xPLHal Manager是一個xPLHal的控制臺程序,它使用XHCP(而不是xPL)對底層服務(wù)進(jìn)行配置,它可以在網(wǎng)絡(luò)中的任何PC機(jī)上運(yùn)行,而不一定是在xPL的服務(wù)器上。xPLHal完全可以在沒有Manager的情況下運(yùn)行。
3.2.2? xPLHal 中的參數(shù)設(shè)置
??? (1) Modes(狀態(tài))
Modes被用來反映一個房間可以處于的不同狀態(tài)。例如,“繁忙”、“空閑”和“休息”。它可以通過xPLHal屬性對話框的相關(guān)標(biāo)簽進(jìn)行設(shè)定。
??? 房間處于不同狀態(tài)時,其Modes也不相同。因此,用戶可以利用Modes編程來制定智能家居系統(tǒng)的行為。例如,可以使一個xPL指令信息在房間“空閑”模式下觸發(fā),而在房間“繁忙”時,這個行為卻不發(fā)生。
??? (2) Periods(時段)
??? Periods用來代表一天中不同的時段。默認(rèn)情況下可以有兩個備選值:Day(白天)和Night(黑夜)。同樣可以利用Periods編程來制定家居系統(tǒng)的行為。
??? 究竟Periods是“白天”還是“黑夜”可以通過許多方法判斷,下面給出其中的一些方法:
??? ①通過安裝xPL的DawnDusk服務(wù)程序。它可以在“黎明”和“黃昏”時分別發(fā)出xPL信息,原理是它可以根據(jù)所在地計算出日出和日落的時間。
??? ②在PC機(jī)上直接接入光傳感器,例如通過串行口接入。
??? 在家居系統(tǒng)中,程序可以將Modes與Period聯(lián)合使用,從而實(shí)現(xiàn)一個比較復(fù)雜的邏輯環(huán)境。
??? (3) Global variables全局變量
??? 全局變量由xPLHal支持并由用戶自己定義的變量。如果用戶需要保存程序中的狀態(tài)信息,則可以將它保存在全局變量集合中。全局變量是不可變的,它將被寫入磁盤,確保即使系統(tǒng)重啟時它的值仍然存在。全局變量也將被復(fù)制給其他xPLHal從服務(wù)器。
??? Mode和Periods值將以全局變量的形式存儲在xPLHal中,而VB程序員可以通過xPL開發(fā)者提供的ActiveX控件在VB程序中方便地找到這些全局變量,同時也可以得到各個設(shè)備的當(dāng)前狀態(tài)和當(dāng)前時段。
4 電話遠(yuǎn)程遙控系統(tǒng)設(shè)計
4.1電話遠(yuǎn)程遙控系統(tǒng)設(shè)計方案[2]
??? 在xPL協(xié)議的幫助下,只要將家中固定電話、PC機(jī)和單片機(jī)相連接,就可以利用手機(jī)完成對家中家居設(shè)施的遠(yuǎn)程控制。當(dāng)電話打入時,xPL協(xié)議從調(diào)制解調(diào)器上收到用戶的控制命令,并將信息傳遞給上位PC機(jī),由上位機(jī)對信息處理后,將指令傳達(dá)給單片機(jī),單片機(jī)將直接控制家中所有的被控設(shè)備。本實(shí)驗(yàn)系統(tǒng)中,單片機(jī)的控制對象分為開關(guān)量對象和紅外遙控對象。由單片機(jī)控制的紅外發(fā)射器可以對一切具有紅外接收功能的家電諸如空調(diào)、電視機(jī)、DVD播放機(jī)等進(jìn)行控制。系統(tǒng)設(shè)計方案如圖1所示。
?????????????????????????????
??? 雖然xPL軟件本身提供了強(qiáng)大的功能,但要實(shí)現(xiàn)用戶要求的復(fù)雜控制功能,還需要編寫控制程序。xPL軟件是基于Visual Basic語言開發(fā)的,同時xPL開發(fā)者提供了ActiveX控件,使得Visual Basic編程者很容易將xPL功能加入到程序中。加之Visual Basic用于制作界面強(qiáng)大又易于操作的優(yōu)勢,因此,本實(shí)驗(yàn)系統(tǒng)的上位機(jī)程序采用VB編寫控制程序。控制程序?qū)⒇?fù)責(zé)接收xPL指令信息,做出判斷和處理后,向單片機(jī)下達(dá)指令完成控制動作。
4.2 程序介紹
4.2.1 xPLPhone
??? 若要實(shí)現(xiàn)電話對家中家居設(shè)施的控制,則需要安裝xPLPhone軟件。xPLPhone是一款xPL官方網(wǎng)站提供的免費(fèi)軟件。它能使調(diào)制解調(diào)器成為一個完全支持xPL的設(shè)備,使得PC機(jī)能夠接聽電話,可以通過對xPLPhone編寫基于xPL指令信息與協(xié)議規(guī)則的腳本語言實(shí)現(xiàn)既定的功能。
??? 電話遠(yuǎn)程遙控系統(tǒng)包括兩大功能:一是主人不在家時的訪客留言錄音功能;二是主人對智能控制系統(tǒng)中的設(shè)備的電話遠(yuǎn)程遙控功能。圖2是電話遠(yuǎn)程遙控流程示意圖。
???????????????????????????????
4.2.2 控制界面設(shè)計
??? 系統(tǒng)的控制界面如圖3所示。xPL指令信息和當(dāng)前狀態(tài)經(jīng)由ActiveX控件從xPLHal傳遞到控制軟件??刂栖浖鶕?jù)指令信息,經(jīng)過判斷和處理,由串口向下位機(jī)發(fā)送命令??刂栖浖挠脩艚缑嬉矊?shí)時反映各個設(shè)備的當(dāng)前狀態(tài)。
???????????????????????????????
??? 控制軟件的工作方式與特點(diǎn):
??? (1)xPL提供的ActiveX控件使得Visual Basic程序可以方便地接收到xPL指令信息和設(shè)備的當(dāng)前狀態(tài)信息。軟件由xPLHal接收到xPL信息,經(jīng)過解析和判斷后,便可以向下位機(jī)發(fā)送命令了。
??? (2)在xPL網(wǎng)絡(luò)中,有大量的xPL信息,但其中的設(shè)備并不是每條信息都需要接收。這樣,就需要一個過濾器Filter, 將與其無關(guān)的信息過濾掉,而只接收與自身匹配的信息。本實(shí)驗(yàn)系統(tǒng)定義了一個Schema:iHouse.Basic。Filter將自動過濾掉與iHouse.Basic無關(guān)的信息。
??? (3)遙控系統(tǒng)可以經(jīng)過ActiveX控件由 xPLHal 得到當(dāng)前時段和xPL設(shè)備的當(dāng)前狀態(tài)。在接收到xPL指令信息后,通過對這些狀態(tài)和時段的判斷,決定單片機(jī)應(yīng)該產(chǎn)生哪些控制動作。
4.2.3 下位機(jī)程序設(shè)計
??? 本系統(tǒng)采用LPC932單片機(jī)對各個被控設(shè)備進(jìn)行控制。單片機(jī)通過RS232與上位機(jī)相連接,從上位機(jī)接收控制數(shù)據(jù),然后通過特定電路與被控設(shè)備相連接,實(shí)現(xiàn)開關(guān)量控制或紅外信號控制[4]。
??? xPL作為一個專門為智能家居控制設(shè)計的協(xié)議,它是一個統(tǒng)一的、具有極其簡單和容易使用的特點(diǎn)的開放協(xié)議。它具有以下特點(diǎn):
??? (1)提供了一個豐富的特征和功能集,同時,有一個較完善的、但并不復(fù)雜的信息結(jié)構(gòu)。
??? (2)具有強(qiáng)大的自動發(fā)現(xiàn)和配置的能力,完全支持“即插即用”體系結(jié)構(gòu)。
??? (3)特定信息結(jié)構(gòu)確保了來自不同生產(chǎn)商的支持xPL的設(shè)備能夠相互通信,而沒有不兼容的危險。
??? 本文通過電話遠(yuǎn)程遙控系統(tǒng)的設(shè)計與實(shí)現(xiàn),說明了用xPL協(xié)議實(shí)現(xiàn)智能家居將大大降低設(shè)計難度,同時保證了網(wǎng)絡(luò)設(shè)備的兼容性、可靠性。xPL協(xié)議在智能家居領(lǐng)域?qū)⒕哂袕V闊的市場前景。
參考文獻(xiàn)
[1] JACOBSON J. Understanding home automatic. Electronic?House, 2001: 48-50.
[2] ?SCHONGA B.VBScript揭秘.高長劍,譯.北京:電子工業(yè)出版社,1998:70-147.
[3]?徐安.微型計算機(jī)控制技術(shù).北京:科技出版社,2004.
[4]?LEWISD W L. Fundamentals of embedded software:where?C and assembly meet. 北京: 高等教育出版社,2005.