自動化を設計する

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

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

  • 自動化をユーザーに提案する状況。たとえば、ユーザーが家に 3 つの照明を新しく追加した場合は、照明の操作に特化した特定の自動化に興味がある可能性があります。
  • 自動化に必要なデバイスの種類。たとえば、ユーザーが家に 3 つの照明を新しく追加した場合、照明の操作に特化した特定の自動化に興味を持つ可能性があります。照明デバイスのタイプには、OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice などがあります。
  • 自動化に必要なトレイト属性とコマンド、およびそれらが Automation API でサポートされているかどうか。
  • 開始条件として自動化を有効にする特徴。開始条件については、自動化コンポーネントをご覧ください。
  • 自動化を実際に実行するかどうか、および実行するアクションを決定する追加の条件。
  • 自動化の実行フロー。順番どおりに実行するのか、それとも並列に実行するのか。複数の論理パスが必要ですか?

設計時には、各ステップで必要なロジックとともに、ノードごとに自動化のフローを図に示すと便利です。

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

汎用自動化

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

自動化では、まずユーザーに構造を選択するよう求めるメッセージが表示される場合があります。

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

ユーザーは使用するデバイス、開始条件、コマンドを選択できます。自動化は、自動化の作成手順をユーザーに案内します。

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

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

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