
該模式描述了底層數據模型,該模型驅動Weave系統中邏輯或物理設備發出的數據的表示和解釋。
該架構為:
- 標準化-它包含經過正式批准的功能定義,這些定義可提供一致的接口,而與實現無關。例如,模式中表示的燈泡將始終具有核心功能,例如開/關狀態和動作或調光級別。
- 可組合的-用戶可以創建複雜的資源,這些資源由定義明確的功能的較小部分組成。例如,嵌套檢測包含兩種類型的傳感器:運動傳感器和打開/關閉傳感器。這些傳感器類型的功能已在架構中標準化,並可在設備之間重複使用。
- 可擴展-用戶可以創建標準功能的自定義擴展。例如,您可能想使用特定安全應用程序的其他功能來擴展架構的標準運動傳感器功能。
- 版本化—模式中的所有更改都經過版本化,以實現向前和向後兼容性。
該模式定義了三個元素:特徵,接口和資源。架構中定義了Nest生態系統中用於日常操作的幾乎所有功能。讓我們更深入地研究每個元素。
特質
特徵
是基本功能的單位。它們可能是一般的設備狀態或功能,或者描述了通知其行為的配置。單個特徵可能是許多設備共有的,或者特定於一種類型的設備。例如,在模式中,您可以定義以下特徵以在Nest設備中使用:

介面
我們可以通過將特徵組合在一起來擴展特徵的可組合性,尤其是當多個特征代表一個新的特定功能時。這樣的一組特徵稱為接口
。例如,對講接口可能包含揚聲器和麥克風特徵:

資源資源
資源
表示架構中的邏輯或物理事物。例如,Nest Protect是一種資源。 Nest Guard也是如此。或用戶,或諸如用戶房屋之類的結構。資源包括一組特性,這些特性封裝了它們的配置,狀態和功能。
資源,接口和特徵之間的關係如下所示:

如您所見,某些特徵(例如“運動”特徵)對於不同的資源是共有的。而且某些接口(如對講接口)對於不同的資源也是通用的。特性,接口和資源在模式中定義一次,並在Weave系統中的不同資源和設備之間重複使用。
特質元素
特性進一步細分為三個主要元素:屬性,命令和事件。讓我們看一下每個特徵元素的示例。
物產
屬性
代表特徵的狀態。屬性是讀寫的或只讀的。例如:
- 軟件版本是設備身份特徵的屬性。這是大多數設備具有的一般特徵。 Nest恆溫器,攝像頭和保護器-所有這些都有各自特定的軟件版本。
- 螺栓狀態是螺栓鎖定特性的屬性,但特定於Yale x Nest Lock之類的設備。例如,您不會在Nest Thermostat上找到螺栓鎖。
指令
命令
是針對特質的特質自定義請求,用於特質的動作,並具有預期的響應。它們通常稱為自定義命令,可以擴展到屬性的特定狀態更改。例如:- “螺栓鎖定更改”是一個自定義命令,用於更改“螺栓鎖定”特徵的“螺栓狀態”屬性。
- 設置用戶密碼是一個自定義命令,用於創建新的或更新“用戶密碼設置”特徵的現有“用戶密碼”屬性。
大事記
事件
是特質事件的記錄。它們將特徵屬性的更改或其他類型的事件(例如係統重置)通知給訂戶。例如,“螺栓鎖定”特徵的“螺栓致動器狀態變化”事件將多個螺栓鎖定屬性的當前狀態以及上次導致“螺栓致動器狀態”屬性發生變化的參與者通知給訂戶。所有這些信息都作為單個事件傳遞。
編織模式描述語言
Weave中的架構特徵,接口和資源是使用領域專用語言(DSL)定義和描述的,該語言利用了Google協議緩衝區v3的語法。這種語言稱為編織模式描述語言(WDL)
。WDL通過編譯器運行,該編譯器生成不同的特定於平台的實現和編碼。生成的代碼類型取決於資源:
- Objective C,Swift,Java,Scala —移動應用程序和雲服務
- 具有Weave TLV編碼的C ++ —嵌入式設備和移動應用
稍後,我們將更深入地研究WDL示例。
回顧
您學到了什麼:
- 模式 描述了Weave系統的基礎數據模型。
- 該架構定義了三個元素:
- 特徵 基本功能單元
- 接口 一組代表新的特定功能的特徵
- 資源 邏輯或物理事物
- 特性包括屬性,命令和事件:
- 屬性 資源特徵的狀態
- 命令 自定義動作請求
- Event 特質事件記錄
- 該架構是使用基於Google協議緩衝區v3的Weave架構描述語言(WDL) 定義的
有關更多詳細信息,請參閱: