張松峰 陳帆


摘 要:針對現有智能燈光系統協議不統一,不具備互操作性的問題,基于ZigBee 協議ZLL規范設計了具備遠程訪問與控制功能的智能燈光系統。文中基于TI CC2530及Z-Stack協議棧開發了ZigBee網絡,論述了Z-Stack協議棧中的ZCL庫及ZLL規范,并給出了基于云平臺的智能燈光系統架構,同時基于S5PV210及嵌入式Linux系統設計了網關系統,該系統能夠接入云平臺并與ZigBee協調器通信。實際測試表明,系統能夠通過云平臺實現遠程訪問并通過Z-Stack ZCL API實現控制器對燈的操控,并能夠滿足ZLL規范。
關鍵詞:ZigBee; ZLL;智能燈光;遠程控制
中圖分類號:TN915 文獻標識碼:A 文章編號:2095-1302(2016)05-00-03
0 引 言
人們的生活及工業生產中存在著大量的照明系統,特別是大型樓宇內會存在大量的燈光系統,對這些燈光系統進行智能化控制能夠實現節能及靈活的控制策略。由ZigBee聯盟制定的ZigBee通信協議具有短距離、低復雜度、自組網、低功耗等特點,主要針對物聯網應用。聯盟同時制定了ZCL(ZigBee Cluster Library,ZCL),基于ZCL可實現通信、控制的標準化,以便不同廠家的設備可以互聯互通。近幾年來,國內外大量學者基于ZigBee技術開發設計了智能家居[1-5,7]、智能燈光及特定領域物聯網應用系統,文獻[5]基于Cortex-A8處理器將ZigBee網絡與以太網連通,使設計的智能家居系統具備遠程控制功能。但這些系統基本都采用自定義應用層通信協議,不具備互聯互通的特性。只有實現通信參數具體化及不同廠家設備的互操作,才符合ZigBee協議設計的初衷。文獻[6]論述了開發符合標準協議規范的產品的必要性,并研究了基于TI Z-Stack協議棧開發符合ZigBee協議HA(Home Automation,HA)標準的智能家居系統的方法,但并沒有給出實際的系統設計。本文基于TI公司Z-Stack協議棧論述并設計了符合ZigBee協議ZLL(ZigBee Light Link,ZLL)規范的智能燈光系統,能夠實現對燈光系統的智能及遠程控制。
1 ZCL庫及ZLL規范
ZigBee協議是基于分層的架構,其物理層及MAC層采用IEEE802.15.4標準,上層的網絡層、應用層等由ZigBee聯盟定義。協議中引入了規范(Profile)和簇(Cluster)的概念,規范針對不同的應用領域,如用于智能家居的HA規范,用于智能照明的ZLL規范等。
1.1 ZCL庫
在一個規范下有不同的簇,每一個簇對應一個應用,如一個調光器所具備的命令:開燈、關燈、變亮等組成一個簇,簇是命令與屬性的集合。當設備收到一個空中消息時根據簇ID及命令ID做出相應的處理,基于ZCL庫協議開發的設備能夠實現互聯互操作。
每個節點的簇分為輸入簇和輸出簇,輸入簇列表指明了該端點能夠接受的簇,輸出簇列表指明了該端點能夠發出的簇。只有當一個端點的輸出簇與另一個端點的輸入簇相匹配時才可以實現設備的操作。
Z-Stack中的ZCL[8]庫API基于Client/Server模型,Server端存儲屬性,Client端發出操作屬性的命令。整個ZCL庫分為基礎層和功能域兩部分,基礎層是相應命令的底層實現,功能域實現不同應用領域的特有功能,功能域的命令通過對基礎層函數的調用來實現。
1.2 ZLL規范
ZLL[9]規范是燈光系統規范,構建在ZigBee-pro棧結構上。該規范定義了燈光系統中控制器節點、燈節點要實現的不同簇及命令,ZLL規范指明了不同燈節點,如on/off型、調光型、調色溫型等相關的簇命令,實現這些命令能夠保證不同廠家的設備可以進行互操作。
在ZLL規范的功能描述部分詳細定義了Light Link設備組網及通信的具體參數。如規范定義:ZLL設備使用ZigBee-Pro協議棧,設備版本號為0x02,profile ID為0xc05e。
2 智能燈光系統架構
ZigBee網絡主要由終端節點、路由器、協調器三種角色的設備組成,協調器負責網絡的形成及入網管理,路由器實現網絡范圍的擴充及數據中轉,終端節點負責具體應用設備的控制及數據采集。系統主要由云平臺、網關、ZigBee網絡三部分構成,系統結構如圖1所示。云平臺實現手機及PC端的控制接入,能夠遠程控制并查看ZigBee設備;網關實現ZigBee協議與以太網協議的數據交換,是云平臺與ZigBee網絡的橋梁。
2.1 云平臺系統設計
云平臺實現遠程訪問ZigBee網絡設備,能夠對設備進行實時查看、控制等操作,不同系統的物聯網云平臺功能具有一定的共性,且構建云平臺成本較高,因而一些公司搭建了公用的云平臺系統,本系統正是采用由中移物聯網開發的onenet云平臺[10]系統實現遠程訪問控制。基于onenet平臺提供的API實現向云端提交數據及獲取數據的功能。onenet平臺與網關之間基于HTTP協議通信,采用JSON格式進行數據交換。
根據onenet平臺API接口文檔定義,向平臺提交數據點的HTTP消息的請求行為及請求報頭在本系統中為:
GET /devices/733***/datapoints HTTP/1.1
api-key: z*********=sFwTcLDTkMQ=
Host: api.heclouds.com/r/n/r/n
請求HTTP消息可以不包含消息正文,不包含正文時,系統將返回所請求設備下所有數據流的最新數據。
收到HTTP消息后,onenet平臺會返回響應消息,響應的狀態行為:
HTTP/1.1 200 OK
指明HTTP消息正確接收。在消息正文部分以JSON格式包含了請求設備下所包含的數據流最新數據值及時間信息。本系統獲取數據點的一次返回消息的正文部分如下所示:
{“errno”:0,“data”:{“count”:1,“datastreams”:[{“datapoints”:[{“at”:“2016-01-19 16:35:40.000”,“value”:0}],“id”:“key0”}]},“error”:“succ”}
鍵datastreams的鍵值是包含數據點的數組,鍵datapoints的鍵值指明了id為key0的數據流的值value為0。
2.2 網關系統設計
網關系統負責ZigBee協議與以太網協議轉換,是ZigBee網絡與云平臺的橋梁。本系統網關基于Cortex-A8內核的S5PV210處理器設計,采用友善之臂的Smart210開發平臺,并通過UART口與ZigBee協調器通信,由于通信距離短,所以采用4線制TTL電平信號,接口連線如圖2所示。
網關系統軟件基于嵌入式Linux操作系統,通過定時信號使用戶程序周期性地向云平臺服務器提交或查詢數據,并通知ZigBee協調器。
2.3 ZigBee網絡系統設計
ZigBee網絡由協調器、路由器、終端節點組成,基于TI公司的CC2530芯片開發,CC2530片上具備2.4 G無線收發器,硬件AES加解密,支持IEEE802.15.4標準,能夠單芯片配合TI提供的Z-Stack協議棧實現ZigBee網絡的組建及通信。
圖2 網關與ZigBee協調器通信接口
ZigBee節點組成結構如圖3所示,節點系統以CC2530為核心,配合電源模塊、按鍵模塊、燈光控制模塊組成,并引出UART接口,以便與網關通信。
圖3 ZigBee節點組成圖
軟件部分配合Z-Stack協議棧開發。協調器與網關通信采用Client/Server模型,網關作為Client端,協調器作為Server端,網關周期性地主動與協調器通信,獲取數據或提交數據。協調器軟件流程圖如圖4所示。
圖4 協調器軟件流程圖
3 智能燈光系統簇結構設計
本系統中實現了開關節點對燈節點的控制及復位操作,燈節點作為輸入節點,開關節點作為輸出節點。兩種節點可以實現以下兩個簇:
ZCL_CLUSTER_ID_GEN_BASIC,
ZCL_CLUSTER_ID_GEN_ON_OFF
本系統軟件部分基于TI公司的Z-Stack協議棧設計,Z-Stack提供了ZCL簇API接口,基于函數回調的方式實現命令處理,其開發流程主要包括以下步驟:
(1)ZCL初始化;
(2)ZCL命令回調函數注冊;
(3)ZCL屬性注冊。
ZCL初始化負責注冊相應端點(endpoint)到AF層。通過調用函數:
void zclHA_Init(SimpleDescriptionFormat_t *simpleDesc)實現對端點的注冊。
其回調函數的數據結構是一個包含多個函數指針的結構體,每一個函數指針對應不同命令的處理,當收到相應命令時便會調用該命令對相應的函數做處理。回調函數注冊API為:
ZStatus_t zclGeneral_RegisterCmdCallbacks (uint8 endpoint, zclGeneral_AppCallbacks_t *callbacks)
通過調用該函數實現端點與對應回調函數的綁定及注冊,當收到相應命令時系統會調用該命令對應的回調函數。
屬性注冊通知系統該節點不同命令所具備的相關屬性值,屬性存儲在一個數組中,該數組的每一個元素對應一個屬性,本系統中的一個屬性記錄結構如下:
{
ZCL_CLUSTER_ID_GEN_ON_OFF, // cluster ID
{ // Attribute record
ATTRID_ON_OFF, //Attribute ID
ZCL_DATATYPE_UINT8, // Data Type
ACCESS_CONTROL_READ, // Read/write
(void *)&zclHomeAppSw_OnOff // Pointer to data field
}
}
每一個簇可以有多個屬性值,每一條屬性都有所屬的簇,屬性包含屬性ID、數據類型、讀寫權限及數據域等參數。
本系統中主要有開關節點和燈節點兩種終端節點,兩種節點要分別實現所需要的簇命令處理函數。
開關節點要實現的簇命令回調函數包括:
zclHomeAppSw0_BasicResetCB, //復位操作
zclHomeAppSw0_IdentifyCB, //確認操作
燈節點要實現的簇命令回調函數包括:
zclSampleLight_BasicResetCB,//復位操作
zclSampleLight_IdentifyCB, //確認操作
zclSampleLight_OnOffCB, //開關命令
4 系統測試
本系統基于ZigBee ZLL規范設計,系統的核心功能是控制器發出開關命令,燈節點收到信號后做出執行動作。系統由一個協調器、4個節點(分為2個燈,2個控制器)、一個網關及onenet云平臺構成。在實驗室環境中做了系統測試。
開關燈命令通過調用Z-Stack API函數實現,函數格式如下:
zclGeneral_SendOnOff_CmdToggle (ZCLHOMEAPPSW0_ENDPOINT, &zclHomeAppSW0_DstAddr, false, HomeAppSW0_TransID );
測試分2種,ZigBee控制節點按鍵控制命令和onenet平臺控制命令如下所示:
(1)通過對ZigBee節點按鍵操作控制Light狀態,燈節點和控制節點相距10 m測試正常,能夠有效通信并控制。
(2)通過onenet平臺對系統測試,網關通過路由器接入Internet。轉變平臺按鍵狀態,ZigBee端收到信號并能夠做出響應,實現了系統的設計目標。
5 結 語
本文設計了基于ZigBee協議ZLL規范的智能燈光系統,實現了基于以太網的遠程訪問控制,系統的核心在于能夠符合ZLL規范,免除了自定義私有應用層協議的麻煩,便于不同廠家設備的互聯互操作。縱觀ZigBee技術的發展,以后的研究重點應放在基于領域規范的標準化設計方面,以便實現產品的標準化開發。
參考文獻
[1]尹紀庭,袁佳,焦志曼,等.基于ARM和Zigbee的智能家居控制系統研究與開發[J].計算機測量與控制,2013,21(9):2451-2454.
[2]吳文忠,李萬磊.基于ARM和ZigBee的智能家居系統[J].計算機工程與設計,2011,32(6):1987-1990.
[3]滿莎,楊恢先,彭友,等.基于ARM9的嵌入式無線智能家居網關設計[J].計算機應用,2010,30(9):2541-2544.
[4]龐泳,李光明.基于Zigbee的智能家居系統改進研究[J].計算機工程與設計,2014,35(5):1547-1550,1582.
[5] Shuyan Zhang,Pingping Xiao,Juan Zhu, et al.Design of Smart Home Control System Based on Cortex-A8 and ZigBee[C].Software Engineering and Service Science(ICSESS),2014 5th IEEE International Conference on,2014:675-678.
[6]姚志鵬.基于Z-stack協議棧ZCL庫且符合HA規范的ZigBee應用開發[J].物聯網技術,2013,3(4):54-56.
[7] Chunlai Zhou,Wenhui Huang,Xiaoyun Zhao.Study on architecture of smart home management system and key devices[C].International Conference on Computer Science and Network Technology, 2013:1255-1258.
[8] Texas Instruments, Inc. Z-Stack ZigBee Cluster Library Application Programming Interface[R].San Diego, California USA: Texas Instruments, Inc.,2011.
[9] ZigBee Alliance. ZigBee Light Link Standard[R].San Ramon, CA: ZigBee Alliance, Inc., 2012.
[10] 中國移動物聯網開放平臺[EB/OL]. Available:http://open.iot.10086.cn/