Android での簡素化されたトレイト

使いやすさを考慮して、一部のトレイトの簡略版が Android の Automation API で使用できます。

簡略化されたトレイトは、 ファサード パターンが 機能する のと同様に、標準の Home API トレイトの代わりに使用されます。簡略化されたトレイトには、特定のデバイスタイプで一般的なタスクを簡単にするコマンドが用意されています。簡略化されたトレイトは Home API トレイトであり、他の Home API トレイトと同様に、MatterCloud-to-cloud デバイスの両方で動作します。

簡略化されたトレイトは、対応する標準トレイトよりもデバイス固有の属性とコマンドの代替サブセットを提供します。 たとえば、標準の LevelControl トレイトは、数値の範囲で連続的に変化する 設定を持つ任意のデバイスで使用できる汎用トレイトです。 BrightnessLevelControl の代わりに使用される 簡略化されたトレイトで、 DimmableLight デバイスに必要な コマンドと属性のみを提供します。Brightness には、単一の brightnessPercent 引数を受け取る moveToBrightness コマンドがありますが、LevelControl には複数の move コマンドがあり、そのほとんどが、より広範なユースケースに対応するために少なくとも 4 つのパラメータを持っています。

次の表に、各簡略化されたトレイトと基盤となる標準トレイトを示します。各トレイト名は、対応する API ドキュメントにリンクしています。

表: 簡略化されたトレイト
簡略化されたトレイト 標準トレイト
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

簡略化されたトレイトと Discovery API

Discovery API は、簡略化されたトレイトと基盤となる 標準トレイトの両方が FactoryRegistryに登録されている限り、両方のトレイトを報告します。たとえば、構造内に DimmableLight デバイスがあり、デベロッパーが LevelControl トレイトと Brightness トレイトの両方を FactoryRegistry に登録した場合、Discovery API は両方のトレイトの存在を示します。デベロッパーは、自動化でどちらのトレイトを使用するかを選択できます。

詳細については、Android の Discovery API をご覧ください。

簡略化されたトレイトをサポートするデバイスを取得する

Device API を使用して、SimplifiedThermostat などの簡略化されたトレイトをサポートする構造内のデバイスを取得する場合、has(trait) メソッドは使用できません。代わりに、has(deviceType) メソッドを使用します。

val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }