IFTTT是“If This, Then That.”的縮寫,代表「若發生這個事件,則執行那個動作」,其核心理念是「讓網際網路為你工作(”Put the Internet to work for you”)」,自動串聯手機App、網站和硬體裝置。
例如,你可以設定讓小孩手機的GPS偵測到離開校園時,自動發送訊息告知家人,或者令Instagram在拍攝照片之後,自動發布到Twitter或者備份到Dropbox,或者自動紀錄你的通勤時間到Google試算表…等等。
IFTTT的運作規則設置,稱為Applet(以前叫做Recipe,以下稱為「方案程式」),每個方案程式都包含一個Trigger Service(觸發服務,以前叫做Channel)的事件觸發來源,以及處理此事件的Action Service(動作服務)。
許多智慧家電和網通設備也都有支援IFTTT,例如,飛利浦Hue智慧燈泡、無線網路IP分享器、智慧音箱、洗衣機…等。以網路IP分享器為例,它能在偵測到新的裝置連入時,透過IFTTT發送訊息給你。美國太空總署NASA也有提供IFTTT服務,讓使用者訂閱新聞和太空影像,甚至可讓你設定在ISS國際太空站經過你家上空時,閃爍家裡的飛利浦Hue燈泡。
IFTTT的Webhooks服務(一個自訂的連結網址,最初叫做Maker channel),能讓使用者自訂的程式或硬體,串連其他服務。例如,我們可以寫一個追蹤商品價格的網路爬蟲(廣告一下,請參閱《超圖解Python程式設計入門》第六章「自動收集網路資訊」),在價格變動時自動傳送通知訊息。
本文將使用一個ESP8266微電腦控制板(Wemos D1 mini),搭配MicroPython程式,在感測到有人經過時,發送LINE訊息;你可以改成發送推文、郵件、Facebook貼文或其他動作。
底下的操作步驟將設定IFTTT的方案程式,包含自訂事件名稱、指定觸發事件的來源(微電腦控制板)和處理事件的動作,設定完畢後,它將產生如下格式的唯一網址:
https://maker.ifttt.com/trigger/事件名稱/with/key/驗證碼
用瀏覽器或者程式連結到這個網址,將令IFTTT平台執行我們自訂的方案程式。
註冊IFTTT服務
IFTTT是免費的,若是第一次使用,請在IFTTT首頁透過Google或Facebook帳號登入,或者輸入e-mail註冊。
我之前已經註冊過帳號,IFTTT要求我輸入密碼;按下Verify(確認)即可登入。
設置IFTTT的Webhooks自建服務
底下步驟將建立自訂的方案程式(Applet),首先要指定觸發事件的來源。
- 進入自建Applet頁面。按下其中的「+This」:
- 瀏覽器將跳轉到Choose a service(選擇一項服務)頁面,請搜尋關鍵字“webh”,再點擊搜尋到的Webhooks服務。
- 按下Connect Webhooks(連結Webhooks)頁面底下的Connect(連結)。
- 在Choose trigger(選擇觸發來源)頁面,點擊中間的藍色區塊。
- 輸入觸發此服務的自訂事件名稱,然後按下Create Trigger(建立觸發器)。 筆者將「事件名稱」取名為PIR,代表「紅外線人體感應器」,你可以輸入其他名字(可輸入中文,但是中文經過URL編碼之後,在網址上看起來像一堆亂碼)。至此,前半部的「觸發來源」服務就設定完成了。
- 點擊「+That」,設定處理事件的「動作服務」:
- 從Choose action service(選擇動作服務)頁面,搜尋關鍵字“LINE”,再點擊找到的LINE服務:
- 按一下Connect LINE(連結LINE)頁面的Connect(連結):
- 瀏覽器將彈出新視窗,要求你輸入LINE的註冊e-mail和密碼:
- 點擊「登入」,再按下「同意並連動」。
- 瀏覽器將進入IFTTT的Choose action(選擇動作)設定頁面;按下Send message(傳送訊息)。
- 設定從LINE發送的訊息內容。我們可選擇性地在訊息中加入參數,例如,讓物聯網裝置在觸發事件時,附帶傳遞溫度和濕度資料;參數最多3個,命名成Value1, Value2或Value3,參數前後要用“{{”和“}}”包圍。 自訂訊息可用<br>(斷行)標籤分隔多行文字。筆者設定的{{Value1}}參數將代表觸發此動作的感測器名稱,例如:「大門」或「客廳」。
- 最後,按下Finish(結束)完成設定。
到此,自訂的方案程式設定完成!
您好,不好意思想詢問一下,我依照Arduino 互動設計入門19-5 自動發送line訊息的入侵警報系統編碼時
發生了一個error code 【code mark 的程式為:http.begin(“maker.ifttt.com”,80,path);】
發生的code 為call to “HTTPClient::begin declared with attribute error::obsolete API,use::begin(WiFiClient,host,port,uri)
請教要如何修改http.begin內容才不會發生error,謝謝
我剛剛在Arduino開發板管理員中,把ESP8266的核心程式升級到3.0.2版,也遇到這個語法錯誤。
因為3.x版修改了HTTP前端程式的語法,如果用2.x版編譯程式就沒問題。在ESP8266 3.x版的編譯環境下,請在程式碼開頭引用WiFiClient.h程式庫,並宣告一個WiFiClient類型物件,例如:
然後在 http.begin()函式的第一個參數,輸入wifiClient物件,像這樣:
再次編譯、上傳程式到ESP8266開發板就沒問題了。
thanks,
jeffrey
如果我有兩個 line 帳號,但我希望當有人傳送訊息到 Line 帳號 A 得時候,系統可以通知我在手機上的 Line 帳號 B,這樣可以怎麼設定啊?