在 Android 上設計自動化動作

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

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

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

設計時,逐一繪製自動化流程的節點圖,並標示每個步驟所需的邏輯,或許會有所幫助。

設計自動化動作後,請使用 Automation 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 表示結構體已佔用,請閃爍所選燈光。

一般自動化

舉例來說,您可以引導使用者根據家中擁有的任何或所有裝置,建立開放式自動化動作。

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

接著,自動化功能可能會在可展開的大綱檢視畫面中,顯示結構中的所有房間,展開房間即可查看其中的裝置。進一步展開裝置會列出啟動器,以及該裝置支援的指令。

使用者可以選擇要使用的裝置、啟動器和指令,自動化功能會引導使用者組裝自動化裝置。

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

從高層次來看,這類自動化作業需要使用 Android 適用的 Structure APIAndroid 適用的 Device API 和 Discovery API,收集使用者住家相關的幾組資料。

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