本地交車

Local Home SDK 會新增本機執行要求路徑來轉送智慧型住宅意圖,藉此提高智慧型住宅與 Google 助理的整合程度。

Local Home SDK 提供兩項功能:本機執行和本機查詢。

  • 本機執行功能可透過本機執行路徑傳送 EXEC 意圖,而非發出雲端 API 呼叫,以便執行指令。舉例來說,LocalExecution 可以處理「Turn on the light」要求。
  • 本機查詢可透過本機執行路徑傳送 QUERY 意圖,處理與裝置狀態相關的查詢。舉例來說,本機查詢會在不發出雲端 API 呼叫的情況下,執行「Is my light on?」查詢。

您可以使用 TypeScript 或 JavaScript 編寫 SDK,以便編寫包含智慧家庭商業邏輯的本地執行應用程式。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:為智慧型住宅動作新增本機執行要求路徑。

本機 Home 平台在選擇要觸發指令的 Google Home 或 Google Nest 裝置時,並未使用確定性機制。EXECUTEQUERY 意圖可能會透過任何 Google Home 或 Google Nest 裝置傳送,這些裝置必須與目標裝置使用相同的 Home Graph 結構

本機執行應用程式

本機執行要求應用程式包含商業邏輯,可處理 Local Home 平台傳送的意圖,並透過區域網路存取智慧型裝置。整合當地服務時,不需要修改硬體。應用程式會透過應用程式層通訊協定 (包括 HTTP、TCP 或 UDP) 將控制指令傳送至智慧型裝置,以滿足 Cloud-to-cloud 整合要求。如果本機執行路徑失敗,系統會使用雲端執行路徑做為備用執行路徑。

為支援應用程式建構作業,Local Home SDK 提供以下兩個主要類別:

  • DeviceManager:提供使用 TCP、UDP Sockets 或 HTTP 要求與智慧型裝置通訊的方法。
  • App:提供方法,可為 Google 在偵測到可在本機控制的裝置 (IDENTIFYREACHABLE_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 平台支援下列執行階段環境:

原始碼結構

建議您使用 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 意圖。對於集線器或橋接代理程式裝置,您也應處理 REACHABLE_DEVICES 意圖。
4 測試及偵錯應用程式 使用 Google Home 測試套件測試整合功能 (或自行認證)。

事前準備