Home API の概要

Android 向け Google Home API は、統合された API サーフェスを提供することによって、デベロッパーがユーザーの自宅内のエンティティの状態を操作できるようにします。これらのエンティティは、ユーザーの構造と部屋に関連付けられたデバイスとデバイス以外の情報を記述できます。

Home API は、ユーザーが操作できる次のエンティティを定義します。

  • ストラクチャは、部屋とデバイスを含む家を表します。
  • 部屋はストラクチャの一部であり、デバイスが含まれています。
  • デバイスは、属性を含むトレイトを実装し、タイプに準拠し、イベントを送信し、コマンドに応答します。
  • 自動化は構造の一部であり、家のメタデータとデバイスを使用して家のタスクを自動化します。

図 1 は、このアーキテクチャを示しています。

Home APIs のアーキテクチャを示す図
図 1: Home API のアーキテクチャ

Home API デバイスタイプは、スマートホームのオープン スタンダードである Matter をベースにしている場合や、Google Home エコシステムの Cloud-to-cloud デバイスである場合があります。一部のデバイスタイプでは、両方の機能が組み込まれている場合があります。詳細については、サポートされているデバイスの種類をご覧ください。

Matter では、デバイスの機能はクラスタごとにグループ化されます。クラスタは、Home API で Matter 標準の特徴として表されます。Home API は、現在の Matter 仕様で定義されている Matter クラスタの標準セットをサポートしています。

Google Home エコシステムでは、デバイスの機能はスマートホーム トレイト別にグループ化されます。これらのトレイトは、Home API では Google スマートホーム トレイトとして表されます。Home API は、Cloud-to-cloud プログラムで定義されているスマートホーム トレイトのセットをサポートしています。

メーカー固有のクラスタやプラットフォーム トレイトなど、他のトレイトも使用できます。詳細については、データモデルをご覧ください。

言語

Home API は Kotlin で記述されており、Flow を使用して状態とサブスクリプションを管理する慣用的な Kotlin インターフェースを提供します。これには、標準の定期購入 API に比べていくつかの利点があります。

コルーチン、フロー、Jetpack Compose に関する Kotlin のドキュメントをご確認ください。

エンティティ識別子

Home APIs の各エンティティには、プライマリ ID を表す ID があります。この ID は一意で安定した識別子であり、エンティティの存続期間中は変更されません。この ID は、エンティティのメタデータが変更される可能性があるため、オブジェクトをキャッシュに保存したり、等価性をチェックしたりするために使用できます。

ID を持つエンティティについては、HasId インターフェースをご覧ください。

用語マッピング

Home API のエンティティは、次のように Matter コンセプトと Cloud-to-cloud コンセプトにマッピングされます。

Google Home の API Matter Cloud-to-cloud
トレイト クラスタ トレイト
属性 属性 属性、状態
コマンド コマンド コマンド
イベント イベント フォローアップの回答、通知