作者:GeekOn
導讀:
智慧音箱可以設定鬧鐘,但卻不可以定時執行任務,今天就來搞定它。
續著上一篇IFTTT繼續
不知道是不想做還是不肯做還是不願做還是擠牙膏,總之目前的智慧音箱都是隻能設定鬧鐘,卻不能夠在設定的時間執行特定的操作任務。之前實現的時候有個方案,藉助日曆(比如
Google日曆
),例如“hi,Google,設定18:00開啟電視”,那麼就會在Google日曆的18:00設定一條日曆,並在日曆提醒時執行開啟電視的任務。執行後發現因為Node-RED和Google日曆執行時有延遲,總是不能夠很準確的在設定的時間執行任務(多數會延遲3-10分鐘),強迫症自然是不能忍。所以就執行第二套方案,在自己的伺服器上面做計時器定時,寫到頭麻到不想寫的時候,突然找到一個部件,可以協助實現,開心!
還是以Google home為例,可以實現語音設定“hi,Google,設定1730開啟空調”,並且使用Notify通知設定結果,支援單個刪除,全部刪除,修改等功能。實現這個功能用到幾個好東西,除Node-RED外,重磅推出
IFTTT
,
Line
即時通訊。
IFTTT
IFTTT是一個第三方平臺,可以很方便的聯動很多網路服務,可以和Google Assistant進行互動,用來自定義語音指令,個性化定製Google home可以說是非常方便,神器!
LINE
LINE就是一個即時通訊軟體,類似於wechat、whatsapp,只不過它可以直接接入IFTTT,用來接收推送通知方便快捷,且無推送資訊條數限制,強烈建議安裝使用。(wechat也可以,不過需要用企業微信,個人微信暫不支援。)
準備工作
1、Node-RED
需要新增一個元件,在Node-RED的選單中選擇
設定
安裝
,搜尋corn-plus,並安裝它。
2、IFTTT
首先要建立帳號,可以連結Google 或Facebook 帳號登入,也可以用Email 創一個新的。搜尋
webhook
,並連線,有一串api key需要記錄下來,並放入configuration。yaml。api key就是顯示的一串網址https://maker。ifttt。com/use/後面的部分。
記得重啟HA。
並連線你的Google Assistant賬號,Line賬號,具體在右上角點選頭像,選擇
My services
。還有其他許多服務都可以接入,這裡我們只先說這兩個。
回到HA,在配置中新增IFTTT整合,跟著說明走就好了。
開始設定
老規矩先說邏輯
Google指令傳入HANode-RED處理執行
Node-RED處理包括命令解析,時間設定,任務安排,以及修改、刪除,檢查當前設定等。1、先設定Google指令,透過IFTTT,上一篇已敘,不再贅述。
如果跟足上篇,正好就到了Google傳送事件至HA的環節。
2、HA收到事件的處理。
HA本身可以接收webhook發來的事件,上一篇也同樣有敘述,透過將有關資訊傳送到一串網路地址,該資訊就會被HA所接收,並作為一個
“事件”
,從而可以用來觸發一系列動作,並將其所攜帶的資訊作為處理資料。
在Node-RED中使用
events:all
模組來監測事件情況,配置如下:
IFTTT發來的
事件在HA
中使用ifttt_webhook_received來定義。
插播Debug
插播一下Node-RED中debug的使用,透過debug可以及時瞭解收到的資訊內容,json格式,以及產生錯誤的可能原因。
配置
通常我會選擇完整諮訊。將他連線到你希望瞭解輸出資訊的介面上,就可以了,他的存在不會影響你的其他流程,只會多出一個分支來收集所有的輸出資訊,並顯示在右側邊欄的debug欄。
圖示1、2、3開啟右側邊欄i是infomation視窗,中間的瓢蟲就是debug,後面的是dashboard。
看到
payload
沒,他就是對應msg。payload的,同理event_type對應的就是msg。event_type。而再下一級的用法是msg。payload。time,以此類推。
我本身使用了很多IFTTT的事件觸發,所以先要用switch模組來分流。
分流之後的第一個輸出口就是現在要用到的定時任務,
這是我們在IFTTT中設定的事件所攜帶的資訊,第一個event對應了剛才的分流設定,entity_id對應Google中的文字部分,time對應數字部分,
command是為了方便新增刪除等功能的附加欄位,state這裡為on表示這是設定讓裝置開啟的命令,同理在IFTTT中設定off的命令,並把對應的state改為off,就完成了新增turn off的定時功能。
由於這個Noede-RED的流程可以說是相當複雜,所以大家需要的話關注評論留言吧。
有任何疑問或者交流討論,歡迎隨時留言評論