使いやすさを考慮して、一部のトレイトの簡略化されたバージョンが Android の Automation API で使用できます。
簡略化されたトレイトは、標準の Home API トレイトの代わりに使用されます。これは、ファサード パターンの仕組みに似ています。簡略化されたトレイトは、特定のデバイスタイプで一般的なタスクを簡単に実行できるコマンドを提供します。簡略化されたトレイトは Home API トレイトであり、他の Home API トレイトと同様に、Matter デバイスと Cloud-to-cloud デバイスの両方で機能します。
簡略化されたトレイトは、対応する標準トレイトよりもデバイス固有の属性とコマンドの代替サブセットを提供します。たとえば、標準の LevelControl
トレイトは、数値の範囲にわたって連続的に変化する設定を持つあらゆるデバイスで使用できる汎用トレイトです。Brightness
は、LevelControl
の代わりとなる簡略化されたトレイトで、DimmableLight
デバイスに必要なコマンドと属性のみを提供します。Brightness
には 1 つの brightnessPercent
引数を取る moveToBrightness
コマンドがありますが、LevelControl
には複数の move
コマンドがあり、そのほとんどは幅広いユースケースに対応するために少なくとも 4 つのパラメータがあります。
次の表に、各簡略化された特性と、基盤となる標準特性を示します。各トレイト名は、対応する API ドキュメントにリンクしています。
簡略化されたトレイト | 標準の特性 |
---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControl OnOff
|
簡素化された特性と Discovery API
ディスカバリ 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) }