您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“ESP8266如何連接到的免費(fèi)的EMQ X MQTT服務(wù)器”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
MQTT 是輕量級的、靈活的物聯(lián)網(wǎng)消息交換和數(shù)據(jù)傳遞協(xié)議,致力于為 IoT 開發(fā)人員實(shí)現(xiàn)靈活性與硬件/網(wǎng)絡(luò)資源的平衡。
ESP8266 提供了?套?度集成的 Wi-Fi SoC 解決?案,其低功耗、 緊湊設(shè)計(jì)和?穩(wěn)定性可以滿??戶的需求。ESP8266 擁有完整的且?成體系的 Wi-Fi ?絡(luò)功能,既能夠獨(dú)?應(yīng)?,也可以作為從機(jī)搭載于其他主機(jī) MCU 運(yùn)?。
在此項(xiàng)目中我們將實(shí)現(xiàn) ESP8266 連接到 EMQ X Cloud 運(yùn)營和維護(hù)的免費(fèi)公共 MQTT 服務(wù)器,并使用 Arduino IDE 來對 ESP8266 進(jìn)行編程。 EMQ X Cloud 是由 EMQ 推出的安全的 MQTT 物聯(lián)網(wǎng)云服務(wù)平臺,它提供一站式運(yùn)維代管、獨(dú)有隔離環(huán)境的 MQTT 5.0 接入服務(wù)。
ESP8266
Arduino IDE
MQTT X: 優(yōu)雅的跨平臺 MQTT 5.0 客戶端工具
免費(fèi)的公共 MQTT 服務(wù)器
Broker: broker.emqx.io
TCP Port: 1883
Websocket Port: 8083
首先我們將導(dǎo)入 ESP8266WiFi 和 PubSubClient 庫,ESP8266WiFi 庫能夠?qū)?ESP8266 連接到 Wi-Fi 網(wǎng)絡(luò),PubSubClient 庫能使 ESP8266 連接到 MQTT 服務(wù)器發(fā)布消息及訂閱主題。
#include <ESP8266WiFi.h> #include <PubSubClient.h>
設(shè)置 Wi-Fi 名稱和密碼,以及 MQTT 服務(wù)器連接地址和端口
const char *ssid = "name"; // Enter your WiFi name const char *password = "pass"; // Enter WiFi password const char *mqtt_broker = "broker.emqx.io"; const int mqtt_port = 1883;
打開一個串行連接,以便于輸出程序的結(jié)果并且連接到 Wi-Fi 網(wǎng)絡(luò)
// Set software serial baud to 115200; Serial.begin(115200); // connecting to a WiFi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); }
設(shè)置 MQTT 服務(wù)器,并編寫回調(diào)函數(shù),同時(shí)將連接信息打印到串口監(jiān)視器上
client.setServer(mqtt_broker, mqtt_port); client.setCallback(callback); while (!client.connected()) { Serial.println("Connecting to public emqx mqtt broker....."); if (client.connect("esp8266-client")) { Serial.println("Public emqx mqtt broker connected"); } else { Serial.print("failed with state "); Serial.print(client.state()); delay(2000); } } void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char) payload[i]); } Serial.println(); Serial.println("-----------------------"); }
MQTT 服務(wù)器連接成功后,ESP8266 將向 MQTT 服務(wù)器發(fā)布消息和訂閱主題
// publish and subscribe client.publish("esp8266/test", "hello emqx"); client.subscribe("esp8266/test");
將主題名稱打印到串行端口,然后打印收到消息的每個字節(jié)
void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char) payload[i]); } Serial.println(); Serial.println("-----------------------"); }
請使用 Arduino IDE 將完整代碼上傳到 ESP8266,并打開串口監(jiān)視器
建立 MQTT X 客戶端 與 MQTT 服務(wù)器的連接, 并向 ESP8266 發(fā)送消息
在串口監(jiān)視器查看 ESP8266 接收到的消息
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char *ssid = "name"; // Enter your WiFi name const char *password = "pass"; // Enter WiFi password const char *mqtt_broker = "broker.emqx.io"; const int mqtt_port = 1883; WiFiClient espClient; PubSubClient client(espClient); void setup() { // Set software serial baud to 115200; Serial.begin(115200); // connecting to a WiFi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); } Serial.println("Connected to the WiFi network"); //connecting to a mqtt broker client.setServer(mqtt_broker, mqtt_port); client.setCallback(callback); while (!client.connected()) { Serial.println("Connecting to public emqx mqtt broker....."); if (client.connect("esp8266-client")) { Serial.println("Public emqx mqtt broker connected"); } else { Serial.print("failed with state "); Serial.print(client.state()); delay(2000); } } // publish and subscribe client.publish("esp8266/test", "hello emqx"); client.subscribe("esp8266/test"); } void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char) payload[i]); } Serial.println(); Serial.println("-----------------------"); } void loop() { client.loop(); }
“ESP8266如何連接到的免費(fèi)的EMQ X MQTT服務(wù)器”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。