在 Android 上設計自動化動作

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

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

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

設計時,建議您逐一繪製自動化動作流程圖,並在每個步驟中加入所需邏輯。

設計好自動化動作後,請使用自動化 DSL 建構。您建立的自動化動作基本上是「範本」,其中的任何住家結構和裝置都是預留位置,當使用者「採用」自動化動作時,系統會填入使用者的特定住家結構和裝置。

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

簡單的自動化動作

假設您需要編寫一個應用程式,建立在上午 8:00 升起百葉窗的自動化動作。為此,應用程式需要一份清單,列出住家中支援自動化動作的百葉窗 (裝置類型為 WindowCoveringDevice 的裝置),這份清單可由 Discovery API 提供。

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

執行流程大致如下:

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

複雜的自動化動作

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

實作這個應用程式時,首要任務之一是使用 Discovery API 找出使用者住家有哪些燈具。有了這項資訊,應用程式就能顯示可用的燈,並讓使用者選取要閃爍的燈。

執行流程:

  1. 使用 Discovery API 收集結構中存在的燈具裝置清單,這些裝置的類型應為 OnOffLightDevice、ColorTemperatureLightDevice、DimmableLightDevice 或 ExtendedColorLightDevice。
  2. 提供選取閃爍燈光的方式,例如透過自訂設定面板。
  3. 定義自動化動作:
    1. 監控AreaPresenceState,在有人離開或抵達住家時啟動自動化動作。
    2. 如果 presenceState 指出建築物有人,則閃爍所選燈具。

一般自動化動作

如需更複雜的自動化動作範例,請考慮引導使用者根據住家中的任何或所有裝置,建立開放式自動化動作。

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

接著,自動化動作可以透過可展開的概要檢視畫面,顯示住家結構中的所有房間,展開房間後即可查看其中的裝置。進一步展開裝置清單,即可查看該裝置支援的啟動條件和指令。

使用者可以選擇要使用的裝置、啟動條件和指令,自動化動作會引導使用者完成設定。

使用者完成所有選擇和決定後,自動化動作就會產生並儲存到所選結構。

概略來說,這類自動化動作需要使用 Android 適用的 Structure API、Android 適用的 Device API 和 Discovery API,收集多組使用者住家相關資料。

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