如何連接ESP8266到MQTT代理
掃描二維碼
隨時(shí)隨地手機(jī)看文章
MQTT是機(jī)器到機(jī)器的連接協(xié)議。它是連接多個(gè)設(shè)備的理想物聯(lián)網(wǎng)平臺(tái)。在這個(gè)項(xiàng)目中,我們將把ESP8266與MQTT代理連接起來。我們將使用云MQTT作為我們的代理平臺(tái)和Arduino IDE來編程我們的ESP8266。
與MQTT一樣,還有許多其他平臺(tái)可用。但是,云MQTT有一個(gè)免費(fèi)的計(jì)劃選項(xiàng),所以我們可以創(chuàng)建一個(gè)帳戶并使用它。使用MQTT平臺(tái),我們可以向設(shè)備發(fā)送消息,也可以從設(shè)備接收消息。
什么是MQTT?
MQTT表示消息隊(duì)列遙測傳輸。在這個(gè)系統(tǒng)中,我們可以作為客戶端發(fā)布和訂閱消息。通過使用MQTT,您可以發(fā)送命令來控制輸出、讀取和發(fā)布來自傳感器的數(shù)據(jù)等等。因此,通過使用MQTT,可以在多個(gè)設(shè)備之間建立通信。使用MQTT,您可以向客戶機(jī)發(fā)送命令來控制輸出,也可以從傳感器讀取數(shù)據(jù)并將其發(fā)布到客戶機(jī)。MQTT中有兩個(gè)主要術(shù)語,即客戶端和代理。讓我們討論一下MQTT客戶端和MQTT代理到底是什么:
MQTT客戶機(jī):MQTT客戶機(jī)運(yùn)行MQTT庫并通過網(wǎng)絡(luò)連接到MQTT代理。發(fā)布者和訂閱者都是MQTT客戶機(jī)。發(fā)布者和訂閱者指的是客戶端是發(fā)布消息還是訂閱消息。
MQTT Broker:代理接收所有消息,過濾消息,確定誰訂閱了每條消息,并將消息發(fā)送給這些訂閱的客戶機(jī)。
組件的要求
?NodeMCU
?云MQTT
云MQTT帳戶設(shè)置
要在Cloud MQTT上建立一個(gè)帳戶,請(qǐng)瀏覽其官方網(wǎng)站(www.cloudmqtt.com)并使用您的電子郵件進(jìn)行注冊。
登錄后,點(diǎn)擊“+ Create New Instance”創(chuàng)建一個(gè)新實(shí)例。
現(xiàn)在輸入您的實(shí)例名稱,并在計(jì)劃選項(xiàng)中選擇“Cute Cat”。
在新選項(xiàng)卡中選擇區(qū)域并單擊“審查”。
您的實(shí)例已經(jīng)創(chuàng)建,您可以查看您的詳細(xì)信息,如用戶和密碼。
代碼的解釋
最后給出了將ESP8266與MQTT代理連接的完整代碼。在這里,我們使用Arduino IDE對(duì)ESP8266進(jìn)行編程。首先,安裝ESP8266WiFi和PubSubClient庫。
PubSubClient庫允許我們在主題中發(fā)布/訂閱消息。
現(xiàn)在為我們的WiFi和MQTT連接聲明一些全局變量。在以下變量中輸入您的WiFi和MQTT詳細(xì)信息:
在設(shè)置功能中,會(huì)檢查WiFi是否連接到網(wǎng)絡(luò),并在串口監(jiān)視器上打印出來。
在下面的while循環(huán)函數(shù)中,它將連接到MQTT服務(wù)器并將其打印到串行監(jiān)視器上。這個(gè)進(jìn)程將在一個(gè)循環(huán)中運(yùn)行,直到它被連接。
現(xiàn)在檢查設(shè)置函數(shù),它將發(fā)布和訂閱關(guān)于主題的消息,為此它將使用發(fā)布和訂閱方法。
現(xiàn)在我們將指定一個(gè)回調(diào)函數(shù),在這個(gè)函數(shù)中,我們將首先打印主題名稱,然后打印接收到的消息。
使用ESP8266測試MQTT
現(xiàn)在要測試代碼,使用Arduino IDE將此代碼上傳到ESP8266并打開串行監(jiān)視器。
要訂閱和發(fā)布MQTT主題,將使用一個(gè)Google Chrome應(yīng)用程序MQTTlens。你可以從這里下載應(yīng)用程序。
啟動(dòng)此應(yīng)用程序并設(shè)置與MQTT代理的連接。要設(shè)置連接,單擊“連接”,并在下一個(gè)窗口中輸入您的連接詳細(xì)信息從云MQTT帳戶。
保存此連接,現(xiàn)在可以使用ESP8266在MQTT代理上訂閱和發(fā)布消息。
若要訂閱或發(fā)布消息,請(qǐng)?jiān)谟嗛喓桶l(fā)布選項(xiàng)中輸入主題名稱,并輸入默認(rèn)消息。您的信息將顯示在串行監(jiān)視器上,如上圖所示。
因此,我們已經(jīng)成功地將MQTT代理與ESP8266連接起來。請(qǐng)繼續(xù)關(guān)注我們更多令人驚嘆的物聯(lián)網(wǎng)項(xiàng)目。
本文編譯自iotdesignpro