前言:
最近小編在折騰Arduino,為了讓板子聯(lián)網(wǎng)又買了ESP8266 NODEMCU (wifi模塊,也是一個(gè)單片機(jī))。雖然能通過(guò)燒錄的程序通過(guò)http請(qǐng)求自己的服務(wù)器接口,但是顯然并不符合當(dāng)下主流的物聯(lián)網(wǎng)方式,并且定時(shí)請(qǐng)求接口還浪費(fèi)資源。
于是就引出了MQTT協(xié)議,在網(wǎng)上我也找了關(guān)于MQTT代理服務(wù)的軟件也有很多。比如Eclipse基金會(huì)的Mosquitto ,以及Apache的 Apollo,當(dāng)然還有很多主要看自己的需求,而我選擇了國(guó)內(nèi)的EMQ。
MQTT簡(jiǎn)介:
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)是IBM開(kāi)發(fā)的一個(gè)即時(shí)通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。該協(xié)議支持所有平臺(tái),幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來(lái),被用來(lái)當(dāng)做傳感器和制動(dòng)器(比如通過(guò)Twitter讓房屋聯(lián)網(wǎng))的通信協(xié)議。
EMQ簡(jiǎn)介:
EMQ X Enterprise 企業(yè)級(jí)物聯(lián)網(wǎng) MQTT 消息平臺(tái),支持百萬(wàn)級(jí)物聯(lián)網(wǎng)設(shè)備一站式接入、MQTT&CoAP 多協(xié)議處理、低時(shí)延實(shí)時(shí)消息通信。支持基于 SQL 的內(nèi)置規(guī)則引擎,靈活處理/轉(zhuǎn)發(fā)消息到后端服務(wù),存儲(chǔ)消息數(shù)據(jù)到各種數(shù)據(jù)庫(kù),或橋接 Kafka、RabbitMQ 等企業(yè)中間件。
實(shí)現(xiàn)思路:
1. 使用EMQ搭建MQTT的代理服務(wù)器。
2. 后臺(tái)(PHP)可以通過(guò)phpMQTT類庫(kù)或者通過(guò)安裝擴(kuò)展作為客戶端連接mqtt代理,發(fā)布消息或訂閱主題,和將消息存入數(shù)據(jù)庫(kù)等等。
3. 硬件Esp8266 NodeMCU通過(guò)mqtt庫(kù)連接代理,同樣的發(fā)布消息或者訂閱主題。
搭建過(guò)程:
1. EMQ官網(wǎng)點(diǎn)擊下載,產(chǎn)品->EMQ X Broker->下載。

2. 根據(jù)自己系統(tǒng),選擇下載。

3. 解壓縮之后,得到下面目錄

4. 命令面板進(jìn)入該目錄,執(zhí)行emq start。

5. 瀏覽器打開(kāi) http://localhost:18083就可以進(jìn)入EMQ的web控制臺(tái)了。

6. EMQ管控后臺(tái)默認(rèn)賬號(hào): admin 密碼: public,如果忘記了也可以在安裝目錄的etcplugins的emqx_auth_username.conf,打開(kāi)文件可以看到賬號(hào)密碼了。

7. 代理服務(wù)已經(jīng)創(chuàng)建,接下來(lái)就可以通過(guò)mqtt客戶端連接測(cè)試一下,這里的客戶端推薦EMQ的在線客戶端,這里小編就安利一款國(guó)外的客戶端 “MQTT.fx”的軟件,可以在網(wǎng)上搜索下載,接下來(lái)也以這個(gè)舉例。


8. 創(chuàng)建一個(gè)MQTT代理服務(wù)器,就是剛剛本地啟動(dòng)的,輸入以下類似地址。
9. 點(diǎn)擊connect就馬上連接,當(dāng)右邊圓點(diǎn)是綠色表示連接成功,接下來(lái)就可以測(cè)試一下訂閱和發(fā)布了。


10. 訂閱一個(gè)主題,名稱可以自己隨意定義。
11. 在對(duì)應(yīng)主題下發(fā)布一條消息,就是剛剛創(chuàng)建的,然后內(nèi)容隨便填寫,點(diǎn)擊訂閱就可以看到該主題的消息了。


12. EQM代理后臺(tái)也可以看到剛剛發(fā)布訂閱與連接信息了。



13. ESP8266 NODEMCU連接代理服務(wù),也可以訂閱指定的主題,發(fā)布或接收消息完成硬件的操作。比如控制LED開(kāi)關(guān),給另一主題發(fā)送板子的溫度消息等等。
其他:
1. EMQ的端口枚舉如下:

2. 本地關(guān)閉MQTT服務(wù), 進(jìn)入軟件目錄命令輸入emqx stop

3. 啟動(dòng)mqtt服務(wù)后,可以根據(jù)端口查看進(jìn)程,然后根據(jù)進(jìn)程號(hào)關(guān)閉該服務(wù)。

了解更多