本文將使用ESP8266控制板(如:NodeMCU或Wemos D1 mini)製作「一鍵」發Line訊息的物聯網按鈕。假設在廚房放一個物聯網按鈕,按下它就發Line通知老公洗碗;在門口放一個按鈕,按一下Line就會發送空氣品質訊息;把按鈕改成「磁簧開關」安裝在門窗,或者「PID人體紅外線偵測器」,這個小裝置就變成防盜器,若門窗被打開,Line就會發送入侵通知。
書本的補充內容
本文將使用ESP8266控制板(如:NodeMCU或Wemos D1 mini)製作「一鍵」發Line訊息的物聯網按鈕。假設在廚房放一個物聯網按鈕,按下它就發Line通知老公洗碗;在門口放一個按鈕,按一下Line就會發送空氣品質訊息;把按鈕改成「磁簧開關」安裝在門窗,或者「PID人體紅外線偵測器」,這個小裝置就變成防盜器,若門窗被打開,Line就會發送入侵通知。
本程式只需處理並回應文字訊息。假設用戶輸入「空氣」文字,這個Line聊天機器人將查詢空氣品質並回應(reply)給使用者,這部份的程式碼如下:
request模組使用「回呼函式」執行非同步任務。「建立Node.js版的Echo Bot」這一篇文章使用的Line程式庫則採用稱為Promise(直譯為「承諾」)的非同步程式設計風格。這兩種非同步程式語法的差別在於,一個是把回呼函式嵌套在處理函式裡面,另一個則是用“.then”指令,串連回應函式(註: “then”有「然後…」之意):
底下是本程式專案的檔案結構,其中的Procfile是Heroku平台環境的應用程式(也就是“dyno”)設定檔,其中只包含一行敘述:“web: node index.js”代表指定網站伺服器以node服務執行index.js。本範例檔包含ejs樣板,但下一篇的程式才會用到。
在LINE頻道的設定畫面中,我們必須替LINE頻道設定接收LINE訊息的自訂程式(也就是LINE 機器人程式)網址,這個網址稱為Webhook(註:hook代表「掛勾」)。假設筆者把LINE訊息處理程式放在swf.com.tw網站的linewebhook路徑,那麼,每當有人發送訊息給我的LINE機器人,LINE公司的伺服器將以底下的HTTP POST請求格式,將訊息發送給我的網站伺服器:
撰寫Node.js程式之前,先替網站程式找個安頓之處,本文採用Heroku雲端應用程式平台。「雲端應用程式平台」類似出租套房,地主蓋了樓房,將它分隔成不同尺寸的套房,每個套房都有獨立的水電和網路等基礎設施,套房裡面住著不同的房客。
聊天機器人程式的處理架構如下,LINE公司的訊息伺服器(Messaging Server)負責接收與回應用戶端的訊息,並且管理LINE應用程式的權限。當LINE伺服器收到用戶端的訊息時,它會把訊息轉送給我們開發的「聊天」機器人程式,而此程式碼存放在我們自己的網站伺服器。
Android Studio是Google推出的Android開發整合工具,採用Java語言。Cordova開發者只用到其中的編譯和Android模擬器功能,除非你要用Java語言開發Cordova的外掛,否則,說真的是大材小用。
本文旨在更新《超圖解物聯網IoT實作入門》10-3頁,「設置Cordova的Android開發環境」單元,主因是Google不再單獨提供圖形操作介面版的“SDK Tools Only(僅SDK工具)”,如果需要圖形操作介面,必須下載完整的Android Studio開發工具。
《超圖解物聯網IoT實作入門》書本3-41頁提到,可以在Chrome瀏覽器安裝Postman這個應用程式來傳送各種HTTP請求。Postman工具主要用於協助開發、測試REST API(參閱3-35頁),除了附屬於Chrome瀏覽器的版本,在Postman的官網也能下載「桌面版」原生應用程式(native app),此跨平台應用程式也是用JavaScipt, HTML和CSS等網頁技術,透過Electron製作而成。
你可以嘗試在nRF24L01無線收發器模組焊接電容,電容的耐電壓值請選擇6.3V或更高,為了有效抑制電源的雜訊,電容應該盡量靠近IC的電源腳:
本單元將使用兩個nRF24L01,以及兩片Arduino Uno控制板建立一對一無線通訊實驗。從這個簡單的例子,可以認識nRF24L01程式庫的設定頻道、通道、功率和收發訊息的指令,以及新、舊程式庫的一些參數設置的不同點。
Begin typing your search term above and press enter to search. Press ESC to cancel.