場景聯動

概述

 iot領域場景聯動,特別是智能家居領域有着很重要的應用價值,場景聯動是已經成爲iot領域的核心應用之一,設備相互連接並且相互作用,催促着物聯網領域不斷向前發展,參考[2];

首先了解一下基本概念,場景表示一種特定的狀態,比如燈打開狀態或者燈關閉狀態、門磁處於打開狀態、報警器處於報警狀態, 動作表示一種行爲,從而使設備處於一種場景中,打開燈(動作)使燈處於打開狀態(場景),結果上來說動作和場景相同,在IOT業務中,動作即是場景;自動化表示從一種場景自動地轉變成另外一種場景,用戶也可以手動點擊觸發場景生成(手點的就不叫自動化了);

自動化從場景A自動地轉變成場景B,那麼場景A就稱爲條件,場景B稱爲動作,條件有幾種來源,第一種是設備上報的數據(也是來源最大的一部分); 第二種是環境數據,比如溫度、溼度、天氣、PM2.5、空氣質量、日落日出,用戶選擇氣象條件時,可以選擇當前城市;第三種是場景本身,場景B作爲動作,同樣也可以作爲條件; 第四種是定時任務,定時或者週期性觸發; 同樣,動作也有大概幾類,第一類是設備動作,打開燈或者關閉燈; 第二類是消息,發送短信,語音,push, 郵件;第三類是場景; 第四類是延時,延時多長時間觸發動作;

總體結構  

 

如圖普通設備通過mqtt把設備時間發送到場景系統,環境數據一般通過消息中間件發送到場景系統; 網關及子設備要分情況對待,如果網關和子設備內部觸發的動作(也即zigbee場景),則不需要經過場景系統,否則需要經過場景系統處理;

場景自動化處理過程

處理過程主要有幾個關鍵步驟,首先是條件匹配,判斷執行條件是否滿足條件;其次,再判斷執行策略,動作只能觸發一次,可連續觸發,觸發有限次數等;最後執行相應動作;

場景條件

條件A,B,C 會存在邏輯與、邏輯或的關係,這兩種關係跟java中&& || 關係運算符功能類似; 當三個條件是邏輯與的關係時,A觸發,則必須B,C都滿足纔會繼續往下走; 當三個條件是邏輯或的關係時,任何一個條件的觸發都會繼續往下走; 

條件爲定時任務,則需要使用中間件作爲觸發源頭,觸發條件執行;

條件表達式計算可以採用groovy表達式;

執行策略

執行策略主要用來控制動作的執行次數,根據業務場景來做不同類型的限制,針對三種場景,對比分析每種策略的適用範圍:

策略名稱 適用範圍
單次執行 避免冗餘觸發
有限次執行 針對家庭有定製需求的用戶,或者收費項目
重複執行 免費消息,很重要的報警

單次執行的適用場景,比如開關打開觸發動作,開關打開之後肯定有關閉,這樣開關才能再次打開,一個開關不可能打開又打開,單次執行適用這種情況; 有限次執行和重複執行相對比較好理解,有限制次數和不限制次數;

場景動作

場景條件,執行策略都滿足後則開始執行動作,場景動作必須按順序執行,順序不同代表的含義也不一樣; 場景動作本身也可以作爲觸發條件,那麼在這種情況下要注意循環調用; A-->B-->C, C-->A 這樣導致A,C不斷被觸發;

zigbee場景

zigbee網關可以存儲與在網關內部相關的場景自動化,這些場景自動化都是可重複執行,在網絡拓撲結構發生變更時,網關規則要及時同步更新;zigbee場景自動化利用網關和子設備交互的特性,避免與雲服務端交互,不僅減少了網絡帶寬,而且效率會有一定程度的提高;

zigbee網關及子設備在處理場景聯動方面會有很多優勢,場景主要分兩種,第一種zigbee子設備觸發時,子設備本身的設備事件會通知zigbee網關,zigbee網關收到子設備消息後上報到雲服務器; 還有一種場景聯動(zigbee場景,也稱本地化場景聯動),zigbee子設備觸發事件,子設備事件通知到網關之後網關本身根據規則直接動作觸發zigbee網關或者其它子設備;

消息隊列

設備上報的事件首先發送到消息隊列,消息隊列發送到場景系統;消息隊列保證消息穩定,可靠,  消息的先後順序;

定時任務

場景條件中有一類是定時觸發,定時條件需要使用到定時中間件,提前把時間存到中間件中,然後到指定時間觸發條件;

參考:

1. https://baijiahao.baidu.com/s?id=1639194454562027661&wfr=spider&for=pc

2. https://www.jianshu.com/p/2090203b9868

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章