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