基于UPnP與ZigBee的智能辦公室研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
20世紀(jì)80年代末,隨著通信與信息技術(shù)的發(fā)展,出現(xiàn)了通過總線技術(shù)對住宅或辦公室中各種通信、電器、安防設(shè)備進(jìn)行監(jiān)控與管理的商用系統(tǒng)。近幾年來,隨著市場上智能化樓宇的不斷升溫,智能化辦公室亦得到空前的發(fā)展,應(yīng)用日漸增多,特別是在專業(yè)的寫字樓。
隨著科學(xué)技術(shù)的發(fā)展和網(wǎng)絡(luò)的普及,物聯(lián)網(wǎng)與互聯(lián)網(wǎng)的結(jié)合是必然的趨勢。ZigBee是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗個(gè)域網(wǎng)協(xié)議。根據(jù)這個(gè)協(xié)議規(guī)定的技術(shù)是一種短距離、低功耗的無線通信技術(shù)。其特點(diǎn)是近距離、低復(fù)雜度、自組織、低功耗、高數(shù)據(jù)速率、低成本。主要適合用于自動(dòng)控制和遠(yuǎn)程控制領(lǐng)域,可以嵌入各種設(shè)備。微軟提出的通用即插即用協(xié)議UPnP(UniversalPlugandPlay)是由UPnPForum提出的一種標(biāo)準(zhǔn)化協(xié)議,其分布式的開放網(wǎng)絡(luò)架構(gòu)可以根據(jù)不同的應(yīng)用場景完成不同的智能框架。將UPnP協(xié)議與ZigBee相結(jié)合,是未來智能辦公室發(fā)展的一大趨勢,旨在打造一個(gè)安全舒適、節(jié)能環(huán)保的智能辦公室。
1系統(tǒng)設(shè)計(jì)
現(xiàn)在許多智能辦公室使用了總線技術(shù),如X10、LonWorks、CAN等或者使用無線組網(wǎng)技術(shù)來控制和監(jiān)控整個(gè)辦公環(huán)境,比如燈光、安防和其他設(shè)備等。目前,總線技術(shù)之間的開放性和互操作性還難以統(tǒng)一。使用UPnP設(shè)備可以橋接這些網(wǎng)絡(luò)成為一個(gè)網(wǎng)絡(luò),并提供用戶更多設(shè)備存取家庭網(wǎng)絡(luò)中的設(shè)備。在實(shí)現(xiàn)時(shí)也無須對像X10網(wǎng)絡(luò)中的現(xiàn)有布線和設(shè)備進(jìn)行昂貴的升級,只需要將設(shè)備變成UPnP設(shè)備并能夠與控制點(diǎn)通訊并接受控制點(diǎn)的控制命令。除此之外,使用UPnP可以對這布在不同PC端上的音樂庫進(jìn)行統(tǒng)一管理。這些設(shè)備能被發(fā)現(xiàn)然后被其他控制點(diǎn)(比如個(gè)人電腦、UPnP接收器)控制。同時(shí)這些控制點(diǎn)也可以控制辦公室中的任何一個(gè)揚(yáng)聲器。圖片庫可以自己作為一個(gè)設(shè)備存在,并自動(dòng)在網(wǎng)絡(luò)上聲明。這使得一個(gè)圖片庫可能臨時(shí)為多個(gè)應(yīng)用程序使用,例如可以進(jìn)行幻燈片顯示的同時(shí),在電子像框、機(jī)頂盒和電視上進(jìn)行顯示。
為了實(shí)現(xiàn)以上功能特點(diǎn),本文設(shè)計(jì)的智能辦公室是基于UPnP網(wǎng)絡(luò)與ZigBee技術(shù)。系統(tǒng)總體框架如圖1所示。
該系統(tǒng)將智能辦公室中的設(shè)備分為兩大類,一類是具有讀寫功能的設(shè)備,這些設(shè)備不僅能夠讀取反饋?zhàn)陨韺?shí)時(shí)狀態(tài),還能接收外部控制指令進(jìn)行控制,比如智能空調(diào)、智能電燈、智能電視等;另一類就是具備只讀功能的設(shè)備,它無法從外部寫入,只讀自身感知元件數(shù)據(jù),像溫度傳感器、照度傳感器、濕度傳感器等。
將各類計(jì)算機(jī)、智能辦公設(shè)備、智能照明、安全報(bào)警設(shè)備等相連接構(gòu)成UPnP網(wǎng)絡(luò),以實(shí)現(xiàn)設(shè)備自動(dòng)發(fā)現(xiàn)、動(dòng)態(tài)組網(wǎng)、資源內(nèi)同共享和協(xié)同服務(wù)控制,形成一個(gè)多層次統(tǒng)一的辦公網(wǎng)絡(luò),解決設(shè)備間互聯(lián)、互通、互操作性問題。
在UPnP網(wǎng)絡(luò)中,凡是具備IP地址的設(shè)備都必須直接使用網(wǎng)絡(luò)的IP地址,但有些設(shè)備可能并不具備直接使用網(wǎng)絡(luò)IP地址的能力,例如,電燈開關(guān)的控制就是這樣,這是非IP設(shè)備。這類非IP設(shè)備可利用ZigBee技術(shù)通過網(wǎng)橋來與控制指針交換信息,同樣也可達(dá)到預(yù)期控制效果。
2系統(tǒng)網(wǎng)橋設(shè)計(jì)
目前傳統(tǒng)辦公設(shè)備,大多都不具有網(wǎng)絡(luò)接口,要使其成為UPnP設(shè)備,不僅需要為其添加網(wǎng)絡(luò)接口,若是通過有線局域網(wǎng)還需要重新鋪設(shè)網(wǎng)絡(luò)線路,具有較大難度且費(fèi)用高。但若要是傳統(tǒng)辦公設(shè)備成為ZigBee節(jié)點(diǎn),則相對比較容易,只需為其加上ZigBee模塊即可實(shí)現(xiàn)對設(shè)備的無線控制
若將ZigBee技術(shù)融入U(xiǎn)PnP網(wǎng)絡(luò)中,讓每個(gè)ZigBee節(jié)點(diǎn)都成為UPnP設(shè)備,構(gòu)成混合型智能辦公網(wǎng)絡(luò),則既能發(fā)揮ZigBee設(shè)備的靈活、無線傳輸?shù)奶匦?,又能?shí)現(xiàn)設(shè)備的即插即用和網(wǎng)絡(luò)遠(yuǎn)程控制的功能。
ZigBee/UPnP網(wǎng)橋主要的作用有兩點(diǎn):一是將ZigBee節(jié)點(diǎn)信息提供給UPnP網(wǎng)絡(luò),并建立與UPnP的連接;二是當(dāng)ZigBee網(wǎng)絡(luò)建立后,則通過網(wǎng)橋來進(jìn)行相關(guān)控制。網(wǎng)橋架構(gòu)如圖2所示。
圖2ZigBee/UPnP網(wǎng)橋架構(gòu)
ZigBee/UPnP網(wǎng)橋通過網(wǎng)口連接UPnP網(wǎng)絡(luò),并通過串口通信來連接ZigBee協(xié)調(diào)器,通過ZigBee協(xié)調(diào)器來獲取信息并對ZigBee終端節(jié)點(diǎn)進(jìn)行控制。網(wǎng)橋中運(yùn)行UPnP協(xié)議的設(shè)備部分,為ZigBee網(wǎng)絡(luò)的每一個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)虛擬UPnP設(shè)備,實(shí)現(xiàn)信息的準(zhǔn)確傳輸。這樣一來,ZigBee節(jié)點(diǎn)均實(shí)現(xiàn)了UPnP功能。
為實(shí)現(xiàn)其功能,ZigBee/UPnP網(wǎng)橋工作流程大致為以下幾步:
注冊:當(dāng)接收到ZigBee網(wǎng)絡(luò)送來的信息時(shí),必須執(zhí)行一連串的注冊程序,并將該設(shè)備的相關(guān)信息寫入XML文件中。
配對:當(dāng)任一裝置加入U(xiǎn)PnP網(wǎng)絡(luò)之后,必須針對設(shè)備的行為與功能做配對才能讓才能讓相同性質(zhì)的設(shè)備進(jìn)行通信,UPnP網(wǎng)絡(luò)雖然提供了自動(dòng)配對功能,但為了符合ZigBee網(wǎng)絡(luò)的靈活性,需增加手動(dòng)配對功能。
控制:在配對成功后,由UPnP的控制點(diǎn)發(fā)出控制命令必須經(jīng)過轉(zhuǎn)換,才能對ZigBee節(jié)點(diǎn)進(jìn)行控制,相對地,由ZigBee節(jié)點(diǎn)發(fā)出的控制命令也必須經(jīng)過轉(zhuǎn)換才能對UPnP的控制點(diǎn)進(jìn)行控制。
3系統(tǒng)軟件設(shè)計(jì)
3.1UPnP網(wǎng)絡(luò)建立
UPnP網(wǎng)絡(luò)的建立如圖3所示,分為設(shè)備尋址、設(shè)備發(fā)現(xiàn)、設(shè)備描述、設(shè)備控制、設(shè)備事件和設(shè)備表達(dá)這6個(gè)環(huán)節(jié)叫其中,設(shè)備尋址、設(shè)備發(fā)現(xiàn)和設(shè)備描述這3個(gè)環(huán)節(jié)是所有設(shè)備必須實(shí)現(xiàn)的部分,而設(shè)備控制、設(shè)備事件和設(shè)備表示這3個(gè)環(huán)節(jié)則根據(jù)設(shè)備自身特點(diǎn)選擇是否實(shí)現(xiàn)該功能。例如,多媒體服務(wù)器就不需要實(shí)現(xiàn)設(shè)備表達(dá),其只向外提供本地資源。圖3UPnP網(wǎng)絡(luò)建立流程圖
設(shè)備尋址是指當(dāng)一個(gè)設(shè)備接入網(wǎng)絡(luò)時(shí),通過動(dòng)態(tài)主機(jī)配置協(xié)議DHCP(DynamicHostConfigurationProtocol)服務(wù)器,或者通過AutoIP取得設(shè)備唯一的IP地址。一旦設(shè)備連接到網(wǎng)上并且分配了地址,設(shè)備就根據(jù)簡單服務(wù)發(fā)現(xiàn)協(xié)議SSDP(SimpleServiceDiscoveryProtocol)來發(fā)現(xiàn)。在設(shè)備發(fā)現(xiàn)操作之后,控制點(diǎn)可以發(fā)現(xiàn)感興趣的設(shè)備,并使得控制點(diǎn)獲得設(shè)備能力的描述,同時(shí)控制點(diǎn)也可以向設(shè)備發(fā)送命令,偵聽設(shè)備狀態(tài)的改變,并將設(shè)備展示給用戶。對于一個(gè)設(shè)備的UPnP描述一般分成兩個(gè)部分:描述設(shè)備和描述設(shè)備提供的服務(wù)。UPnP對某一設(shè)備的描述以XML形式表示出來,設(shè)備描述包括制造商信息,包括模塊名稱和編號、序列號、制造商名稱、制造商網(wǎng)站的URL等。在獲取了設(shè)備以及其服務(wù)的信息后,控制點(diǎn)可以向這些服務(wù)發(fā)出動(dòng)作,并且接收動(dòng)作回饋響應(yīng)。最后,設(shè)備表示則采用HTML頁的形式進(jìn)行表示,使控制點(diǎn)能做瀏覽器中打開,用來瀏覽設(shè)備狀態(tài)或控制設(shè)備図。
目前比較常用的UPnP軟件開發(fā)工具SDK有Intel的libUPnP-1.2.1C語言)、Cyberlink的cybergarag(Java語言)等。本文選擇了Intel的libUPnP-1.2.1作為原型開發(fā)用的SDK。
UPnP設(shè)備端程序流程圖如圖4所示。
其中,初始化內(nèi)容包括初始化SDK、設(shè)置根目錄、注冊設(shè)備描述文件、執(zhí)行設(shè)備相關(guān)初始化和向網(wǎng)絡(luò)發(fā)出宣告消息。處理異步請求是,設(shè)備有訂閱請求、獲取服務(wù)狀態(tài)當(dāng)前值的請求和改變服務(wù)狀態(tài)值這三種不同類型的請求。節(jié)點(diǎn)發(fā)出事件消息,保持控制點(diǎn)信息的更新。當(dāng)發(fā)出SSDP”bye-bye”消息時(shí),先從SDK取消設(shè)備注冊,隨后關(guān)閉SDK網(wǎng)。UPnP控制點(diǎn)端程序流程圖如圖5所示。
與設(shè)備類似,控制點(diǎn)也需初始化SDK,同時(shí)注冊控制點(diǎn)的回調(diào)函數(shù)。初始化完成后,就可以在UPnP網(wǎng)絡(luò)上捜索感興趣的設(shè)備。對于網(wǎng)絡(luò)電視而言,捜索目標(biāo)定義為
charTVDeviceType[]="urn:schemas-cyoffice-org:NetworkTV:1";
控制點(diǎn)對感興趣的設(shè)備進(jìn)行訂閱服務(wù),每當(dāng)設(shè)備中的狀態(tài)列表改變時(shí),設(shè)備會(huì)向訂閱過這些事件的控制點(diǎn)發(fā)出事件消息??刂泣c(diǎn)根據(jù)這些信息來控制設(shè)備狀態(tài)。
3.2網(wǎng)橋設(shè)備端實(shí)現(xiàn)
網(wǎng)橋設(shè)備端的運(yùn)行流程如圖6所示。
啟動(dòng)用戶命令線程,持續(xù)等待接受用戶輸入的命令,并執(zhí)行相應(yīng)的動(dòng)作。啟動(dòng)UPnP框架包括初始化線程池,以及創(chuàng)建相關(guān)處理機(jī)和注冊表。啟動(dòng)Webserver獨(dú)立線程,開始接受用戶Web訪問。啟動(dòng)串口獨(dú)立線程,開始接收來自串口(ZigBee網(wǎng)絡(luò))的消息,并對信息做出相應(yīng)處理。當(dāng)完成以上環(huán)節(jié)后,設(shè)備進(jìn)入正常運(yùn)行狀態(tài),對各種命令、消息做出處理和響應(yīng)。
根據(jù)本文網(wǎng)橋設(shè)計(jì)方案,網(wǎng)橋設(shè)備端需要為每個(gè)連上網(wǎng)橋的的ZigBee設(shè)備創(chuàng)建一個(gè)虛擬UPnP設(shè)備節(jié)點(diǎn),現(xiàn)將虛擬設(shè)備節(jié)點(diǎn)結(jié)構(gòu)定義如下:
structdev_Info
{
char*UDN;
char*DevType;
char*ServiceType[SERVICE_NUM];char*ServiceId[SERVICE_NUM];char*EventURL[SERVICE_NUM];char*CtrlURL[SERVICE_NUM];char*SCPDURL[SERVICE_NUM];structServiceContentSeeviceTable[SERVICE_NUM];intServiceCount;
unsignedcharDevKind;
unsignedcharDevId;
intDeviceHandle;
};
其中,服務(wù)列表節(jié)點(diǎn)結(jié)構(gòu)定義如下:
structServiceContent
{
char*VarName[VAR_NUM];char*VarValStr[VAR_NUM];char*ActionName[ACTION_NUM];
upnp_actionAction[ACTION_NUM];
unsignedintVarCount;
unsignedintActionCount;
};
3.3XML文檔設(shè)計(jì)
設(shè)備所具備的功能是設(shè)備服務(wù)描述的主體部分。例如,支持UPnP的空調(diào)設(shè)備包含溫度調(diào)節(jié)、模式調(diào)節(jié)、風(fēng)力方向等服務(wù);支持UPnP的照明系統(tǒng)包含電燈的開關(guān)調(diào)節(jié)和亮度調(diào)節(jié)?;赬ML的UPnP設(shè)備/服務(wù)描述是實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、資源共享的基礎(chǔ),UPnP論壇制定了如下設(shè)備XML描述模板[2]:
<?xmlversion=”1.0”?>
<rootxmlns="…">
<specVersion>
<device>
<serviceList>
<service>
</servise>
</serviceList>
</device>
</root>
下面以網(wǎng)絡(luò)電視機(jī)為例,詳細(xì)介紹基于上述模板開發(fā)的XML描述文檔:
首先,進(jìn)行設(shè)備類型描述設(shè)計(jì)為:
<deviceType>urn:schemas-cyoffice-org:NetworkTV:1
</deviceType>
接下來需設(shè)計(jì)唯一設(shè)備名字(UDN)。遵循唯一性原則,這里我們?nèi)≡O(shè)備名與該設(shè)備的MAC地址組合而成。設(shè)該設(shè)備的MAC地址為8888888888888。因此,UDN元素可表達(dá)為:
<UDN>uuid:Upnp-Net_TV-1_0-8888888888888</UDN>
至此,便完成了設(shè)備描述文檔第一部分的設(shè)計(jì),如下所示:
<?xmlversion=”1.0”?>
<rootxmlns="urn:schemas-cyoffice-org:NetworkTV-1-0”>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-cyoffice-org:NetworkTV:1</deviceType>
<UDN>uuid:Upnp-Net_TV-1_0-8888888888888</UDN>
<serviceList>
</serviceList>
<presentationURL>/NetTVpres.html</presentationURL>
</device>
</root>
本文所選擇的網(wǎng)絡(luò)電視設(shè)備包含音量調(diào)節(jié)、亮度調(diào)節(jié)、頻道選擇等服務(wù)。服務(wù)描述文檔定義了這些服務(wù)動(dòng)作的調(diào)用接口。所以必須做出進(jìn)一步的XML文檔設(shè)計(jì)。
例如,可把音量當(dāng)前值的狀態(tài)變量定義為VolAdjust,默認(rèn)值名定義為DefaultVolAdjust,數(shù)據(jù)類型為整型。對于VolAdjust來說,定義minimum=1,maximum=100,step=l。當(dāng)其sendEventAttribute(事件發(fā)生屬性)的屬性值為真時(shí),將發(fā)出事件通知。于是,網(wǎng)絡(luò)電視音量變量的定義如下所示:
<stateVariable>
<name>VolAdjust</name>
<sendEventAttribute>yes
</sendEventAttribute>
<dataType>int</dataType>
<allowedValueRange>
<minimum>1</minimum><maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable>
<name></name>
<sendEventAttribute>no</sendEventAttribute>
<dataType>int</dataType>
<allowedValueRange>
<minimum>1</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
可設(shè)計(jì)與音量的相關(guān)動(dòng)作:GetVolAdjust、SetVolAdjust、GetDefaultVolAdjust、SetDefaultVolAdjust。
網(wǎng)絡(luò)電視的其他功能的狀態(tài)變量與動(dòng)作設(shè)計(jì)與此類似,具體設(shè)計(jì)不再贅述。
總結(jié)上述過程,我們首先確定服務(wù)所包含的功能類型,然后為每一個(gè)功能設(shè)計(jì)兩個(gè)狀態(tài)變量(當(dāng)前值和默認(rèn)值);然后為每一個(gè)狀態(tài)變量設(shè)計(jì)查詢動(dòng)作和設(shè)置動(dòng)作。設(shè)計(jì)過程符合規(guī)范且擴(kuò)充方便。
4結(jié)語
本文所研究的基于UPnP網(wǎng)絡(luò)與ZigBee技術(shù)智能辦公室系統(tǒng),使用低成本、低功耗、高靈活性的ZigBee無線網(wǎng)絡(luò)來構(gòu)建相關(guān)感應(yīng)節(jié)點(diǎn),通過ZigBee/UPnP網(wǎng)橋,即可實(shí)現(xiàn)ZigBee設(shè)備到虛擬UPnP的映射。利用UPnP網(wǎng)絡(luò)是即插即用性,是各智能終端不需要任何設(shè)定就可以操作。在系統(tǒng)啟動(dòng)后,不管在辦公室內(nèi),或在外,均可通過瀏覽器連接到本系統(tǒng)進(jìn)而達(dá)到遠(yuǎn)程監(jiān)控的目的。
20211223_61c34c7eebc59__基于UPnP與ZigBee的智能辦公室研究