本地交車

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 裝置,而非雲端執行要求。接著,裝置會執行本機執行要求應用程式,處理意圖。

這張圖顯示本機執行要求的執行流程。執行路徑會從搭載 Google 助理的手機擷取使用者意圖,然後由 Google Cloud 處理使用者意圖,接著在本機的 Google Home 裝置上執行,並直接向裝置中樞或裝置發出指令。開發人員雲端可做為雲端備用方案。
圖 1:為智慧住宅動作新增本機執行要求路徑。

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 測試套件測試整合 (或自主認證)。

事前準備