Android で自動化を設計する

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

自動化ごとに次のパラメータを決定します。

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

設計する際は、自動化のフローをノードごとに図で表し、各ステップで必要なロジックを記述すると便利です。

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

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

シンプルな自動化

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

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

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

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

複雑な自動化

モーションが検出されたときに照明を点滅させる自動化を構築するアプリを考えてみましょう。

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

実行フロー:

  1. Discovery API を使用して、構造内に存在する照明デバイスのリストを収集します。これは、デバイスタイプが OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDevice、または ExtendedColorLightDevice のデバイスです。
  2. 点滅するライトを選択する方法を提供します(カスタム設定パネルなど)。
  3. 自動化を定義します。
    1. AreaPresenceState をモニタリングして、誰かが敷地から出入りするたびに自動化を開始します。
    2. presenceState が構造物が占有されていることを示している場合は、選択したライトを点滅させます。

一般的な自動化

より高度な自動化の例として、ユーザーが家にあるデバイスの一部またはすべてに基づいて、オープン エンドの自動化を作成する手順を案内する自動化を考えてみましょう。

自動化では、まずユーザーに構造の選択を求めることがあります。

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

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

ユーザーの選択と決定がすべて完了すると、自動化によって自動化が生成され、選択した構造に保存されます。

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

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