スクリプト化された自動化を作成する

1. はじめに

学習内容

  • スクリプトによる自動化を計画して記述する方法
  • スクリプトによる自動化をテストする方法

必要なもの

  • Google Home アプリを実行している Android または iOS スマートフォン。
  • Works with Google Home 認定で、オン / オフの切り替えが可能なスマートライトなどのデバイス。

2. デバイスをセットアップする

デバイスがまだセットアップされていない場合は、ご自宅でセットアップしてください。

デバイスが Google Home アプリに表示され、Google Home アプリを使用してオンとオフを切り替えられることを確認します。

3. スクリプトによる自動化を計画する

まず、スクリプトによる自動化で何を行うかを考えてみましょう。これには、次のような考慮事項が含まれます。

  • 自動化するデバイス。
  • スクリプトによる自動化の実行をトリガーする開始条件(またはイベント)。
  • スクリプトによる自動化をトリガー後に実行するかどうかを制御する追加条件(存在する場合)。
  • 実行するアクション

この Codelab では、スクリプトによる自動化で次の 2 つの処理を行う予定です。

  1. 指定した時刻にライト(またはその他のスマート デバイス)を点灯します。
  2. 特定の時間にデバイスの電源をオフにします。

スクリプトによる自動化の目的が明確になったので、スクリプト エディタを開いて、スクリプトによる自動化を記述します。

4. スクリプトによる自動化を記述する

スクリプトによる自動化は、YAML データのシリアル化言語を使用した宣言型で作成します。

スクリプトによる自動化は、次の 2 つの主要セクションで構成されます。

  1. メタデータ - スクリプトによる自動化の名前と動作の説明。
  2. 自動化ルール - 自動化の開始ロジックと動作を定義します。

メタデータ

自動化のメタデータは、自動化が何と呼ばれ、何を行うかをユーザーに伝えます。メタデータは、metadata ブロックで次のように指定します。

metadata:
  name: Scheduled light
  description: Turn the light on and off at specific times

自動化ルール

自動化ルールは、実際の作業が行われる場所です。これは、startersconditionsactions の 3 つの部分で構成され、順番に評価されます。

1 開始条件

2 条件

3 つのアクション

開始条件が自動化を開始します。後続の条件を評価するには、少なくとも 1 つの開始条件が true と評価される必要があります。

これらはオプションであり、開始条件が有効化された後に評価される 1 つ以上の追加の制約で構成されます。条件が true に解決されると、アクションが実行されます。false に解決された場合、アクションは実行されません。

複数の制約を含める場合は、and キーワードおよび or キーワードで区切って 1 つの論理式を形成します。自動化のアクションを進めるには、この式を true に解決する必要があります。

条件は、状態変更通知とは異なります。

  • 条件は、開始条件がアクションを実行するために「起動」した時点で真である必要があるファクトを表します。
  • 状態変更通知とは、別のデバイスの電源をオンにするなどのイベントのことです。

アクションは、開始条件と制約条件が満たされたときに実行されるオペレーションです。

自動化の automations ブロックには、次の 2 つのルールが含まれています。

automations:
  - starters:
      - type: time.schedule
        at: 1:00 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: true
  - starters:
      - type: time.schedule
        at: 1:05 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: false

次の点にご注意ください。

  1. automations ルールは 2 つあります。1 つ目はライトをオンにし、2 つ目はライトをオフにします。
  2. 各ルールには 1 つのアクションが含まれます。
  3. on: true」はライトをつけることを意味します。同様に、on: false電気を消すことを意味します。
  4. 各ルールには 1 つの time.schedule 開始条件があり、自動化を開始するタイミングを自動化に指示できます。
  5. この自動化には条件がありません。

5. スクリプトによる完全な自動化

以上の要素をすべてまとめると、スクリプトによる自動化の全体は次のようになります。

metadata:
  name: Scheduled light
  description: Turn the light on and off at specific times
automations:
  - starters:
      - type: time.schedule
        at: 1:00 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: true
  - starters:
      - type: time.schedule
        at: 1:05 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: false
  1. 自動化(上記)をコピーします。
  2. Google Home for web にアクセスします。
  3. 3 つの星のアイコンで表されている [自動化] タブを選択します。
    [オートメーション] タブ
  4. [+ 新規追加] をクリックします。
  5. スクリプト エディタで、自動化テンプレートを削除します。
  6. 自動化を貼り付けます。
  7. Desk light - Office は、デバイスの名前と場所に置き換えます。
  8. [検証] をクリックします。スクリプト エディタでは、スクリプトによる自動化でエラーのある部分に下線が付きます。エラーが発生した場合は解決し、エラーがなくなるまで検証と修正を繰り返します。たとえば、デバイス名が異なる場合があります。その場合は、オートコンプリート機能を使用して有効なデバイス名を選択できます。
  9. [保存] をクリックします。
  10. スクリプトのテキストの下にある [有効にする] スイッチがオン完全に検証済みで有効化されたスクリプトによる自動化を備えたスクリプト エディタ)になっていることを確認します。

6. 自動化をテストする

  1. デバイスが電源に接続されていて、Google Home アプリに表示されていることをご確認ください。
  2. デバイスが現在オンになっている場合は、オフにします。
  3. Google Home for web の [自動化] ページで、自動化の横にある [Run] ボタンをクリックします。
    スクリプト実行ボタン
  4. デバイスが起動します。

では、自動化をテストしてみましょう。

  1. デバイスの電源を切ります。
  2. 自動化を編集し、7 行目の「デバイス オン」時間を 5 分後の時間に変更します。
  3. 14 行目の「デバイスオフ」の時間を「定刻」の直後の時間に変更します。
  4. [検証] をクリックします。エラーが発生した場合は解決します。
  5. [保存] をクリックします。
  6. [有効にする] スイッチがオンの位置になっていることを確認します。
  7. 開始条件の 2 回の時間が経過するまで待ちます。指定した時間に電源がオンになり、次にオフになるはずです。

7. 完了

これで、スクリプトによる自動化の作成が完了しました。

この Codelab では、以下について学びました。

  • 自動化を設計して記述する方法
  • 自動化をテストする方法

次のステップ

この Codelab では、非常にシンプルな自動化を作成しました。自動化では、電源スイッチの切り替えのスケジュール設定以外にも、さまざまなことを行えます。自動化作成の基本を理解したところで、次は Google Home エコシステムで利用可能なさまざまな種類の開始条件、条件、アクションを見ていきましょう。

次の演習を行ってください。

  • 自動化に time.schedule 開始条件をさらに追加します。
  • 自動化を変更して、同じスケジュールで別のデバイスのオン / オフを切り替えることもできます。
  • time.schedule 開始条件を削除せずに、別のデバイスの電源が入っている場合にのみデバイスがオンになるように自動化を変更します。condition 句を使用するスクリプトの例をご覧ください。
  • 誰かが家にいるときだけデバイスをオンにするように自動化を変更します。

参考資料

Google Home の自動化について詳しくは、自動化のリファレンス ドキュメントをご覧ください。