本機 Home SDK 新增了本機執行要求路徑來轉送智慧型住宅意圖,藉此提高智慧型住宅的整合程度。
這個 SDK 可讓您使用包含智慧住宅商業邏輯的 TypeScript 或 JavaScript 編寫本機執行要求應用程式。Google Home 或 Google Nest 裝置可在裝置上載入及執行應用程式。應用程式會直接透過區域網路 (LAN) 上的現有智慧型裝置與現有的智慧型裝置進行通訊,以執行現有通訊協定的使用者指令。
整合 SDK 可以改善智慧型住宅動作的效能,包括更短的延遲時間和更高的可靠性。所有裝置類型和裝置特性都支援本機執行要求,但採用次要使用者驗證的裝置除外。
瞭解運作方式
收到雲端執行要求之後的 SYNC
回應後,本機首頁平台會使用 mDNS、UDP 廣播或 UPnP 掃描使用者的本機區域網路,以找出連結至 Google 助理的智慧型裝置。
平台會將 IDENTIFY
回應與裝置先前 SYNC
回應傳回的裝置 ID 進行比較,以傳送 IDENTIFY
意圖,判斷裝置是否可由本機控制。如果偵測到的裝置是集線器或橋接器,平台會傳送 REACHABLE_DEVICES
意圖,並將中樞視為 Proxy 裝置以在本機通訊。
當平台收到確認本機裝置的回應時,平台就會為使用者的 Google Home 或 Google Nest 裝置建立本機執行要求路徑,然後為使用者指令執行本機執行要求。
使用者觸發擁有本機執行要求之智慧型住宅動作時,Google 助理會將 EXECUTE
意圖或 QUERY
意圖傳送至 Google Home 或 Google Nest 裝置,而非雲端執行要求。然後執行本機執行要求應用程式,以處理意圖。

本機首頁平台無法確定哪些 Google Home 或 Google Nest 裝置會觸發指令。EXECUTE
和 QUERY
意圖可能會透過與目標裝置相同的 Home Graph 結構定義的任何 Google Home 或 Google Nest 裝置。
本地執行要求應用程式
本機執行要求應用程式含有商業邏輯,用於處理由 Home Home 平台傳送的意圖,以及透過區域網路存取智慧型裝置。不需要修改硬體就能整合本機執行要求。應用程式透過 HTTP、TCP 或 UDP 等應用程式層通訊協定,將控制指令傳送至智慧型裝置,藉此完成智慧型住宅動作要求。如果本機執行要求路徑失敗,系統會使用您的雲端功能做為備用執行路徑。
為協助建構應用程式,Local Home SDK 提供兩種主要類別:
DeviceManager
:提供使用 TCP、UDP 通訊端或 HTTP 要求與智慧型裝置通訊的方法。App
:提供用來附加意圖的方法,以便 Google 在發現可控制的裝置 (IDENTIFY
、REACHABLE_DEVICES
) 後傳送意圖。此類別也會執行使用者指令 (EXECUTE
),並回答目前裝置狀態 (QUERY
) 的使用者查詢。
在開發期間,您可以在自己的主機伺服器或本機開發機器中載入應用程式,藉此建構及測試應用程式。在實際工作環境中,Google 會在使用者 Google Home 或 Google Nest 裝置的安全的 JavaScript 沙箱環境中代管您的應用程式。
本機執行要求目前不支援 Report State API。Google 需要您的雲端執行要求來處理這些要求。
應用程式生命週期
當 Local Home 平台發現與專案掃描設定相符的新本機裝置,或有與預期意圖相關的先前意圖裝置時,即需要載入本機執行應用程式。
Google Home 或 Google Nest 裝置受到記憶體限制,且系統會因為記憶體壓力,隨時終止本機執行要求應用程式。如果您的應用程式開始消耗過多記憶體,或是系統需要騰出空間供其他應用程式使用,就可能會發生這種情況。Local Home 平台只會在有新意圖要提交且有足夠的記憶體資源執行時重新啟動應用程式。
當使用者取消連結帳戶連結後,或不再有與使用者 agentUserId
相關聯的本機執行要求,Local Home 平台在閒置逾時後卸載應用程式。
支援的裝置
本機主畫面平台會在支援的 Google Home 或 Google Nest 裝置上執行您的執行要求應用程式。下表說明支援的裝置,以及每部裝置的執行階段。如要進一步瞭解執行階段規定,請參閱「執行環境」。
裝置 | 類型 | 環境 |
---|---|---|
Google Home | 擴音 | Chrome |
Google Home Mini | 擴音 | Chrome |
Google Home Max | 擴音 | Chrome |
Nest Mini | 擴音 | Chrome |
Nest Hub | 多媒體廣告 | Chrome |
Nest Hub Max | 多媒體廣告 | Chrome |
Nest Wifi | 路由器 | Node.js |
點 | Chrome |
執行環境
本機執行要求應用程式的執行環境取決於裝置。本機首頁平台支援下列執行階段環境:
- Chrome:您的本機執行要求應用程式會在執行 Chrome M80 以上版本的 Chrome 瀏覽器
window
中執行,且支援 ECMAScript ES2018 版。 - Node.js:您的本機執行要求應用程式,在執行 Node v10.x LTS 的 Node.js 程序中,以指令碼的形式執行,且支援 ECMAScript ES2018。
原始碼結構
建議您使用 Local Home SDK 提供的軟體包設定,將依附元件封裝為單一 JavaScript 檔案,並將原始碼封裝為 Immediatein 叫用函式運算式 (IIFE)。
實作路徑
如要使用 Local Home SDK 整合智慧型住宅整合功能,您必須執行下列工作:
1 | 設定掃描設定 | 使用 Actions 參數設定 Actions 主控台,以便 Google 助理探索本機可控制的裝置。 |
2 | 更新雲端執行要求中的「同步處理」回應 | 在雲端執行要求中修改 SYNC 要求處理常式,以支援平台用於建立本機執行要求路徑的
otherDeviceIds 欄位。在該欄位中,指定可在本機控制的裝置 ID。
|
3 | 實作本地執行要求應用程式 | 使用 Local Home SDK 建立 JavaScript 應用程式,以處理 IDENTIFY 、
EXECUTE 和
QUERY 意圖。如果是中樞或橋接 Proxy 裝置,您也應處理 REACHABLE_DEVICES 意圖。 |
4 | 測試應用程式並進行偵錯 | 使用 Google Home Test Suite 測試整合成果 (或自主認證)。 |