Weave 結構定義

編織結構定義

結構定義說明基礎資料模型,該資料值用於表示及解讀 Weave 系統中邏輯或實體裝置所發出的資料。

結構定義如下:

  • 標準化 — 包含正式核准的功能定義,無論實作方式為何,都能提供一致的介面。例如,結構定義所示的燈泡一律具備核心功能,例如開啟/關閉狀態,以及動作或調暗等級。
  • 可組合性 — 使用者可以建立由小規模定義完善的複雜資源。例如,Nest Detect 包含動作和開放/關閉這兩種感應器。這類感應器的功能在結構定義中已標準化,並且可在各種裝置上重複使用。
  • 可擴充 — 使用者可以建立自訂標準功能。例如,您可能想要針對特定安全性應用程式,擴充結構定義的標準動作感應器功能。
  • 版本管理 - 結構定義中的所有變更均以向前和向前相容性相容。

結構定義定義了 3 種元素:特性、介面和資源。結構定義中幾乎用於 Nest 生態系統的所有功能。接著就來深入瞭解各個元素。

特性

「特性」 是基本功能的單位。這些裝置可能是一般的裝置狀態或功能,或者會說明其行為。單一特性通常對許多裝置而言很常見,或僅適用於一種裝置類型。

例如,您可以在結構定義中定義下列用於 Nest 裝置的特徵:

特性

介面

我們可以將特徵分為一組,以此做為擴充的可組合性,尤其是如果多個特徵代表一個新的特定函式。這類特性稱為「介面」

舉例來說,Intercom 介面可能包含揚聲器和麥克風特性:

特性和介面

資源

資源 代表結構定義中的邏輯或實體項目,例如,Nest Protect 是一項資源。這是 Nest Guard或是使用者,或使用者的住家等結構。

資源包含一組設定其狀態、狀態和能力的特徵。

資源、介面和特性之間的關係如下:

資源、介面和特性

如您所見,某些特性 (例如動態元素) 是不同的資源。有些介面 (例如 Intercom 介面) 也同樣適用於不同資源。結構定義、介面和資源會在結構定義中定義一次,並在 Weave 系統的不同資源和裝置上重複使用。

特性元素

特徵進一步細分為三個主要元素:屬性、指令和事件。讓我們來看看每個特徵元素的範例。

屬性

「屬性」 代表特徵的「狀態」,屬性為讀寫或唯讀。

例如:

  • 軟體版本是裝置身分特性的屬性。這是多數裝置的常見特性Nest Thermostat、攝影機和 Nest Protect 都具備專屬的軟體版本。
  • Bolt State 是 Bolt Lock 特性的一項屬性,但僅適用於 Yale x Nest Lock 等裝置。例如,Nest 溫度控制器找不到螺栓鎖

指令

Command 是針對該特性的特性專屬自訂動作要求,並提供預期的回應。這類函式通常稱為「自訂指令」,可以延伸到屬性的特定狀態變更。例如:

  • Bolt 鎖定變更是自訂指令,用於變更 Bolt Lock 特性的 Bolt State 屬性。
  • 「設定使用者 PIN 碼」是一種自訂指令,用於建立新的使用者 PIN 碼設定,或更新現有的使用者 PIN 碼屬性。

活動

事件 是一特性的發生記錄。會通知訂閱者特性的特性,或發生其他類型類型的變更,例如系統重設。

例如,Bolt Lock 特性的 Bolt Actuator State Change 事件會通知多個 Bolt Lock 屬性目前狀態的訂閱者,以及最後導致 Bolt Actuator State 屬性變更的執行者。這些資訊均以單一事件的形式傳送。

編織結構定義說明語言

Weave 中的結構定義特性、介面和資源,是以採用 Google 通訊協定緩衝區 v3 語法的特定網域語言 (DSL) 來定義並說明。這種語言稱為 Weave Schema Description Language (WDL)

WDL 是透過產生不同平台專屬實作和編碼的編譯器執行。產生的程式碼類型取決於資源:

  • Objective-C、Swift、Java、Scala — 行動應用程式和雲端服務
  • 使用 Weave TLV 編碼的 C++ - 嵌入式裝置和行動應用程式

我們稍後會深入探討 WDL 範例。

複習內容

涵蓋內容:

  • 結構定義 說明瞭 Weave 系統的基礎資料模型。
  • 結構定義定義三個元素:
    • Trait 基本功能單位
    • 介面 代表一組特定新函式的特性
    • 資源 邏輯或實體項目
  • 特徵包含屬性、指令和事件:
    • 屬性 資源特性的狀態
    • 指令 自訂特徵動作要求
    • 事件 事件的發生事件記錄
  • 結構定義使用 Google 通訊協定緩衝區 v3 的 Weave Schema Description Language (WDL) 來定義。

如需進一步瞭解相關資訊,請參閱: