最近開始使用 Home Assistant 將家中各種家電、電器串接起來,不過有沒有辦法將 LINE 串接到 Home Assistant 上?實際應用會像是,放在頂樓的洗衣機洗完衣服時,能透過 LINE 通知我,讓我可以趕快上去收衣服…等應用場景,最近剛好看到關注已久的大神成功了,順利透過 LINE Notify 將 LINE 串接到 HA 上面,以下跟大家分享如何實現,如果你還沒安裝 Home Assistant,想知道如何入門請參閱:如何從 0 到 1 安裝 Home Assistant 教學
Line 為最多台灣人使用的通訊軟體,雖然它一直被許多人罵,太肥大啦,漏通知啦,備份機制差啦一堆問題,但是仍然無法撼動它在台灣的市占率XD
其中台灣人有聽過的幾個應該是 Discord、Facebook Messenger、Google Hangouts、Pushbullet、Telegram、Twitter
列了這些就是沒有 Line
(如果有的話我也不用打這篇教學了)
於是 Yunseok Oh 這位網友就利用了 Line Notify 的 API,寫了一個 HA 的客製元件
Line Notify 可以透過 Line 來接收其他網站服務通知
首先,從作者的 GitHub 上下載客製元件
https://github.com/envinur/Homeassistant
dcard.tw
將下載下來的客製元件解壓縮後放置在 HA 的根目錄,完整資料夾路徑為
\custom_components\notify_line\
因為舊版本的緣故,若是你的 HA 版本為 0.88 以下(不含),你需要將 \custom_components\notify_line\ 底下的 notify.py 改名為 notify_line.py,然後把他移到 \custom_components\ 底下,原本的 notify_line 資料夾可直接刪除
接下來設定 Line Notify 的部分
首先,先加入 Line Notify 的 Line 官方帳號,沒加入的話你就無法使用 Line Notify 通知服務
ID搜尋 ” @linenotify ” 就可以將 Line Notify 官方帳號加入好友
或是你可以直接掃這個 QRcode
再來我們需將 Home Assistant 登錄進 Line Notify
進入以下網址
https://notify-bot.line.me/zh_TW/
dcard.tw
右上角點 “登入”
登入你的 Line 帳號
登入後網頁滑到底點選 “登錄服務”
照著圖片填入,填完後點選下方 “同意並前往下一步”
.服務名稱:智慧家庭通知
.服務概要:智慧家庭通知
.服務網址:你的 HA 網址
.企業/經營者名稱:智慧家庭通知
.所在國家/地區:台灣
.負責人姓名:智慧家庭通知
.電子郵件帳號:填入你可以收到信的email
.Callback URL:
https://google.com/
dcard.tw
(服務名稱會直接影響到你接收到通知時的標題,你隨時都可以回來這頁面更改名稱,我後續會說明)
按下 “登錄”
寄送驗證Email成功
至Email中收信,並點選 “Line Notify註冊用網址”
驗證完成,點選 “前往服務一覽”
點選剛剛建立的 “智慧家庭通知”
按下 “顯示”
記錄下你的 Client ID 以及 Client Secret
將以下網址的 [填入你的Client ID] 替換成你的 Client ID
https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=
dcard.tw
[填入你的Client ID]&redirect_uri=
https://google.com%26scope%3Dnotify%26state%3Dno_state/
dcard.tw
例如,你的 Client ID 是 abcd1234,那你的網址就會是
https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=abcd1234&redirect_uri=https://google.com&scope=notify&state=NO_STATE
dcard.tw
將以上網址貼入瀏覽器網址列並進入,會進入下圖的頁面
選擇 “透過1對1聊天接收LINE Notify的通知”,然後按下 “同意並連動”
接下來會跳回 Google 的首頁,不要急著關掉!!!
連動後你的手機會馬上收到通知
跳回 Google 首頁後你會發現網址列有 code=xxxxxx&state…….
將xxxxxx的部分記錄下來
下載 Postman 工具
https://www.getpostman.com/apps
dcard.tw
選擇你電腦相對應的版本
下載後安裝
安裝完會自動開啟,並要求你註冊,你可以使用 Email 註冊或懶人如我直接使用 Google 登入
註冊後會帶你到主頁面,預設會是白色主題
將 GET 改成 POST
在旁邊的 Enter request URL 填入
https://notify-bot.line.me/oauth/token
dcard.tw
照著圖中新增 KEY 的欄位並填入 VALUE 後按下 Send
.client_id:你的 Client ID
.client_secret:你的 Client Secret
.code:回傳網址的 code
.grant_type:authorization_code
.redirect_uri:
https://google.com/
dcard.tw
下方你會看到回傳回來的 access_token,記錄此 access_token
開啟 HA 的 configuration.yaml,並照著下圖新增
上圖中我提到可以新增多個 Line Notify,相對的你就要登錄多個服務
可以看到下圖,都是由 HA 發出的測試通知,但是標題都不一樣,這就是在登錄服務時我說的 “服務名稱會直接影響到你接收到通知時的標題”
在 configuration.yaml 的 notify: 底下新增完 notify_line 客製元件後,到 Configuration→General→CHECK CONFIG,確認過設定是無誤的後即可重啟 HA
重啟 HA 後直接來測試 Line Notify 是否可以正常發送通知
在 Developer tools 底下選擇 < > States
下拉選單中選到你剛剛在 configuration.yaml 中設定的 Line 通知名稱
Service Data (JSON, optional) 中填入
{“message”:”測試”}
如果你的 Line 有收到通知就代表成功啦
這邊我必須說明一下,若是你想推播通知的對象不是你自己,你有兩種方法
- 將 Line Notify 這個 bot 拉進你要傳送通知的那個人的對話,這將會變成群組,然後為這個群組生成一組 access_token,也就是再到 Line Notify 網站登錄一個服務
- 使用你要傳送通知的那個人的帳號密碼登入 Line Notify 網站,幫他登錄 “透過1對1聊天接收LINE Notify的通知” 的服務後產生 access_token
我在前面有說你隨時都可以回去改通知標題 (服務名稱),一樣進入下列網址
https://notify-bot.line.me/zh_TW/
dcard.tw
登入後點選你帳號名的下拉選單,點選管理登錄服務
點選你要更改通知標題的服務
直接改你要的服務名稱,儲存後會馬上生效
最後,來看一下這 Line Notify 通知要怎麼運用
Line Notify 可用在 Automation 自動化、Script 腳本,有使用過這兩個的一定都知道寫法基本上是一樣的,只不過前者是放在 action: 底下,後者是放在 sequence: 底下
我們從 Script 開始
基本的文字通知,注意,不管是何種通知,message: 都是必要的
也可以使用 data_template
template 的用法屬於進階的玩法,可以參考官方文件如何使用 template
https://www.home-assistant.io/docs/configuration/templating/
dcard.tw
可以使用貼圖通知,可用的貼圖表如下列網址
https://devdocs.line.me/files/sticker_list.pdf
dcard.tw
使用目錄絕對路徑來傳送圖片
使用圖片網址來傳送圖片
與上面的絕對路徑法可以同時設定,但是使用 file: 後 url: 會自動被忽略
文字使用data_template+貼圖+圖片的通知
再來是自動化通知,與上面的腳本大同小異,只要會設定腳本的 Line Notify 通知
自動化就一定會
下週要開箱的小玩具,可以搭配這個 Line Notify 來做通知
本文經作者 j@ş0ñ.Łæ.©ØM 授權轉載