(2021/03/30)
本文應該是利用bDesigner來寫NodeMCU在物聯網使用的第一篇,因為之前我利用bDesigner測試MQTT時發現問題,蔡佳倫老師第一時間(今日凌晨)修正了問題(有函式庫程式忘了附上),真是太感謝了。這也是高科大微學分班我要上課的內容,供參。
一、認識MQTT
先要知道 MQTT的Publisher(發布者), Broker(代理人)和Subscriber(訂閱者),以下資料取自 【MQTT教學(一):認識MQTT】(內有MQTT的詳細說明)
根據MQTT 3.1.1版本規格書的描述,MQTT是一種基於「發布∕訂閱」機制的訊息傳輸協定(MQTT is a Client Server publish/subscribe messaging transport protocol),我們可以把它想成雜誌發行和訂閱的機制。MQTT訊息發送端,相當於雜誌出版社,雜誌出版之後並不直接寄給消費者,而是交給經銷商或者書店一般的代理人(broker),來統籌管理發行和訂閱事宜。每一個訊息來源(刊物)都有個唯一的主題名稱(刊物名稱)。
代理人是個伺服器軟體(本文採用broker.hivemq.com),向伺服器發送主題的一方是發布者(publisher),從伺服器獲取主題的一方則是訂閱者(subscriber)。以下圖為例,傳送感測器資料的一邊是發布者,接收感測器資料的一邊則是訂閱者。每個感測器∕微控器的訊息都需要有個主題名稱以利識別。
MQTT的主題(Topic)名稱:MQTT主題名稱是UTF-8(萬國碼)編碼的字串,我們可以自行決定主題名稱,例如,傳送溫度的訊息主題可命名成「溫度」、傳送亮度的訊息主題叫做「照度」…等等。主題名稱也支援類似檔案路徑的階層式命名方式 ,如: wenyu/home/1f/led
影片教學:
二、利用手機來遙控NodeMCU上的LED燈(D0,GPIO16)
角色:
Broker(代理人):這邊採用 broker.hivemq.com( 或test.mosquito.org、mqtt.eclipseprojects.io免費Broker)
Publisher(發布者):手機,採用 IoT MQTT Dashboard 的APP來發布訊息到Broker
Subscriber(訂閱者):NodeMCU ,本文先將NodeMCU當訂閱者,下一篇文章再來介紹NodeMCU當發布者
Topic(主題):wenyu/home/1f/nodemcu1
手機端(Publisher(發布者))
Android手機安裝 ioT MQTT Panel 的APP(以此為示範);iPhone手機可以安裝IoT OnOff或EasyMQTT (我沒有iphone手機無法測試)
建立一個連線
上面Broker Web改用 broker.hivemq.com這台
新增一個PANEL
NodeMCU (Subscriber(訂閱者))的程式
這次採用bDesigner來寫程式
程式內容
手機按下APP的ON時,NodeMCU上D0的LED燈亮起(如果是onboard的那顆燈,剛好相反,會滅掉)
手機按下APP的OFF時,NodeMCU上D0的LED燈滅掉(如果是onboard的那顆燈,剛好相反,會亮起)
如果有問題時,可以先去監看一下是否成功連上網了?
三、利用手機來遙控NodeMCU上的繼電器(D4(GPIO2))
NodeMCU (Subscriber(訂閱者))的程式,同上,在判斷的地方加上繼電器的啟動或關閉判斷
最外面這個判斷(【訂閱=wenyu/home/1f/nodemcu1】 沒有也沒關係
剛好D4是接那顆integrated LED(ESP8266晶片旁邊那顆),所以可以直接觀察那顆燈的變化即可(一樣ON時關燈,OFF時開燈)
手機端(Publisher(發布者))
四、電腦安裝MQTTBox軟體
除了使用手機APP外,也可以在電腦安裝MQTTBox軟體
測試成功
五、利用手機來播放NodeMCU上的音樂,蜂鳴器(D6(GPIO12))
NodeMCU (Subscriber(訂閱者))的程式,同上,在判斷的地方加上對音樂啟動的判斷
請改用bdesigner來改寫下面程式
手機端(Publisher(發布者))
新增一個按鈕
六、利用網址來開關燈
bDesigner還有提供啟動網頁伺服器的積木
如下程式,就可以用網址來控制開關燈了
此部份,電腦或手機要與NodeMCU在同一網段
測試
六、利用LINE通傳
按按鍵一下,會發出一個LINE通傳
LINE 權杖的申請,網址:https://notify-bot.line.me/zh_TW/,可參閱04 LINE的應用
程式
應用在門柰系統,當有人闖入時,會傳LINE告知