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

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

自動化のルール

自動化ルールは、実際の作業が行われる場所です。これは、開始条件条件アクションという 3 つの部分で構成され、これらは順に評価されます。

1 開始条件

2 条件

3 つの操作

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

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

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

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

  • 条件は、開始条件が「起動」した時点で 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. 各ルールには、自動化を開始するタイミングを自動化に指示する time.schedule 開始条件が 1 つあります。
  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 つ星のアイコンで表された [自動化] タブを選択します。
    [Automations] タブ
  4. [+ 新規追加] をクリックします。
  5. スクリプト エディタで、自動化テンプレートを削除します。
  6. 自動化を貼り付けてください。
  7. Desk light - Office は、デバイスの名前と場所に置き換えます。
  8. [検証] をクリックします。スクリプト エディタでは、スクリプトによる自動化でエラーのあるセクションに下線が表示されます。発生したエラーをすべて解決し、エラーがなくなるまで検証と修正を繰り返します。たとえば、デバイス名が異なる場合があります。その場合は、予測入力機能を使用して有効なデバイス名を選択できます。
  9. [保存] をクリックします。
  10. スクリプトのテキストの下にある [有効にする] スイッチがオンの位置にあることを確認します(完全に検証、有効化されたスクリプトによる自動化を備えたスクリプト エディタ)。

6. 自動化をテストする

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

次に自動化をテストします

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

7. 完了

スクリプトによる自動化を作成できました。これで、

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

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

次のステップ

この Codelab では、非常にシンプルな自動化を作成しました。自動化は、電源スイッチの切り替えをスケジュール設定するだけでなく、さまざまなことができます。自動化を作成するための基本を理解したところで、Google Home エコシステムで利用できるさまざまな開始条件、条件、アクションについて確認しましょう。

次の演習をお試しください。

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

関連情報

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