設計自動化動作

開始使用 Automation API 前,請先設計自動化動作。

為每個自動化動作決定下列參數:

  • 應向使用者建議自動化動作的情況。舉例來說,如果使用者剛在住家中新增三盞燈具,可能會對專門用於控制燈具的特定自動化動作感興趣。
  • 自動化動作所需的裝置類型。舉例來說,如果使用者剛在住家中新增三盞燈具,可能會對專門用於控制燈具的特定自動化動作感興趣。燈具裝置類型的示例包括 OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice
  • 自動化動作需要哪些特徵屬性和指令,以及這些屬性和指令是否受 Automation API 支援
  • 應以啟動條件啟用自動化動作的特徵。如要瞭解啟動條件,請參閱「自動化動作元件」一文。
  • 其他條件,用於決定自動化動作是否應實際執行,以及要執行哪些動作。
  • 自動化動作的執行流程。應依序執行還是並行執行?您是否需要多個邏輯路徑?

在設計時,建議您逐一列出自動化流程的節點,並標示每個步驟所需的邏輯,以便繪製流程圖。

設計自動化動作後,請使用自動化動作 DSL 建構自動化動作。您建立的自動化動作本質上就是一個「範本」:其中的任何結構和裝置都是預留位置,並在使用者「採用」自動化動作時,以他們的特定結構和裝置填入。

以下是應用程式可使用 Home API 建立的各種自動化動作。如需這些範例的程式碼摘錄,請參閱「建構自動化動作」頁面。

簡易自動化

假設您需要編寫應用程式,以便建立自動化動作,在早上 8 點升起百葉窗。為達成這項目標,應用程式需要在支援自動化功能的結構體中,列出百葉窗 (具有 WindowCoveringDevice 裝置類型的裝置),Discovery API 可提供這類資訊。

如果自動化動作需要在特定時間執行,您也必須確保使用者已在 Google Home app (GHA) 中為所選結構體指派街道地址,否則自動化動作就不會知道執行時區。Discovery API 可協助您判斷是否已將地址指派給結構體。

因此,執行流程會如下所示:

  1. 使用 Discovery API 收集 WindowCoveringDevice 裝置清單。
  2. 如果未填入街道地址,請通知使用者需要提供街道地址,並停止執行。
  3. 否則,請定義自動化動作:
    1. 在早上 8 點啟動自動化動作。
    2. 針對每個百葉窗,請呼叫 WindowCovering 特徵的 upOrOpen 指令。

複雜的自動化動作

假設應用程式建立了自動化動作,可在偵測到動作時觸發閃爍燈光。

實作此應用程式時,第一個任務之一就是使用 Discovery API 找出使用者家中可用的燈具。有了這項資訊,應用程式現在可以顯示可用的燈具,並讓使用者選取要閃爍的燈具。

執行流程:

  1. 使用 Discovery API,收集結構體中現有的燈具裝置清單,這些裝置的裝置類型為 OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice
  2. 提供一種方法,讓使用者選取要閃爍的燈具,例如透過自訂設定面板。
  3. 定義自動化動作:
    1. 監控 AreaPresenceState,在有人離開或抵達住家時啟動自動化動作。
    2. 如果 presenceState 表示結構體已被佔用,請閃爍所選燈光。

一般自動化

如要建立更複雜的自動化動作,不妨考慮建立可根據使用者家中的任何裝置或所有裝置,引導使用者建立開放式自動化動作的自動化動作。

自動化動作可能會先提示使用者選取結構。

接著,自動化動作就能在可展開的輪廓檢視畫面中顯示結構體中的所有房間,展開房間後即可看到其中的裝置。進一步展開裝置清單,即可查看該裝置支援的啟動條件和指令。

使用者可以選擇要使用的裝置、啟動條件和指令,自動化動作會引導使用者逐步組合自動化動作。

當使用者做出所有選擇和決定後,自動化動作就會產生自動化動作,並將其儲存至所選結構。

大致來說,這類自動化動作需要使用 Structure APIDevice API 和 Discovery API,收集使用者住家的多組資料。

表 1:Home API 和可提供的資訊
API資訊
Structure API
  • 可用的結構
  • 建築物內有哪些房間
Device API
  • 所選結構體中的裝置
  • 裝置所在位置 (哪個房間)
Discovery API
  • 裝置支援哪些特徵
  • 這些特徵可用的啟動條件和指令
  • 這些指令的參數有哪些限制