事件觸發功能進階教學 ─ 使用更新後的 Webhook 功能連動外部服務
透過 MCS 連動 Wifi 智能燈泡
上一篇我們介紹了在原型開發的階段,事件觸發功能的優化,包含支援了觸發條件的資料通道、新增網頁警告的視覺化提示及如何自行定義該警告提示的嚴重性名稱。本篇文章我們要教大家如何使用優化的 Webhook 功能並以一個實際案例做為教學。若還沒閱讀上一篇,建議可完成上一篇後再回到本篇閱讀以利交互搭配新功能一起使用。
延續上一篇的介紹,我們可以看到連接MCS的工廠機台,在分別發生警告嚴重性為橘色/警告名稱為 Medium 及警告嚴重性為紅色/警告名稱為High 兩種事件時,在測試裝置頁面的呈現,如下2張圖所示:
現在,除了網頁警告提示之外,如果我們希望在事件發生的同時,能更進一步地連動到某個遠端的實體裝置(例如:智能音箱、無線燈泡…)以提示在該地點的管理者,能否透過MCS來實現呢?答案是可以。
首先,我們必須選擇我們想要連動的物聯網裝置。除了挑選情境適合的裝置外,這個物聯網裝置在技術上必須滿足以下條件:
- 有對外開放 API 接口
- API 支援 HTTP Restful 的通訊協定
我們假設情境設定如下: 當工廠機台發生上述兩種事件觸發的緊急狀況時,透過 MCS 連動到管理者家中臥房的無線燈泡,且燈泡直接顯示紅色或橘色的燈光。在這個案例中,我選擇使用彩色的Wifi LED智能燈泡 ─ 美國LIFX 燈泡(也可以選擇較常見的Philip Hue,只是筆者剛好 2 年多前為了嘗鮮而購入)。從該公司網站上,我們可以確定產品皆支援HTTP Restful的 API 接口以利外部服務與其整合。
回到MCS上,我們以設定橘色警告燈的Medium 觸發事件1為例。回到原型下事件觸發設定的步驟三進行編輯,在動作類型的選項下拉新增 Webhooks。
如果過去你曾經使用過Webhook這個功能,眼尖的你應該發現目前的Webhook 設定介面我們新增了三個欄位: 動作(Actions)、標頭(Headers)及內文(Body),這樣的格式也是今日普遍的HTTP Restful 請求格式。
到 LIFX 官方的開發者頁面,找到改變燈泡行為 (Set State) 的教學頁面(https://api.developer.lifx.com/docs/set-state),並將觸發該燈泡所需的必要資訊填入MCS上的 Webhook 觸發動作頁面:
動作:
PUT
控制此燈泡之 HTTP 要求動作
URL:
https://api.lifx.com/v1/lights/:selector/state
其中:selector為變數,可為all
、label:[value]
、id:[value]
任一種識別資訊指定欲連動的燈泡
標頭:
Authorization:Bearer XXXXXXXXXXXX
、Content-Type:application
其中 Authorization 的值為使用者的識別碼,需於登入 LIFX cloud Home 的頁面後創建該 personal access tokens(LIFX 教學頁面有說明如何創建)。內文的格式則為json。
內文:
{
"power": "on",
"color": "orange"
}
LIFX 的官方文件中有針對燈光的細節如亮度、燈光持續時間、模式等提供更完整的說明,且對應的物件皆可放入內文。此情境中僅放入 power 及 color 兩個物件。接著,按下寄發 Webhook 按鈕測試打到 LIFX服務的 Webhook 是否有成功觸發燈泡開啟橘色燈光。我們可以看到下圖中燈泡成功地開啟橘光。按下儲存便完成這個事件觸發設定的更新。
依此類推,我們複製同樣的設定在高警告嚴重性的 High事件 ─ 即當機台運轉狀態轉為弱時,同時觸發家中臥房的 LIFX 燈泡 開啟紅色燈光。在此設定中,除了內文的 "color" 修改為 "red"外,其餘資訊皆和事件1相同。
完成後,可以看到在觸發條件與動作列表中,兩個告警事件後方的觸發動作下已新增了 Webhooks。至此我們完成了工廠機台發生狀況時透過 MCS 遠端連動家中臥室燈光的設定。
透過MCS事件觸發中的簡單設定,我們可以輕鬆的遠端連動除了智能燈泡外不同的物聯網裝置。除了本文中的 LIFX燈泡或其他物聯網的硬體裝置外,我們當然也可以透過 Webhook 的功能在事件發生時連動到其他支援HTTP Restful 的軟體服務,如IFTTT、Slack 或 Line 等,在這裡我們就不再多做介紹,你可以針對你所需的應用選擇適當的軟硬體產品並參照該服務網站上的相關說明。
最後特地說明一下,此案例是透過 MCS 本身的 Webhook功能控制/連動遠端的軟硬體服務;相反地,若要透過第三方的軟體服務和MCS做互動,則需透過申請appId及appSecret的方式並透過該服務的webhook去來和MCS做互動,有興趣的使用者可複習透過「服務提供者」功能讓外部服務與 MediaTek Cloud Sandbox 連動 (上) 此篇教學。
現在,馬上回到 MCS 開始建立你的事件觸發情境吧!