把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

透過語音來控制家中DIY的智慧裝置~ 這很難吧~

有公網IP都很麻煩了,你一個沒有公網IP的網路環境就別想了~

會難嗎!! 我們來試試就知道了!

前期回顧:
一、用免費的反向代理加密連線回無公網IP的NAS及智慧家居中心
二、搭配反向代理,利用NAS喚醒你區網內的任一台電腦。
三、解決新版Home Assistant反向代理無法連接的問題

想要將Home Assistant聯結到Google Assistant需要有幾個條件:
1、Home Assistant存取要有https的加密連線
2、要有一個自已可管理的Domain Name
3、要有Google帳號
4、家中上網有公網IP,可透過DDNS從外面與家中的系統連線

在經過前幾期的入門操作後,我們已經用反向代理解決了第1、4個條件,且也都去註冊了一個屬於自已的TLD Domain,所以大家只剩下第3點:有個Google帳號,在現在的時代,相信大家都有一個Google 帳號,故要滿足上述的條件應該都沒有困難了! 所以今天要把安裝在DSM虛擬機中的Home Assistant OS 9.0 與Google Assistant聯結,這樣即使是自已DIY的智慧裝置也能透過喊一句:Hey Google幫我打開xxx來控作了~

家中環境同樣是沒有公網IP的CGNAT網路,NAS 上的反向代理服務也運作正常,Home Assistant也加入反向代理並分配一個子域名叫ha。

一切就緒就開始了~
先打開 https://console.actions.google.com,用自已的google帳號登入,建立New Project
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

為Project取個名稱,例如我取名叫Myhome,點擊Setup account linking
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

Client ID issued by your Actions to Google的欄位,填入https://oauth-redirect.googleusercontent.com/ 這是要用來與你的HA聯結用的。
Client secret欄位,隨便填不會用到!
Authorization URL欄位,填入https://我們設定給家中Home Assistant的域名/auth/authoriz
Token URL欄位,填入https://我們設定給家中Home Assistant的域名/auth/token (下圖我打錯,有去修正了)
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

都設定好了按右邊的SAVE,將這些設定給存檔。
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

存檔完後,我們點左上角的三條線,選擇Actions這個項目:
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

fulfillment URL這邊,我們填入https://我們設定給家中Home Assistant的域名/api/google_assistant,填完按右邊的Save存檔。
把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

同樣再點左上角的三條線,選Account linking項目,此時右邊出現Test的按鈕,點擊它後,google就會依你的設定去處理…

把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

把沒有公網IP的智慧家居系統聯結到Google Assistant,透過Google Home來控制它 -- 反向代理應用篇

現在我們已經完成了Google Action上的工作了~ 接著我們要到Could這邊來繼續做相關的設定~
有MCSE認証但不務正業的國際貿易打雜員工
2022-09-24 12:12 發佈
接著來到 https://console.cloud.google.com ,如之前沒有建過任何的專案,那這邊就會出現剛才建的專案名,但我之前有用過並建了其他的專案,所以點選箭頭處來選到我們剛建立的專案:


在選取專案的對話框中,點選全部,可以看到我這個帳號中的所有專案,我們選中剛才建立的Myhome專案


接著點左上角的三條線,選擇API和服務->已啟用的API和服務


接著點選+啟用API和服務


在搜索欄位我們輸入homegraph後按Enter,就會開始搜尋名稱是homegraph且可用的API


搜尋結果找到1項符合的結果,就是我們要的HomeGraph API,點擊它~


在開啟的頁面上,點擊啟用:


啟用後會來到API/服務詳細資料的頁面:


我們選擇左邊側欄中的憑証,會來到憑証的頁面,我們選擇建立憑証:


因為我們是要用於Google Assistant與Home Assistant間的自動驗証用,所以在下拉的欄位我們選服務帳戶:


自已取個服務帳戶名稱,然後按建立並繼續:


在接著跳出的頁面,選金鑰的欄位 -> 點擊下方新增金鑰的下拉式選項中,選擇建立新的金鑰:


在金鑰類型中,我們選擇JSON格式,按建立後,會自動把金鑰給下載到我們的電腦上。




此時我們已完成Google上的所有操作,也取得服務金鑰了~
有MCSE認証但不務正業的國際貿易打雜員工
上面的工作都完成後,就剩下Home Assistant上的設定了…

首先把剛才下載的金鑰檔案上傳到Home Assistant系統上的 /config目錄中,並改名為google_assistant.json


接著修改設定檔configuration.yaml,在最下方新增以下資料, project_id就是你在google上建立的專案id:
google_assistant:
project_id: xxxxxxxxxxxxxxxxxx
report_state: true
service_account: !include google_assistant.json
expose_by_default: true



要是不知道project_id的話,可回到https://console.actions.google.com,在專案中點右上角的3個點,選擇project settings,即可查到project_id ( 一開始忘了請大家先把這個給記下來~ Sorry~)


都設定好後,存檔->重啟Home Assistant服務器。

至此我們已完成了Google與Home Assistant服務器上的所有設定了~ 接下來就是見証奇蹟的時刻了~
有MCSE認証但不務正業的國際貿易打雜員工
接下來的工作就是把剛才建立的google服務加入到現有的google home中。

拿出手机打開google home


打開設定


往下滑找到支援google服務打開它


點右上的放大鏡,輸入myhome(剛才google上建立的),就可以搜尋到剛才建立的專案,選擇它!


此時Google Home會要求做帳號連結,點擊下方的LINK:


接著Google Home會透過我們一開始在Action設定的網址,連線到家中HA的首頁,HA首面上明確的提醒你要授權給我們一開始設定的https://oauth-redirect.googleusercontent.com/ 來訪問系統,我們此時輸入我們在HA上的帳號及密碼,按登入即可:


帳號密碼沒有輸入錯誤的話,Google Home就會自動與我們的Home Assistant做聯結:


等成功連接後,我們可以發現HA中的設備就全被拉到Google Home了,這意味著我們喊Hey Google時,也可以操控這些智慧裝置了~


連陸版的智慧延長線也一起加入到Google Home來了~


至此完成了Home Assistant與Google Assistant的聯結,透過Google Home即可語音控制這些裝置了!!!

沒有公網IP,其實也可以玩得很盡興的~
有MCSE認証但不務正業的國際貿易打雜員工
很實用的教學 但沒有動力去研究
Home Assistant有個人員追蹤的功能,它可以將每個實體的移動記錄顯示在地圖上。所以我有將我車上的安卓導航一體機設定車子一啟動就自動連接家中的Home Assistant,所以車子開出去會有大約的移動軌跡可查詢,我是設定顯示過去12小時內的軌跡:




所以開車去Motel是會被馬上抓包的…
有MCSE認証但不務正業的國際貿易打雜員工
maya95

凡走過必留下痕跡[^++^]

2022-09-25 14:24
chirle
chirle 樓主

更慘的是衣服都還沒脫,老婆就帶人衝進來…

2022-09-25 16:56
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?