1. 簡介
課程內容
- 如何規劃及編寫自動化動作指令碼。
 - 如何測試自動化動作的指令碼。
 
軟硬體需求
- 搭載 Google Home 應用程式的 Android 或 iOS 手機。
 - 已通過「支援 Google Home」認證的智慧型燈具或其他裝置,可開啟或關閉。
 
2. 設定裝置
如果裝置尚未設定,請在家中設定裝置。
確認裝置是否顯示在 Google Home 應用程式中,且你可以使用 Google Home 應用程式開啟或關閉裝置。
3. 規劃自動化動作指令碼
首先,請思考自動化動作指令碼要執行的動作,包括:
- 要自動化哪些裝置。
 - 應觸發執行指令碼自動化動作的啟動條件 (或事件)。
 - 觸發時是否有其他條件控制指令碼自動化動作是否執行。
 - 要執行的動作。
 
在本程式碼研究室中,我們打算讓自動化動作指令碼執行兩項操作:
- 在特定時間開啟燈具 (或其他智慧型裝置)。
 - 在特定時間關閉裝置。
 
既然我們已清楚瞭解自動化動作指令碼的具體用途,接下來就開啟指令碼編輯器,編寫自動化動作指令碼。
4. 編寫自動化動作指令碼
自動化動作的指令碼是以 YAML 資料序列化語言編寫,採用宣告式風格。
自動化動作指令碼包含兩個主要部分:
- Metadata - 自動化動作指令碼的名稱和說明。
 - 自動化規則:定義自動化動作的啟動邏輯和行為。
 
中繼資料
自動化動作的中繼資料會向使用者說明自動化動作的名稱和功能。中繼資料會在 metadata 區塊中指定,如下所示:
metadata:
  name: Scheduled light
  description: Turn the light on and off at specific times
自動化規則
自動化作業的規則是實際執行作業的所在。這個語法包含三個部分:啟動條件、限制條件和動作,系統會依序評估這些部分:
1 啟動條件  | 2 個條件  | 3 個動作  | 
啟動條件是啟動自動化動作的條件。至少必須有一個啟動條件評估為   | 這些是選用項目,包含一或多個額外限制,會在啟動條件啟用後評估。如果條件解析為  如要加入多個限制條件,請使用  條件與狀態變更通知不同: 
  | 動作是指在符合啟動條件和任何限制條件時執行的作業。  | 
自動化動作的 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
注意事項:
automations規則分為兩種,第一個指令會開燈,第二個指令會關燈。- 每項規則都有一項動作。
 on: true表示「開燈」。同樣地,on: false表示「關燈」。- 每個規則都有一個 
time.schedule啟動條件,可告知自動化動作的啟動時間。 - 這個自動化動作沒有任何條件。
 
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
- 複製自動化動作 (上方)。
 - 前往 Google Home 網頁版。
 - 選取「自動化動作」分頁,圖示為三星圖示:

 - 按一下 [+ 新增]。
 - 在指令碼編輯器中刪除自動化動作範本。
 - 貼上自動化動作。
 - 將 
Desk light - Office替換為裝置的名稱和位置。 - 按一下「驗證」。指令碼編輯器會在自動化動作指令碼中,標出含有錯誤的部分。解決所有發生的錯誤,並持續驗證及修正,直到沒有任何錯誤為止。舉例來說,您的裝置名稱可能會有所不同。在這種情況下,您可以使用自動完成功能選擇有效的裝置名稱。
 - 按一下 [儲存]。
 - 請確認指令碼文字下方的「啟用」切換鈕已設為「開啟」:

 
6. 測試自動化規則
- 確認裝置已插上電源,且在 Google Home 應用程式中顯示。
 - 如果裝置目前已開啟電源,請先關機。
 - 在 Google Home 網頁版的「自動化動作」頁面中,按一下自動化動作旁的「執行」按鈕。

 - 裝置應會開啟。
 
接下來,我們來測試自動化動作。
- 關閉裝置。
 - 編輯自動化動作,並將第 7 行「裝置開啟」時間改為五分鐘後。
 - 將第 14 行「device off」時間變更為「on time」後不久的時間。
 - 按一下「驗證」。解決可能出現的任何錯誤。
 - 按一下 [儲存]。
 - 確認「啟用」切換鈕已設為「開啟」。
 - 等待兩個啟動時間過後。裝置應會在指定的時間開啟和關閉。
 
7. 恭喜!
你已成功建立自動化動作指令碼,太棒了!
在本程式碼研究室中,您瞭解如何:
- 如何設計及編寫自動化動作。
 - 如何測試自動化動作。
 
後續步驟
在本程式碼研究室中,我們建立了非常簡單的自動化動作。自動化動作的用途不只限於排定開關的切換時間。瞭解建立自動化動作的基本概念後,你可以探索 Google Home 生態系統中提供的各種啟動條件、限制條件和動作。
請嘗試下列練習:
- 在自動化動作中新增更多 
time.schedule啟動條件。 - 修改自動化動作,讓系統在相同的時間表下開啟和關閉其他裝置。
 - 在不移除 
time.schedule啟動條件的情況下,修改自動化動作,讓裝置只在其他裝置開啟時開啟。請參考使用condition子句的範例指令碼。 - 修改自動化動作,只在有人在家時開啟裝置。
 
延伸閱讀
如要進一步瞭解 Google Home 自動化動作,請參閱自動化動作參考說明文件: