esp8266用mqtt協議通訊

2021-08-20 15:24:45 字數 2335 閱讀 6228

之前用esp8266做的東西是通過tcp連線來和伺服器端通訊的,伺服器端需要自己管理所有的連線,每個連線要做心跳包,還要考慮通訊訊息的可靠性。偶然看到了mqtt協議,發現可以拿來用。

mqtt協議介紹

esp8266可以用的mqtt客戶端

//注意我這邊用的是esp12e模組,**16塊左右,所以有16引腳,esp8266也可以燒製以下程式

#include

#include

// update these with values suitable for your network.

const

char* ssid = "........";

const

char* password = "........";

const

char* mqttserver = ".....";

const

int mqttport = 9999;

const

char* mqttusername = "...";

const

char* mqttpassword = "...";

const

char* lighttopic = "...";

const

char* willtopic = "...";

const

char* onlinetopic = "...";

const

char* clientid = "...";

wificlient espclient;

pubsubclient client(espclient);

int lightpin = 16;

void setup_wifi()

serial.println("");

serial.println("wifi connected");

serial.println("ip address: ");

serial.println(wifi.localip());

}void callback(char* topic, byte* payload, unsigned

int length)

serial.println(command);

handlepayload(string(topic), command);

}void reconnect() else

}}void setup()

void loop()

client.loop();

}//處理命令

string handlepayload(string topic, string payload) else

if (string("lightoff").equals(payload))

}}

伺服器列表 中的伺服器都是可以支援mqtt的,大家可以根據個人情況選擇。我這邊用的 activemq

解壓縮,然後進入bin目錄 執行以下命令啟動

activemq.bat start

3.開啟examples\mqtt\websocket目錄下的index.html

可以進行測試

4.配置埠和使用者名稱密碼

開啟config/activemq.xml檔案

name="openwire"

uri="tcp:"/>

name="amqp"

uri="amqp:"/>

name="stomp"

uri="stomp:"/>

name="mqtt"

uri="mqtt:"/>

name="ws"

uri="ws:"/>

transportconnectors>

username="admin"

password="admin"

groups="users,admins"/>

username="user"

password="password"

groups="users"/>

users>

******authenticationplugin>

plugins>

ESP8266 利用網頁控制ESP8266

說明 發出 gpio 1 就輸出 亮燈 gpio 0 就輸出 滅燈 include const char ssid jia 這裡輸入wifi名稱 const char password lm654321 這裡輸入wifi密碼 wifiserver server 80 開啟板子的80埠 int val...

ESP8266學習筆記

因為此模式可控性高且方便,所以推薦此模式 測試指令 at 應用模式設定 at cwmode 3 ap 模式 1 esp8266模組作為熱點,實現手機或電腦直接與模組通訊,實現區域網無線控制。sta 模式 2 esp8266模組通過路由器連線網際網路,手機或電腦通過網際網路實現對裝置的遠端控制 sta...

ESP8266輸出控制

gpio的輸出 esp8266的輸出控制。在esp8266引腳作為gpio輸出時,首先要配置gpio為輸出模式,這個和普通的32位微控制器的io輸出是一樣的,然後提供改變io口的電平來控制輸出模組的狀態。在這裡我用我自己手上的一款esp8266的微控制器為例。gpio相關介面位於 esp8266 n...