Android 向け Google Home API は、統合された API サーフェスを提供します。これにより、デベロッパーはユーザーの家のエンティティの状態を操作できます。これらのエンティティは、ユーザーの構造と部屋に関連付けられたデバイスとデバイス以外の情報を記述できます。
Home API は、ユーザーが操作できる次のエンティティを定義します。
- ストラクチャは、部屋とデバイスを含む家を表します。
- 部屋はストラクチャの一部であり、デバイスが含まれています。
- デバイスは、属性を含むトレイトを実装し、タイプに準拠し、イベントを送信し、コマンドに応答します。
- 自動化は構造の一部であり、家のメタデータとデバイスを使用して家のタスクを自動化します。
図 1 はこのアーキテクチャを示したものです。
Home API デバイスタイプは、スマートホームのオープン スタンダードである Matter をベースに構築されているか、Google Home エコシステムの Cloud-to-cloud デバイスです。一部のデバイスタイプでは、両方の機能が組み込まれている場合があります。詳細については、Android でサポートされているデバイスの種類をご覧ください。
Matter では、デバイスの機能はクラスタごとにグループ化されます。クラスタは、Home API で Matter 標準の特徴として表されます。Home API は、現在の Matter 仕様で定義されている標準の Matter クラスタセットをサポートしています。
Google Home エコシステムでは、デバイスの機能はスマートホーム トレイトでグループ化されます。これらのトレイトは、Home API では Google スマートホーム トレイトとして表されます。Home API は、Cloud-to-cloud プログラムで定義されているスマートホーム トレイトのセットをサポートしています。
メーカー固有のクラスタやプラットフォームの特徴など、他の特徴も使用できます。詳しくは、Android のデータモデルをご覧ください。
言語
Android 向けの Home API は Kotlin で記述されており、Flow を使用して状態とサブスクリプションを管理する Kotlin の標準インターフェースを提供します。これには、標準のサブスクリプション API にはない多くの利点があります。
コルーチン、フロー、Jetpack Compose に関する Kotlin のドキュメントをまだ確認していない場合は、確認することをおすすめします。
- Kotlin で Android アプリを開発する
- Kotlin for Android について学ぶ
- Android での Kotlin コルーチン。次の Codelab が役に立つ場合があります。
- Android での Kotlin Flow、特に StateFlow。
- 状態と Jetpack Compose、特に
collectAsStateWithLifecycle()
関数。この関数は、その状態を示す UI が実際にフォアグラウンドにあるかどうかに基づいて、フローの登録と登録解除を自動的に管理します。 - Automation API を使用している場合は、Kotlin のタイプセーフ ビルダーについて確認すると、Automation DSL の仕組みを理解するのに役立ちます。
エンティティ ID
Home APIs の各エンティティには、プライマリ ID を表す ID があります。この ID は、エンティティの存続期間中は変更されない一意の安定した識別子です。この ID は、エンティティのメタデータが変更される可能性があるため、オブジェクトをキャッシュに保存したり、等価性をチェックしたりするために使用できます。
ID を持つエンティティについては、HasId
インターフェースをご覧ください。
用語マッピング
Home API のエンティティは、次のように Matter コンセプトと Cloud-to-cloud コンセプトにマッピングされます。
Google Home の API | Matter | Cloud-to-cloud |
---|---|---|
トレイト | クラスタ | トレイト |
属性 | 属性 | 属性、状態 |
コマンド | コマンド | コマンド |
イベント | イベント | フォローアップの回答、通知 |