2020/01/17

將 google assistant 加入 hass.io

Based on these posts:

Hass.io 支援 google assistant 有兩種方式

  1. 使用 Home Assistant Cloud (需要付費,每月 5 美金)。
  2. 手動加入 (免費但是複雜)。

這邊我採用手動加入的方式。以下為手動加入步驟。(使用手動加入前提是必須可使用 hostname 和有效的 ssl 憑證,這部分可以使用 duckdns addon 達成)

  1. Actions on Google console 建立專案。

    1. 點擊 New Project。Project Name 則輸入你想要的英文名稱,再設定語言跟所在國家或地區。然後點擊 Create Project

    2. 點擊 Smart Home,並且再點擊 Smart Home Recommended

    3. 點擊 Build your Action 再點擊 Add Actions(s)

    4. 填入以下資訊

      1. Fulfillment URL: https://[host:port]/api/google_assistant,host:port 輸入連結到 home assistant 的網址。舉例 example.org:8123
      2. 點擊右上角 Save 後在點擊左上角 Overview 回到之前頁面。
  2. 點擊 Setup account linking 連結帳號以便 google home 可以連結到你設定的專案。

    1. 勾選 No, I only want to allow account creation on my website,點擊 Next

    2. Select linking type 選擇 OAuth,Select grant type 選擇 Authorization code。點擊 Next

    3. 填入以下資訊

      • Client ID issued by your Actions to Google: https://oauth-redirect.googleusercontent.com/,最後的 / 不能少。
      • Client secret: 可隨便輸入
      • Authorization URL: https://[host:port]/auth/authorize,host:port 為連結到 home assistant 的網址。舉例 example.org:8123
      • Token URL: https://[host:port]/auth/token,host:port 為連結到 home assistant 的網址。舉例 example.org:8123
      • 點擊 Next
    4. Scopes 輸入 name 再點擊 Add scope,然後再輸入 email 再點擊 Add scope。記得確認 Google to transmit clientID and secret via HTTP basic auth header 不可勾選,然後點擊 Next

    5. Testing instructions 可隨便輸入。 然後點擊右下角 Save

  3. 點擊上方 Develop,Display name 輸入你想要看到在 Google Home 做第三方連結時的名稱。然後點擊右上方 Save

  4. 點擊上方 Test,這會產生一個測試的 app 版本,這可以讓我們從 Google Home 連結。

  5. Google Could Console 建立服務帳號,這在 Home assistant 設定時會使用到。

    1. 上方選取專案。選擇前面所建立的專案。

    2. 點擊左方憑證。點擊建立憑證後再選取服務帳戶金鑰

    3. 服務帳戶設定如下:

      1. 新增服務帳戶
      2. 服務帳戶名稱輸入隨便任一名稱
      3. 角色選擇服務帳戶裡面的服務帳戶憑證建立者
      4. 通常輸入服務帳戶時會一併自動產生服務帳戶 ID,如果沒有自己產生,可以點擊右方圖示或者自己輸入即可。這 ID 必須是不能重複的。
      5. 勾選 JSON,點擊建立
      6. 把此檔案透過 Hass.io 的 Configurator 上傳至 Hass.io 的 config,可先修改檔案名稱再上傳。此檔案後續設定 google assistant 時會使用到。
  6. 啟用 HomeGraph API。

    1. Google Could Console
    2. 上方選取專案。選擇前面所建立的專案。
    3. 點擊啟用 API 和服務
    4. 輸入 HomeGraph,選擇 HomeGraph API,然後點擊啟用。
  7. 開啟 configuration.yaml。設定範例如下,仔細設定可參考 configuration

    google_assistant:
      project_id: YOUR_PROJECT_ID
      service_account: !include SERVICE_ACCOUNT.JSON
      report_state: true
      expose_by_default: false
      entity_config:
        light.living_room:
          expose: true
          aliases: 
            - LIGHT
    
    • YOUR_PROJECT_ID 改成實際的 project id,可至 Google Could Console 點擊上方選取專案後,查看專案後面的 ID。
    • SERVICE_ACCOUNT.JSON 則為前面所下載的檔案名稱。
    • expose_by_default: false,這設定預設為 true,會讓所有符合 exposed_domains 的件都被 google home 所看到。建議使用 false,後面再手動自己把想要顯示的加上去。
    • 如果 expose_by_default 設定為 false,一定要記得下面的 entity_config 裡面的設定必須加上 expose 為 true。
    • 另外 entity_config 裡面,aliases 的部分會顯示在 Google Home 裡面,測試發現即使設定多個也只會顯示第一個。
    • 設定完畢後,重啟 Hass。
  8. 開啟 Google Home,點擊左上角 +

    1. 點擊設定裝置
    2. Google 的合作夥伴
    3. 點擊右上角搜尋圖示,輸入 test,應該可以看到一個 [test] XXX 的服務,XXX 是前面 Develop 所設定的 Display name。點擊這個服務輸入帳號密碼後,成功登入後會跳為前面選擇夥伴的畫面,此時再點進去 Google 的合作夥伴看看有沒有成功連接,正常就會出現在已連結的服務了。
  9. 開啟 google assistant 輸入或說出 sync my devices。

  10. 開啟 Google Home 就可以看到所增加的物件了。

沒有留言:

張貼留言