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

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

6. 自動化をテストする

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

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

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

7. 完了

スクリプトによる自動化が正常に作成されました。

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

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

次のステップ

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

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

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

関連情報

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