iOS 向け Home API は、Google Home エコシステム内のすべてのデバイスを統合データモデルで表示します。このデータモデルは、基盤となるスマートホーム テクノロジー(Matter や Cloud-to-cloud など)に関係なく、すべてのタイプのデバイス(Google Nest またはサードパーティ メーカー製)をカバーし、smart home とモバイルアプリ デベロッパーの両方にユーザー エクスペリエンスを構築するための共通の API サーフェスを提供します。
デバイスタイプ
Home API に表示されるデバイスタイプは、Matter データモデルと Cloud-to-cloud データモデルを統合したものです。Matter から直接派生したもの、Matter デバイスタイプの拡張機能、Cloud-to-cloud から派生したものがあります。
デバイスタイプには、デバイスの制御と管理に使用されるトレイトが含まれています。デバイスタイプと同様に、トレイトは Matter クラスタと Cloud-to-cloud トレイトから派生し、Matter クラスタと同様の共通形式で表示されます。Home API では、Matter から派生したトレイトは、クラスタではなくトレイトと呼ばれます。
そのため、Home API のデバイスタイプとトレイトは Matter ファーストを想定しています。Matter のデバイスタイプまたはトレイトは、Cloud-to-cloud の類似物よりも優先されます。
デバイスタイプとそのトレイトの一覧については、iOS でサポートされているデバイスタイプをご覧ください。
トレイト
Swift バージョンのトレイトは、Home API で使用するために生成され、Home API に固有の追加機能(Matter または Cloud-to-cloud にはない機能)が含まれています。たとえば、各トレイトには、トレイトが特定の属性またはコマンドをサポートしているかどうかを確認するメソッドがあります。これは、ユーザーのデバイスで状態の読み取りや特定のアクションを実行できるかどうかを判断する際に役立ちます。デバイスタイプ内のすべてのデバイスが同じ機能をすべて備えているとは限らないためです。
トレイトとデバイスタイプをインポートするには、GoogleHomeTypes モジュールをアプリケーションにインポートします。
import GoogleHomeTypes
また、トレイト名とデバイスタイプ名に typealias を使用すると、コードを短縮し、名前空間の繰り返しを回避できます。
import GoogleHomeTypes
typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType
ほとんどのトレイトは、自動化での使用がサポートされています。一部のトレイトは、自動化でのみ使用できます。詳細については、Android での Automation API トレイトのサポートをご覧ください。
デバイスタイプの構成
Home API は、ほとんどの Matter アプリケーション クラスタをデータモデルのトレイトとしてサポートしています。Binding など、エンドユーザーに直接ユーティリティを提供しない低レベルの構成クラスタは、Home API を介して直接公開されません。デバイス グループの詳細については、Structure API をご覧ください。
Cloud-to-cloud スマートホーム トレイトから派生したトレイトは、通常、Cloud-to-cloud と Home API の間で同じ名前になります(OpenCloseTrait の例など)。その他は、Matter メーカー固有の拡張機能を使用して作成された Matter トレイトの拡張機能として表されます。これらのトレイトは、Matter SDK と Google Home エコシステムの間で機能が分割されている smart home トレイトのギャップを埋めます。この具体的な例として、Cloud-to-cloud から取得されるものの、Matter の類似物がまだない Google* デバイスタイプがあります。
デバイスタイプは、Matter または Cloud-to-cloud のいずれかまたは両方のソースのトレイトで構成されます。
たとえば、FanDeviceType は両方で構成され、次の 3 つの特性を備えています。
IdentifyTraitMatter トレイトは、MatterIdentifyTraitのすべての機能を提供します。FanControlTraitMatter トレイトは、MatterFanControlTraitのすべての機能を提供します。ExtendedFanControlTraitGoogle トレイトは、FanControlTraitMatter トレイトでカバーされていない Google smart homeFanSpeedTraitのすべての機能を提供します。
このタイプのトレイト構成は、完全なデバイスタイプ機能に柔軟なモデルを提供し、基盤となる smart home データモデルを抽象化します。
デバイス グループ
デバイス グループは、1 つのストラクチャ内のデバイスのユーザー定義コレクションを表します。グループ メンバーシップは Google サービスに保持され、ストラクチャの他のメンバーや、ストラクチャにアクセスできる他のアプリに表示されます。
デバイス グループは DeviceGroup エンティティで表されます。これは HomeDevice とは異なります。各 HomeDevice は、GroupMembershipTrait を介して、自身が属するグループを一覧表示します。これにより、アプリはグループ メンバーシップを検査し、グループのメンバー デバイスを直接反復処理できます。さらに、DeviceGroup は HasParts プロトコルに準拠しており、グループ全体をターゲットとする場合に、メンバー デバイスでサポートされているデバイスタイプを公開します。
デバイス グループの詳細については、Structure API とデバイス グループを制御するをご覧ください。