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

使いやすさを考慮して、一部の特性には簡素化されたバージョンが用意されており、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 LevelControl
OnOff

簡素化された特徴と Discovery API

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

詳しくは、Android の Discovery API をご覧ください。

簡素化された特性をサポートするデバイスを取得する

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

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