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 裝置,而非雲端執行要求。接著,裝置會執行本機執行應用程式來處理意圖。
本機 Home 平台在選擇要觸發指令的 Google Home 或 Google Nest 裝置時,並未使用確定性機制。EXECUTE
和 QUERY
意圖可能會透過任何 Google Home 或 Google Nest 裝置傳送,這些裝置必須與目標裝置使用相同的 Home Graph 結構。
本機執行應用程式
本機執行要求應用程式包含商業邏輯,可處理 Local Home 平台傳送的意圖,並透過區域網路存取智慧型裝置。整合當地服務時,不需要修改硬體。應用程式會透過應用程式層通訊協定 (包括 HTTP、TCP 或 UDP) 將控制指令傳送至智慧型裝置,以滿足 Cloud-to-cloud 整合要求。如果本機執行路徑失敗,系統會使用雲端執行路徑做為備用執行路徑。
為支援應用程式建構作業,Local Home SDK 提供以下兩個主要類別:
DeviceManager
:提供使用 TCP、UDP Sockets 或 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 M80 以上版本的 Chrome 瀏覽器
window
中執行,並支援 ECMAScript 版本 ES2018。 - Node.js:當 Node.js 執行 Node 10.x LTS 以上版本 (支援 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 意圖。對於集線器或橋接代理程式裝置,您也應處理 REACHABLE_DEVICES 意圖。 |
4 | 測試及偵錯應用程式 | 使用 Google Home 測試套件測試整合功能 (或自行認證)。 |
事前準備
- 請先熟悉建立 Cloud-to-cloud 整合的基礎知識。
- 在 Google Home Developer Console 中,請確認您有現有的智慧住宅專案,且已設定帳戶連結。
- 請確認您在測試裝置的 Developer Console 和 Google 助理中,登入的是同一個 Google 帳戶。
- 您需要 Node.js 環境才能編寫應用程式。如要安裝 Node.js 和 npm,建議使用 Node 版本管理工具。
- 如要使用最新版的 Local Home SDK,您必須將測試裝置註冊至投放預覽計畫。