Google Smart Home 介紹

Smart Home 介紹

Smart Home 與 Dialogflow不太一樣 ,可以透過任何設備直接由 Google Assistant 小姐幫你服務,省去掉了 Talk to my application 流程,能夠更快速的達到控制效果。Smart Home 主要是偏向已經建立好功能並提供API,只需提供 fulfillment URL 給 Google 就能完成 Actions 設定, Google 會視情況而下三種 JSON 類型,分別為 SYNC、EXECUTE、QUERY,其相關的動作或回應,都由自有雲這邊處理,所以設定上較容易。

sync

同步裝置(Syncing devices) 當使用者打開 Google Assistant 的 Home control 添加設備,需要選擇設備廠商,選擇完畢後會有登入頁面,你必須要有廠商的帳號,Google 才能對雲進行身份驗證,確認身份後,Assistant 會收到 OAuth token。在這同時,Assistant 會發出 action.devices.SYNC到雲端自動同步裝置,同步完畢後設定好在家中哪個格局後,即可用 Assistant 做控制。當然雲也可以要求Google Assistant再次同步裝置狀態,只需要發出action.intent.REQUEST_SYNC ,Google Assistant 就會再一次的做同步,以下是 Google 提供流程。

execute

執行動作(Executing commands)。當使用者向 App 或 Google Home 要求狀態切換時,會先經過一串的語言辨識,若是辨識成功 Assistant 會發出action.devices.EXECUTE 到雲端,雲需要回覆 Google 並且執行動作,而 Google 收到雲回覆後,會將結果回饋給使用者並更新 HomeGraph。

query

 詢問裝置狀態(Querying device status)。使用者可以對 Assistant 詢問目前裝置的狀態,例如:What lights are on in the kitchen? Assistant 會發出 action.devices.QUERY 到雲,雲必須回覆裝置狀態,最後回到 HomeGraph。

smart-home-nodejs 範例

  • 必須在 Actions Console 建立專案或使用現有的專案。
  • 開啟 HomeGraph API,這將用於請求同步並將狀態報告回HomeGraph。
  • Google Cloud Console API Manager 左側選單點擊『憑證』,選擇建立憑證,點擊 API 金鑰,複製金鑰貼在 smart-home-provider/cloud/config-provider.js 檔案裡的 Config.smartHomeProviderApiKey
  • 設定專案環境
cd smart-home-provider/frontend
npm install -g bower
bower install
cd ..
npm install
npm start
// 在終端機輸出找到client ID 及 client Secret,並記錄起來等等會用到
// 複製終端機出現的網址,打開網頁並前往
// 登入帳號,預設為下 user: rick  / password: oldman
  • 點擊右上+,隨意新增裝置,注意請勿把雲符號關閉,且勿重新整理網頁,否則裝置會不見,因為這只個範例
  • 回到Actions Console 專案,選擇 Actions Edit,點擊 BUILD
  • 填入 fulfillment URL,此網址為上一步,第10點的網址加上 smarthome:https://f2d26ac1.ngrok.io/smarthome
  • 回到 Overview 填寫 App information (這步驟之前有寫過了)
  • 點擊 Account linking 下的 Add
  • Grant Type 選擇 Authorization Code
  • 填入 Client ID 及 Client secret (之前說要記錄起來的)
  • Authorization URL 填入網址+/oauth,即 https://f2d26ac1.ngrok.io/oauth
  • Token URL 同理,即 https://f2d26ac1.ngrok.io/token
  • 填入其他必要資訊
  • 點擊 TEST DRAFT 開始測試 (記得如果改過像URL之類的,都要再點一次 TEST DRAFT)

測試

  • 打開手機 Google Assistant App
  • 點擊右上方圖示
  • 選擇右上更多圖示
  • 選擇 Settings
  • 找到 Home control
  • 點擊右下 +
  • 選擇第一個[test]專案名稱
  • 登入 Smart Home sample 的第11步帳號密碼 (這步不要點太快,否則會看到終端機帳號密碼是空的,必須等頁面完全出來再點
  • 設定房間
  • 點擊右上 Done (Assistant 會跟你說可以試試看哪些命令)
  • 試試 turn my lights on …等命令吧 !