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