Android で自動化を設計する

Automation API の使用を開始する前に、自動化を設計する必要があります。

各自動化について、次のパラメータを決定します。

  • 自動化をユーザーに提案する状況。 たとえば、ユーザーが家に 3 つの新しい照明を追加したばかりの場合、照明の制御に特化した特定の自動化に関心を持つ可能性があります。
  • 自動化に必要なデバイスタイプ。たとえば、ユーザーが家に 3 つの新しい照明を追加したばかりの場合、照明の制御に特化した特定の自動化に関心がある可能性があります。照明デバイスタイプの例としては、OnOffLightDevice、ColorTemperatureLightDevice、DimmableLightDevice、ExtendedColorLightDevice などがあります。
  • 自動化に必要なトレイト属性とコマンド、およびそれらが Android の Automation API でサポートされているかどうか。
  • 自動化を開始条件として有効にする特性。スターターについては、Android の自動化コンポーネントで説明しています。
  • 自動化を実際に実行するかどうか、および実行するアクションを決定する追加の条件。
  • 自動化の実行フロー。順次実行するか、並列実行するか。複数のロジックパスが必要ですか?

設計時に、各ステップで必要なロジックを使用して、自動化のフローをノードごとに図式化すると便利です。

自動化を設計したら、自動化 DSL を使用して構築します。作成する自動化は、基本的には「テンプレート」です。テンプレート内のストラクチャとデバイスはプレースホルダであり、ユーザーが自動化を「採用」して独自に使用する際に、各ユーザーの特定のストラクチャとデバイスが入力されます。

以下は、アプリが Home API を使用して作成できるさまざまな種類の自動化です。これらの例に関連するコードの抜粋については、自動化を構築するページをご覧ください。

シンプルな自動化

たとえば、午前 8 時にブラインドを上げる自動化を作成するアプリを作成する必要があるとします。これを実現するには、自動化をサポートするストラクチャに存在するブラインド(WindowCoveringDevice デバイスタイプのデバイス)のリストが必要です。このリストは Discovery API で提供されます。

特定の時間に実行する必要がある自動化の場合、ユーザーが選択したストラクチャに番地を割り当てていることを確認する必要があります(ストラクチャの作成時または Google Home app (GHA) で)。そうしないと、自動化は実行されるタイムゾーンを認識できません。Discovery API を使用すると、住所がストラクチャに割り当てられているかどうかを判断できます。

実行フローは次のようになります。

  1. Discovery API を使用して、WindowCoveringDevice デバイスのリストを収集します。
  2. 番地が入力されていない場合は、番地(GHA など)を入力する必要があることをユーザーに通知し、実行を停止します。
  3. それ以外の場合は、自動化を定義します。
    1. 午前 8 時に自動化を開始します。
    2. ブラインドごとに、WindowCovering トレイトの upOrOpen コマンドを呼び出します。

複雑な自動化

動きが検出されたときにライトを点滅させる自動化を構築するアプリを考えてみましょう。

このアプリを実装する際の最初のタスクの 1 つは、Discovery API を使用して、ユーザーの家で利用可能な照明を特定することです。この情報を使用して、アプリは利用可能なライトを表示し、ユーザーが点滅させるライトを選択できるようにします。

実行フロー:

  1. Discovery API を使用して、ストラクチャに存在する照明デバイスのリストを収集します。これは、デバイスタイプが OnOffLightDevice、ColorTemperatureLightDevice、DimmableLightDevice、ExtendedColorLightDevice のいずれかのデバイスです。
  2. 点滅するライトを選択する方法を提供します(カスタム設定パネルなど)。
  3. 自動化を定義します。
    1. AreaPresenceState をモニタリングして、誰かが敷地内から退出または敷地内に到着したときに自動化を開始します。
    2. presenceState がストラクチャが在室であることを示している場合は、選択したライトを点滅させます。

一般的な自動化

より高度な自動化の例として、家にあるデバイスの一部またはすべてに基づいて、ユーザーが自由形式の自動化を作成できるようにガイドする自動化を考えてみましょう。

自動化により、最初にストラクチャを選択するようユーザーに求めるメッセージが表示されることがあります。

次に、自動化により、ストラクチャ内のすべての部屋が展開可能なアウトライン ビューで表示されます。部屋を展開すると、その部屋内のデバイスが表示されます。デバイスをさらに展開すると、そのデバイスでサポートされている開始条件とコマンドが表示されます。

ユーザーは、使用するデバイス、開始条件、コマンドを選択でき、自動化の組み立て手順が案内されます。

ユーザーの選択と決定がすべて最終的なものになると、自動化が生成され、選択したストラクチャに保存されます。

大まかに言うと、このような自動化では、Android 向け Structure API、Android 向け Device API、Discovery API を使用して、ユーザーの家に関するいくつかのデータセットを収集する必要があります。

表 1: Home API と提供可能な情報
API情報
Structure API
  • 利用可能な構造
  • ストラクチャ内の部屋
Device API
  • 選択したストラクチャに含まれるデバイス
  • デバイスの場所(部屋)
Discovery API
  • デバイスでサポートされているトレイト
  • これらのトレイトで使用できる開始条件とコマンド
  • これらのコマンドのパラメータにどのような制約があるか