一種Zigbee智能家居終端設(shè)備實現(xiàn)場景功能的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及基于Zigbee通訊方式的智能家居系統(tǒng)。涉及到智能家居常用功能即場景功能的實現(xiàn)方法。是一種終端場景功能,尤其是一種能將場景指令集保存在終端存儲空間中,并可以直接與其他終端進行通訊的終端場景功能。
【背景技術(shù)】
[0002]智能家居是利用先進的計算機技術(shù)、網(wǎng)絡(luò)通訊技術(shù)融合個性需求,將與家居生活有關(guān)的各個用電設(shè)備完美的結(jié)合在一起,通過網(wǎng)絡(luò)控制和管理,實現(xiàn)全智能化的生活方式。場景功能是智能家居自動化的一個靚麗體現(xiàn)。借助于一個場景,可以完成一系列的操作,例如同時打開家里所有的開關(guān),這是傳統(tǒng)單個開關(guān)和單個設(shè)備無法實現(xiàn)的也是智能家居的核心功能之一。
[0003]傳統(tǒng)的智能家居場景功能,大多是將場景指令集保存在網(wǎng)關(guān)中,這樣導致網(wǎng)關(guān)的工作量比較大,網(wǎng)關(guān)的存儲空間畢竟是有限的,不可能存儲大量的場景。本發(fā)明采用的是用終端設(shè)備存儲空間存儲場景指令集,大大減小了網(wǎng)關(guān)的工作量,而且每個終端都能存儲場景指令,大大提高了整個智能家居系統(tǒng)的存儲空間。
[0004]存儲在網(wǎng)關(guān)中的場景,除了存儲容量受限制外,由于控制指令都是由網(wǎng)關(guān)發(fā)出的,也就是說智能家居網(wǎng)絡(luò)結(jié)構(gòu)是星狀結(jié)構(gòu),即一個網(wǎng)關(guān)控制多個終端,這樣,對網(wǎng)關(guān)的要求比較高,一旦網(wǎng)關(guān)出現(xiàn)故障,整個系統(tǒng)將處于癱瘓狀態(tài),場景功能也將失效。
[0005]基于Zigbee的智能家居系統(tǒng),場景功能由網(wǎng)關(guān)來存儲和實現(xiàn)時,需要要求場景指令集合中涉及到的終端設(shè)備到中控網(wǎng)關(guān)之間的無線通訊的鏈路完好,這對中控網(wǎng)關(guān)的信號強度,安裝位置,以及網(wǎng)關(guān)通訊的頻度都有諸多限制,這也是Zigbee無線通訊方式的智能家居系統(tǒng)項目實施效果不佳,受到諸多限制的重要原因之一。
[0006]本發(fā)明充分利用了 Zigbee技術(shù)對等網(wǎng)狀結(jié)構(gòu),即網(wǎng)關(guān)可以控制終端,終端也能直接控制其他終端,把場景分布設(shè)置在各個終端設(shè)備上,這樣,即使網(wǎng)關(guān)故障或與網(wǎng)關(guān)的無線通訊鏈路故障,其他的終端設(shè)備已經(jīng)設(shè)置好的場景仍然可以完成場景工作,從而改進了無線智能家居系統(tǒng)的可靠性能。
[0007]本發(fā)明公開的終端場景方法,是既有中控智能家居系統(tǒng)的一項改進,無論在有線系統(tǒng)或無線系統(tǒng),利用本方法改進智能家居場景功能后,智能家居系統(tǒng)不再依賴中控網(wǎng)關(guān)來控制所有設(shè)備,這種分布式控制的方法大大提高了系統(tǒng)的容錯能力,即使智能家居中部分設(shè)備損壞,只要某端到某端的通訊路徑完好,該部分的控制仍然可以照常工作,這樣實現(xiàn)真正的端到端直接控制,也就是說控制信號的傳送路徑發(fā)生根本改變。
[0008]該項技術(shù)是基于Zigbee無線通訊來實現(xiàn),盡管Zigbee無線技術(shù)提供了端到端通訊方式,但是在現(xiàn)有的基于Zigbee的智能家居系統(tǒng)中,場景的控制仍然是采用的中控模式,即各個終端端點都由中央網(wǎng)關(guān)來控制,場景也保存在中央控制器或網(wǎng)關(guān)中,或者保存在移動終端設(shè)備甚至是云端設(shè)備,場景調(diào)用執(zhí)行時由網(wǎng)關(guān)中控來指揮,也就是仍存在依賴中控網(wǎng)關(guān)的問題。
【發(fā)明內(nèi)容】
[0009]本發(fā)明是把場景指令集保存到終端設(shè)備中,并由保存有場景的終端設(shè)備來指揮場景的執(zhí)行。當用戶用指令調(diào)用場景或直接由終端設(shè)備操作控制調(diào)用終端設(shè)備中場景時由保存有場景的終端設(shè)備來指揮場景的執(zhí)行。本發(fā)明能有效解決上述問題。
[0010]為實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案,其中包括編寫場景、保存場景、調(diào)用場景三部分。
[0011]其中,編寫場景是指創(chuàng)建一套指令集,通過移動終端編輯成一條條指令,先可在移動終端上保存為一個場景,也可以直接逐條發(fā)送出去到Zigbee終端設(shè)備。編輯場景的指令集合需編寫場景起始、指令間隔、跨頁指示、場景結(jié)束等幾種指令標識符。其中,指令間隔用于把指令區(qū)分開,這樣指令是可以變長度的。跨頁指示,由于Zigbee模塊的非易失性存儲器存在每段存儲器容量有限制,也就是頁面大小,通常為每頁255字節(jié),超過此長度即需要跨頁處理,編輯場景時就要考慮這個問題。場景結(jié)束,用于場景結(jié)束的算法判斷。
[0012]場景編寫按上述規(guī)則完成后,在移動終端上操作,經(jīng)由網(wǎng)關(guān)將指令與間隔符等逐條發(fā)送到Zigbee終端模塊上,場景保存是指終端設(shè)備將接收到的指令集合保存到片內(nèi)的非易失性存儲器中。
[0013]調(diào)用場景是指保存有場景的終端設(shè)備按收到調(diào)用場景指令,或者終端設(shè)備被手動觸發(fā),如按鍵,終端設(shè)備會開始解析對應(yīng)場景的指令集合,并逐條發(fā)送或執(zhí)行指令,以實現(xiàn)場景功能。
【附圖說明】
[0014]圖1本發(fā)明網(wǎng)絡(luò)結(jié)構(gòu)示意框圖。
【具體實施方式】
[0015]本發(fā)明的目的是提供一種將智能家居場景指令集保存到終端設(shè)備,當用戶調(diào)用場景時直接由終端設(shè)備控制調(diào)用終端設(shè)備的指令的方法,其中包括編寫場景、保存場景、調(diào)用場景三部分。
[0016]場景編寫部分實現(xiàn)方法,場景是一套指令的集合,每個指令之間有間隔符號,間隔符分為三種:“&&”、“&; ”、“&! ”。其中,“&&”間隔符表示還沒有結(jié)束,下面還有指令發(fā)送過來并且已發(fā)送的這一節(jié)數(shù)據(jù)長度沒有超過255,在單片機系統(tǒng)中,一個非易失存儲器的分區(qū)不能太大,以255為例,就需要按分區(qū)極限設(shè)限制;“&; ”也表示場景還沒有結(jié)束,下面還有指令發(fā)送過來并且已發(fā)送的這一節(jié)數(shù)據(jù)長度超過255,模塊需要另起一個存儲單元存儲數(shù)據(jù);“&!”是結(jié)尾終止符,表示下面已經(jīng)沒有指令了,結(jié)束寫場景狀態(tài)。由于Zigbee模塊一次傳送的指令不能太多,這些指令用戶需要一條條的發(fā)送給網(wǎng)關(guān)。網(wǎng)關(guān)再逐條通過Zigbee通訊方式轉(zhuǎn)發(fā)到Zigbee網(wǎng)絡(luò)中的終端設(shè)備上,終端設(shè)備接收這些指令后逐個分析處理。
[0017]保存場景的過程,為把場景保存到Zigbee模塊的存儲器中,首先需要在其片內(nèi)的非易失存儲器中設(shè)定一段存儲空間。以設(shè)置20個場景為例,設(shè)置0x0400為起始的第一個場景,共20個,那么當一個場景的長度超過了分頁的大小,例如255時,就按一個固定偏移量取用下一個空間,例如偏移量是“30”,那么對場景“01”來說,分配給場景“01”的存儲空間是0x0400+01起,然后,如果一個頁空間即255個不夠,那么場景“01”的下一段空間是0x0400+01+30。這種存儲方法有效利用空間,又能用簡單的程序就可以實現(xiàn),特別解決存場景指令較多時,存儲空間可以跨頁面使用。當Zigbee模塊接收到場景指令時,按上述的方法來實現(xiàn)存儲場景的過程。
[0018]發(fā)給終端的指令是一條條發(fā)送的,這是因為Zigbee的每個包長的負載有限。第一條是通知終端模塊準備接收場景的指令,指令中有編寫場景的代號。后面每個指令發(fā)到終端就表示編寫的都是該編號下的場景中的指令了。指令的格式和合法性判斷工作由手機APP實現(xiàn),zigbee模塊的單片機在此處只接收信息并按算法保存。分頁管理單片機程序內(nèi)部的存儲器分配和使用,由單片機負責完成。具體方法,如本段上述介紹的。
[0019]場景的調(diào)用過程:存儲好場景后,場景的調(diào)用是指令調(diào)用的方式,但指令的觸發(fā)可以有多種方式,既可以是由Zigbee通訊接收指令觸發(fā),也可以是定時啟動指令觸發(fā),還可以是終端設(shè)備上的按鍵等手動方式觸發(fā)。在程序內(nèi)部,都是一個指定場景代號的觸發(fā)指令來完成。當手動觸發(fā)時,可以有多個按鍵,例如一個三路觸摸開關(guān)有三個按鍵,那么這三個按鍵可以分別對應(yīng)于三個不同的場景。
[0020]場景的執(zhí)行過程,當觸發(fā)場景的條件成立后,終端設(shè)備根據(jù)場景ID的不同,在對應(yīng)的存儲空間查詢出對應(yīng)的場景指令,這個場景指令可能會有多達幾十條的指令,發(fā)送這些指令不能簡單的循環(huán)發(fā)送。要在Zigbee模塊內(nèi)部程序中定義一個任務(wù)事件,觸發(fā)這個任務(wù)后,每100毫秒左右,循環(huán)執(zhí)行此任務(wù),每執(zhí)行一次任務(wù),發(fā)送指令集中一條指令。這是因為Zigbee模塊的CPU是多任務(wù)的,長期獨占CPU會導致系統(tǒng)崩潰。也是避免一個終端設(shè)備集中時間占用通訊信道,其他設(shè)備無法正常工作的方法。指令集合中的指令,可以是發(fā)往其他終端設(shè)備的指令,也可以是發(fā)送給自己執(zhí)行的指令,還可以是發(fā)送到網(wǎng)關(guān)交由網(wǎng)關(guān)轉(zhuǎn)發(fā)到其他設(shè)備的指令。指令中可以有調(diào)