Local Home SDK 可新增本機執行要求路徑,轉送智慧型住宅意圖,提高智慧型住宅與 Google 助理的整合程度。
Local Home SDK 提供兩項功能:本機執行和本機查詢。
- 本機執行功能可透過本機執行路徑傳送
EXEC意圖來執行指令,而不必呼叫 Cloud API。舉例來說,「開燈」要求可由本機執行處理。 - 本機查詢可透過本機執行路徑傳送
QUERY意圖,處理與裝置狀態相關的查詢。舉例來說,區域查詢會執行「我的燈亮著嗎?」查詢,而不發出 Cloud API 呼叫。
您可以使用 SDK,以 TypeScript 或 JavaScript 編寫本機執行應用程式,其中包含智慧型住宅商業邏輯。Google Home 或 Google Nest 裝置可在裝置端載入及執行應用程式。應用程式會透過區域網路 (LAN) 上的 Wi-Fi,直接與現有智慧型裝置通訊,並透過現有通訊協定執行使用者指令。
整合 SDK 可提升 Cloud-to-cloud 整合的效能,包括降低延遲時間和提高可靠性。除了使用雙重使用者驗證的裝置類型和裝置特徵外,所有裝置類型和裝置特徵都支援本機執行。
瞭解運作方式
從雲端執行要求收到 SYNC 回應後,Local Home 平台會使用 mDNS、UDP 廣播或 UPnP 掃描使用者的區域網路,找出連結至 Google 助理的智慧型裝置。
平台會傳送 IDENTIFY 意圖,比較 IDENTIFY 回應中的裝置 ID 與先前 SYNC 回應傳回的裝置 ID,判斷裝置是否可由本機控制。如果偵測到的裝置是中樞或橋接器,平台會傳送 REACHABLE_DEVICES 意圖,並將中樞視為在本機通訊的 Proxy 裝置。
收到確認本機裝置的回應後,平台會建立本機執行路徑,連往使用者的 Google Home 或 Google Nest 裝置,並將使用者指令轉送至本機執行。
當使用者觸發具有本機執行要求路徑的 Cloud-to-cloud 整合時,Google 助理會將 EXECUTE 意圖或 QUERY 意圖傳送至 Google Home 或 Google Nest 裝置,而非雲端執行要求。接著,裝置會執行本機執行要求應用程式,處理意圖。
Local Home 平台在選擇要觸發指令的 Google Home 或 Google Nest 裝置時,並非確定性。EXECUTE 和 QUERY 意圖可能會透過與目標裝置定義在相同 Home Graph 結構中的任何 Google Home 或 Google Nest 裝置傳送。
Local fulfillment 應用程式
本機執行要求應用程式包含商業邏輯,可處理 Local Home 平台傳送的意圖,並透過區域網路存取智慧型裝置。整合當地執行功能時,不需修改硬體。應用程式會透過應用程式層通訊協定 (包括 HTTP、TCP 或 UDP),將控制指令傳送至智慧型裝置,藉此執行 Cloud-to-cloud 整合要求。如果本機執行路徑失敗,系統會使用雲端執行做為備用執行路徑。
為支援建構應用程式,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 平台會在閒置逾時後卸載應用程式。
支援的裝置
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 |
執行環境
當地執行要求應用程式的執行環境取決於裝置。Local Home 平台支援下列執行階段環境:
- Chrome:本機執行要求應用程式會在 Chrome 瀏覽器
window的情境中執行,該瀏覽器必須執行 Chrome M80 以上版本,並支援 ECMAScript ES2018 版。 - Node.js:本機執行要求應用程式會以指令碼形式,在執行 Node v10.x LTS 或更新版本的 Node.js 程序中執行,並支援 ECMAScript ES2018 版。
原始碼結構
建議您使用 Local Home SDK 提供的繫結器設定,將依附元件繫結至單一 JavaScript 檔案,並將原始碼封裝為立即叫用函式運算式 (IIFE)。
實作路徑
如要使用 Local Home SDK 整合智慧住宅,您必須執行下列工作:
| 1 | 設定掃描設定 | 使用必要參數設定 Google Home Developer Console,讓 Google 助理探索可透過本機控制的裝置。 |
| 2 | 更新雲端執行中的 SYNC 回應 | 在雲端執行要求中,修改 SYNC 要求處理常式,以支援平台用來建立本機執行要求路徑的
otherDeviceIds 欄位。在該欄位中,指定可由本機控制的裝置 ID。 |
| 3 | 實作本機執行應用程式 | 使用 Local Home SDK 建立 JavaScript 應用程式,處理 IDENTIFY、
EXECUTE 和
QUERY 意圖。如果是中樞或橋接器 Proxy 裝置,您也應處理 REACHABLE_DEVICES 意圖。 |
| 4 | 測試應用程式並進行偵錯 | 使用 Google Home 測試套件測試整合 (或自主認證)。 |
事前準備
- 熟悉建立 Cloud-to-cloud 整合的基本概念。
- 在 Google Home Developer Console 中,確認您已有智慧住宅專案,且已設定帳戶連結。
- 請確認您在 Developer Console 和測試裝置上的 Google 助理中,登入的是同一個 Google 帳戶。
- 您需要 Node.js 環境才能編寫應用程式。如要安裝 Node.js 和 npm,建議使用 Node Version Manager。
- 如要使用最新版本 Local Home SDK,請將測試裝置註冊加入 Cast 搶先體驗方案。