使いやすさを考慮して、一部のトレイトの簡略版が Android の Automation API で使用できます。
簡略化されたトレイトは、 ファサード パターンが 機能する のと同様に、標準の Home API トレイトの代わりに使用されます。簡略化されたトレイトには、特定のデバイスタイプで一般的なタスクを簡単にするコマンドが用意されています。簡略化されたトレイトは Home API トレイトであり、他の Home API トレイトと同様に、Matter と Cloud-to-cloud デバイスの両方で動作します。
簡略化されたトレイトは、対応する標準トレイトよりもデバイス固有の属性とコマンドの代替サブセットを提供します。
たとえば、標準の
LevelControl
トレイトは、数値の範囲で連続的に変化する
設定を持つ任意のデバイスで使用できる汎用トレイトです。
Brightness は、
LevelControl の代わりに使用される
簡略化されたトレイトで、
DimmableLight
デバイスに必要なコマンドと属性のみを提供します。Brightness には、単一の
brightnessPercent 引数を受け取る
moveToBrightness コマンドがありますが、LevelControl には複数の move
コマンドがあり、ほとんどのコマンドには、より広範なユースケースに対応するために少なくとも 4 つのパラメータがあります。
次の表に、各簡略化されたトレイトと基盤となる標準トレイトを示します。各トレイト名は、対応する API ドキュメントにリンクしています。
| 簡略化されたトレイト | 標準トレイト |
|---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControlOnOff
|
簡略化されたトレイトと Discovery API
Discovery API は、両方のトレイトが
FactoryRegistryに登録されている限り、簡略化されたトレイトとその基盤となる
標準トレイトを報告します。たとえば、構造内にDimmableLight デバイスがあり、デベロッパーが
FactoryRegistry に
LevelControl
と
Brightness トレイトの両方を登録した場合、Discovery API は両方の
トレイトの存在を示します。デベロッパーは、自動化でどちらのトレイトを使用するかを選択できます。
詳細については、Android の Discovery API をご覧ください。
簡略化されたトレイトをサポートするデバイスを取得する
Device API を使用して、SimplifiedThermostat
などの簡略化されたトレイトをサポートする構造内のデバイスを取得する場合、has(trait) メソッドは使用できません。代わりに、has(deviceType)
メソッドを使用します。
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }