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
  • 利用可能な構造
  • 構造内の部屋
Device API
  • 選択した構造内のデバイス
  • デバイスの場所(部屋)
Discovery API
  • デバイスでサポートされているトレイト
  • トレイトで使用できる開始条件とコマンド
  • これらのコマンドのパラメータに関する制約