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

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

簡素化されたトレイトは、ファサード パターンの仕組みと同様に、標準の Google 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

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) }