建立指令碼自動化

1. 簡介

課程內容

  • 如何規劃及編寫自動化動作指令碼。
  • 如何測試自動化動作指令碼。

軟硬體需求

  • 搭載 Google Home 應用程式的 Android 或 iOS 手機。
  • 具備「支援 Google Home」功能的智慧型燈具或其他裝置,可以開啟或關閉。

2. 設定裝置

如果尚未設定裝置,請直接在住家中設定裝置。

確認裝置會顯示在 Google Home 應用程式中,而且你可以使用 Google Home 應用程式開啟或關閉該裝置。

3. 規劃自動化動作指令碼

首先,請思考要讓自動化功能執行什麼動作,包括以下考量:

  • 您要設定自動化動作的裝置。
  • 哪個啟動條件 (或事件) 應觸發執行指令碼自動化動作的觸發條件。
  • 設定指令碼自動化動作後,是否會執行這些額外條件 (如果有的話)。
  • 需要執行的操作。

在本程式碼研究室中,我們計畫讓自動化指令碼執行以下兩項工作:

  1. 在特定時間開啟燈具 (或其他智慧型裝置)。
  2. 在特定時間關閉裝置。

我們已經清楚瞭解您希望自動化動作要做什麼,接著要開啟指令碼編輯器,編寫自動化動作指令碼。

4. 編寫自動化動作指令碼

自動化動作指令碼會以宣告式方式編寫,並使用 YAML 資料序列化語言

自動化動作指令碼是由兩個主要部分組成:

  1. 中繼資料 - 自動化動作指令碼的名稱和用途說明。
  2. 自動化規則:定義自動化動作的啟動邏輯和行為。

Metadata

我們的自動化動作中繼資料,可以讓使用者瞭解自動化動作是什麼,以及自動化動作的用途。請在 metadata 區塊中指定中繼資料,如下所示:

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

自動化規則

自動化規則是實際進行工作的地方。這項設定包含「啟動條件」、「條件」和「動作」三個部分,系統會依序評估這些部分:

1 個啟動條件

2 條件

3 項動作

啟動條件則是啟動自動化動作的方式。至少一個啟動條件必須為 true 評估後續條件,才能評估後續條件。

這些是選用項目,包含一或多個會在啟動條件啟用後評估的其他限制條件。如果條件解析為 true,系統就會執行動作。如果解析為 false,則動作不會執行。

如要納入多個限制條件,請使用 andor 關鍵字加以分隔,以形成單一邏輯運算式。這個運算式必須解析為 true,自動化動作才能繼續。

條件與狀態變更通知不同:

  • 條件代表在啟動條件「啟動」時必須設為 true 的事實,動作才會執行。
  • 狀態變更通知是一種事件,例如開啟的其他裝置。

動作是指在符合啟動條件和任何限制條件時執行的動作。

自動化動作的 automations 區塊包含兩項規則:

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. 每項規則都有一個動作。
  3. on: true 表示開燈。同樣地,on: false 表示關燈
  4. 每項規則都有一個 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 網頁版
  3. 選取「自動化動作」分頁標籤,以三顆星圖示表示:
    「自動化動作」分頁
  4. 按一下 [+ 新增]
  5. 在指令碼編輯器中刪除自動化動作範本。
  6. 貼上自動化動作。
  7. 請將 Desk light - Office 替換成您裝置的名稱和位置。
  8. 按一下「驗證」。指令碼編輯器會在自動化動作指令碼的指令碼部分加上底線。解決所有發生的錯誤,並持續驗證並修正,直到沒有任何錯誤為止。舉例來說,裝置名稱可能有所不同。在這種情況下,您可以使用自動完成功能選擇有效的裝置名稱。
  9. 按一下「儲存」。
  10. 確認指令碼文字下方的「啟用」切換鈕位於「開啟」位置:具備完整驗證和啟用指令碼自動化功能的指令碼編輯器

6. 測試自動化作業

  1. 請確認裝置已接上電源,而且會顯示在 Google Home 應用程式中。
  2. 如果裝置目前處於開啟狀態,請將其關閉。
  3. Google Home 網頁版的「自動化動作」頁面中,按一下自動化動作旁邊的「執行」按鈕。
    指令碼執行按鈕
  4. 裝置應該就會亮起。

現在,我們要測試自動化動作。

  1. 關閉裝置。
  2. 編輯自動化動作,然後將第 7 行的「裝置開啟時間」變更為未來 5 分鐘的時間。
  3. 將第 14 行的「裝置關閉時間」變更為「準時」的時間。
  4. 按一下「驗證」。解決可能發生的任何錯誤。
  5. 按一下「儲存」。
  6. 確認「啟用」開關位於「開啟」的位置。
  7. 等待兩個啟動條件時間結束。裝置應已開啟,並在你指定的時間關閉。

7. 恭喜!

您已成功建立自動化動作指令碼,太好了!

在本程式碼研究室中,您瞭解如何:

  • 如何設計及編寫自動化動作。
  • 如何測試自動化動作。

後續步驟

在本程式碼研究室中,我們建立了一項非常簡單的自動化作業。自動化動作的功能不僅僅是安排切換電源開關的時間,瞭解建立自動化動作的基本概念後,你現在可以探索 Google Home 生態系統中各種可用的啟動條件、限制條件和動作。

請嘗試下列練習:

  • 將更多time.schedule啟動條件新增至自動化動作。
  • 修改自動化動作,即可在同一時間表開啟或關閉其他裝置。
  • 如果不移除 time.schedule 啟動條件,請修改自動化動作,只在其他裝置開啟電源時才會開啟裝置。請參閱使用 condition 子句的指令碼範例
  • 調整自動化動作,只在有人在家時開啟裝置。

其他資訊

如要進一步瞭解 Google Home 自動化動作,請參閱自動化動作參考說明文件: