Local Home SDK 會新增本機執行要求路徑來轉送智慧型住宅意圖,藉此提高智慧型住宅的整合程度。
Local Home SDK 提供兩項功能:本機執行和本機查詢。
- 本機執行功能可透過本機執行路徑傳送
EXEC
意圖,藉此完成指令,而不必發出雲端 API 呼叫。舉例來說,要求「開燈」可由本機執行處理。 - 本機查詢可透過本機履行路徑傳送
QUERY
意圖,處理裝置狀態相關查詢。舉例來說,如果查詢「我的燈亮著嗎?」,Local Query 會直接完成查詢,而不會呼叫 Cloud API。
您可以使用 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
意圖可能會透過與目標裝置定義在相同住家圖表結構中的任何 Google Home 或 Google Nest 裝置傳送。
店內取貨應用程式
本機執行要求應用程式包含處理本機智慧型住宅平台傳送意圖的商業邏輯,並透過區域網路存取智慧型裝置。整合店內取貨功能時,硬體應不需要修改。應用程式會透過應用程式層通訊協定 (包括 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 會依據雲端履行服務處理這些要求。
應用程式生命週期
當區域網路平台發現符合專案掃描設定的新區域網路裝置,或有待處理的意圖要傳送給先前識別的裝置時,系統會視需要載入本機履行應用程式。
Google Home 或 Google Nest 裝置的記憶體有限,系統記憶體壓力過大時,隨時可能終止本機執行應用程式。如果應用程式開始耗用過多記憶體,或是系統需要為其他應用程式騰出空間,就可能發生這種情況。只有在有新的意圖要傳送,且應用程式有足夠的記憶體資源可供執行時,本機住家平台才會重新啟動應用程式。
如果使用者取消連結帳戶,或不再有與使用者 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 |
執行環境
本機履行應用程式的執行環境取決於裝置。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 回應 | 在雲端履行中,修改要求處理常式,支援平台用來建立本機履行路徑的
otherDeviceIds 欄位。SYNC 在該欄位中,指定可在本機控制的裝置 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 版本管理工具安裝 Node.js 和 npm。
- 如要使用最新版 Local Home SDK,請將測試裝置加入 Cast 搶先體驗計畫。