Home Assistant 如何串接 LINE 通知?實現各種場景的智慧居家指令、接收訊息

3c部落客俞果

最近開始使用 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\

Home Assistant 串接 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

LINE NOtify 串接

再來我們需將 Home Assistant 登錄進 Line Notify
進入以下網址
https://notify-bot.line.me/zh_TW/
dcard.tw

LINE Notify 通知

右上角點 “登入”

LINE Notify 串接教學

登入你的 Line 帳號

LINE Notify 串接教學

登入後網頁滑到底點選 “登錄服務”

照著圖片填入,填完後點選下方 “同意並前往下一步”
.服務名稱:智慧家庭通知
.服務概要:智慧家庭通知
.服務網址:你的 HA 網址
.企業/經營者名稱:智慧家庭通知
.所在國家/地區:台灣
.負責人姓名:智慧家庭通知
.電子郵件帳號:填入你可以收到信的email
.Callback URL:
https://google.com/
dcard.tw

LINE Notify 串接教學

(服務名稱會直接影響到你接收到通知時的標題,你隨時都可以回來這頁面更改名稱,我後續會說明)

按下 “登錄”

LINE Notify 串接教學

寄送驗證Email成功

LINE Notify 串接教學

至Email中收信,並點選 “Line Notify註冊用網址”

LINE Notify 串接教學

驗證完成,點選 “前往服務一覽”

LINE Notify 串接教學

點選剛剛建立的 “智慧家庭通知”

LINE Notify 串接教學

按下 “顯示”

LINE Notify 串接教學

記錄下你的 Client ID 以及 Client Secret

LINE Notify 串接教學

將以下網址的 [填入你的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 的首頁,不要急著關掉!!!

LINE Notify 串接教學

連動後你的手機會馬上收到通知

LINE Notify 串接教學

跳回 Google 首頁後你會發現網址列有 code=xxxxxx&state…….
將xxxxxx的部分記錄下來

Home Assistant 串接 LINE 通知

下載 Postman 工具
https://www.getpostman.com/apps
dcard.tw

選擇你電腦相對應的版本

Home Assistant 教學

下載後安裝

Home Assistant LINE 通知

安裝完會自動開啟,並要求你註冊,你可以使用 Email 註冊或懶人如我直接使用 Google 登入

Home Assistant 串接 LINE 通知

註冊後會帶你到主頁面,預設會是白色主題

Home Assistant 串接 LINE 通知

將 GET 改成 POST
在旁邊的 Enter request URL 填入
https://notify-bot.line.me/oauth/token
dcard.tw

Home Assistant 串接 LINE 通知

照著圖中新增 KEY 的欄位並填入 VALUE 後按下 Send
.client_id:你的 Client ID
.client_secret:你的 Client Secret
.code:回傳網址的 code
.grant_type:authorization_code
.redirect_uri:
https://google.com/
dcard.tw

Home Assistant 串接 LINE 通知

下方你會看到回傳回來的 access_token,記錄此 access_token

Home Assistant 串接 LINE 通知

開啟 HA 的 configuration.yaml,並照著下圖新增

Home Assistant 串接 LINE 通知

上圖中我提到可以新增多個 Line Notify,相對的你就要登錄多個服務
可以看到下圖,都是由 HA 發出的測試通知,但是標題都不一樣,這就是在登錄服務時我說的 “服務名稱會直接影響到你接收到通知時的標題”

Home Assistant 串接 LINE 通知

在 configuration.yaml 的 notify: 底下新增完 notify_line 客製元件後,到 Configuration→General→CHECK CONFIG,確認過設定是無誤的後即可重啟 HA

智慧家庭

重啟 HA 後直接來測試 Line Notify 是否可以正常發送通知
在 Developer tools 底下選擇 < > States

智慧居家

下拉選單中選到你剛剛在 configuration.yaml 中設定的 Line 通知名稱

Home Assistant 串接 LINE 通知

Service Data (JSON, optional) 中填入
{“message”:”測試”}

Home Assistant 串接 LINE 通知

如果你的 Line 有收到通知就代表成功啦

Home Assistant 串接 LINE 通知

這邊我必須說明一下,若是你想推播通知的對象不是你自己,你有兩種方法

  1. 將 Line Notify 這個 bot 拉進你要傳送通知的那個人的對話,這將會變成群組,然後為這個群組生成一組 access_token,也就是再到 Line Notify 網站登錄一個服務
  2. 使用你要傳送通知的那個人的帳號密碼登入 Line Notify 網站,幫他登錄 “透過1對1聊天接收LINE Notify的通知” 的服務後產生 access_token

我在前面有說你隨時都可以回去改通知標題 (服務名稱),一樣進入下列網址
https://notify-bot.line.me/zh_TW/
dcard.tw

登入後點選你帳號名的下拉選單,點選管理登錄服務

Home Assistant 串接 LINE 通知

點選你要更改通知標題的服務

Home Assistant 串接 LINE 通知

直接改你要的服務名稱,儲存後會馬上生效

Home Assistant 串接 LINE 通知

最後,來看一下這 Line Notify 通知要怎麼運用
Line Notify 可用在 Automation 自動化、Script 腳本,有使用過這兩個的一定都知道寫法基本上是一樣的,只不過前者是放在 action: 底下,後者是放在 sequence: 底下

我們從 Script 開始

Home Assistant 串接 LINE 通知

基本的文字通知,注意,不管是何種通知,message: 都是必要的

也可以使用 data_template
template 的用法屬於進階的玩法,可以參考官方文件如何使用 template
https://www.home-assistant.io/docs/configuration/templating/
dcard.tw

Home Assistant 串接 LINE 通知

可以使用貼圖通知,可用的貼圖表如下列網址
https://devdocs.line.me/files/sticker_list.pdf
dcard.tw

使用目錄絕對路徑來傳送圖片

Home Assistant 串接 LINE 通知

使用圖片網址來傳送圖片

Home Assistant 串接 LINE 通知

與上面的絕對路徑法可以同時設定,但是使用 file: 後 url: 會自動被忽略

文字使用data_template+貼圖+圖片的通知

Home Assistant 串接 LINE 通知

再來是自動化通知,與上面的腳本大同小異,只要會設定腳本的 Line Notify 通知
自動化就一定會

Home Assistant 串接 LINE 通知

下週要開箱的小玩具,可以搭配這個 Line Notify 來做通知

本文經作者 j@ş0ñ.Łæ.©ØM 授權轉載