Google is committed to advancing racial equity for Black communities. See how.
このページは Cloud Translation API によって翻訳されました。
Switch to English

織りスキーマ

織りスキーマ

スキーマは、Weaveシステムの論理デバイスまたは物理デバイスによって放出されたデータの表現と解釈を促進する、基礎となるデータモデルを記述します

スキーマは次のとおりです。

  • 標準化—実装に関係なく、一貫したインターフェイスを提供する機能の正式に承認された定義が含まれています。たとえば、スキーマで表される電球は、オン/オフの状態やアクション、または調光のレベルなどのコア機能を常に備えています。
  • 構成可能—ユーザーは、明確に定義された機能の小さなビットで構成される複雑なリソースを作成できます。たとえば、Nest Detectには、モーションと開閉の2種類のセンサーが含まれています。これらのセンサータイプの機能はスキーマで標準化されており、デバイス間で再利用できます。
  • 拡張可能—ユーザーは、標準機能のカスタム拡張を作成できます。たとえば、スキーマの標準モーションセンサー機能を、特定のセキュリティアプリケーション用の追加機能で拡張したい場合があります。
  • バージョン管理—スキーマのすべての変更は、上位互換性と下位互換性のためにバージョン管理されます。

スキーマは、特性、インターフェース、リソースの3つの要素を定義します。 Nestエコシステムの日常業務用のほぼすべての機能は、スキーマで定義されています。各要素についてさらに詳しく見ていきましょう。

特性

特性 は、基本的な機能の単位です。それらは、一般的なデバイスの状態または機能であるか、その動作を通知する構成を記述している可能性があります。単一の特性は、多くのデバイスに共通する場合と、1つのタイプのデバイスに固有の場合があります。

たとえば、スキーマでは、Nestデバイスで使用する次の特性を定義できます。

特性

インターフェース

特に複数の特性が新しい特定の機能を表す場合は、特性をグループ化することにより、特性の構成可能性を拡張できます。このような特性のグループは、 インターフェース と呼ばれます

たとえば、インターコムインターフェイスは、スピーカーとマイクの特性で構成されます。

特性とインターフェース

資源

リソース は、スキーマ内の論理的または物理的なものを表します。たとえば、Nest Protectはリソースです。 Nest Guardも同様です。または、ユーザー、またはユーザーの家などの構造。

リソースは、構成、状態、機能をカプセル化する一連の特性で構成されます。

リソース、インターフェース、トレイトの関係は次のようになります。

リソース、インターフェース、および特性

ご覧のとおり、Motionトレイトなどの一部のトレイトは、さまざまなリソースに共通しています。また、インターコムインターフェイスなどの一部のインターフェイスも、さまざまなリソースに共通です。特性、インターフェース、およびリソースは、スキーマで一度定義され、Weaveシステムのさまざまなリソースおよびデバイスで再利用されます。

特性要素

トレイトはさらに3つの主要な要素に分けられます:プロパティ、コマンド、イベント。各特性要素の例を見てみましょう。

プロパティ

プロパティ は、特性の状態を表します 。プロパティは、読み取り/書き込みまたは読み取り専用です。

例えば:

  • ソフトウェアバージョンは、Device Identityトレイトのプロパティです。これは、ほとんどのデバイスが持っている一般的な特性です。 Nestサーモスタット、カメラ、プロテクト-これらすべてに独自のソフトウェアバージョンがあります。
  • Bolt StateはBolt Lockトレイトのプロパティですが、Yale x Nest Lockなどのデバイスに固有です。たとえば、Nestサーモスタットにボルトロックはありません。

コマンド

コマンド は、特性のアクションに対する特性固有のカスタム要求であり、予期される応答を伴います。これらは一般にカスタムコマンドと呼ばれ、プロパティの特定の状態変更に拡張できます。例えば:

  • Bolt Lock Changeは、Bolt LockトレイトのBolt Stateプロパティを変更するカスタムコマンドです。
  • Set User Pincodeは、User Pincodes Settingsトレイトの新しいUser Pincodeプロパティを作成または更新するカスタムコマンドです。

イベント

イベント は、特性の出来事の記録です 。これらは、特性のプロパティの変更や、システムリセットなどの他のタイプの出来事をサブスクライバーに通知します。

たとえば、Bolt LockトレイトのBolt Actuator State Changeイベントは、複数のBolt Lockプロパティの現在の状態と、最後にBolt Actuator Stateプロパティを変更させたアクターをサブスクライバーに通知します。この情報はすべて、単一のイベントとして配信されます。

織りスキーマ記述言語

Weaveのスキーマ特性、インターフェース、およびリソースは、Google Protocol Buffers v3の構文を活用するドメイン固有言語(DSL)を使用して定義および記述されています。この言語は、 Weaveスキーマ記述言語(WDL) と呼ばれ

WDLは、さまざまなプラットフォーム固有の実現とエンコーディングを生成するコンパイラを介して実行されます。生成されるコードのタイプは、リソースによって異なります。

  • Objective C、Swift、Java、Scala —モバイルアプリとクラウドサービス
  • Weave TLVエンコーディングを使用したC ++ —組み込みデバイスとモバイルアプリ

WDLの例については、後で詳しく説明します。

要約

学んだこと:

  • スキーマは、Weaveシステムの基礎となるデータモデルを記述します。
  • スキーマは3つの要素を定義します。
    • 特性基本機能の単位
    • インターフェース新しい特定の機能を表す特性のグループ
    • リソース論理的または物理的なもの
  • 特性は、プロパティ、コマンド、およびイベントで構成されます。
    • プロパティリソース特性の状態
    • コマンド特性のアクションのカスタム要求
    • イベント特性の発生の記録
  • スキーマは、Google Protocol Buffers v3に基づくWeaveスキーマ記述言語(WDL) を使用して定義されます。

詳細については、以下を参照してください。