ESP8266/ESP32构建MQTT协议连接进入EMQX服务器进行服务器指令通讯(客户端控制灯)
一、配置Arduino IDE以及esp8266/esp32环境
二、搭建emqx环境
win11搭建EMQX环境_JASON丶LI的博客-CSDN博客https://blog.csdn.net/weixin_61908666/article/details/127944288?spm=1001.2014.3001.5502
三、点灯测试
输入下列代码上传到开发板(作者用的是ESP8266)
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
delay(2000);
}
看到ESP8266上蓝色的呼吸灯一闪一闪就成功啦!!!
四、代码实现将ESP8266接入服务器并订阅对应信息
const char *ssid = "Jason"; // 输入你的WiFi名称
const char *password = "88888888"; // 输入你的WiFi密码
const char *mqtt_broker = "10.12.3.89"; //输入你的无线局域网适配器IPv4地址
const int mqtt_port = 1883; //默认为1883
Win+R打开运行框-->输入cmd-->输入ipconfig-->查找IPv4地址
ESP8266接入服务器
创建WebSocket客户端
下发指令
查看ESP8266接收指令情况
源代码:
#include <ESP8266WiFi.h> //esp8266
#include <PubSubClient.h>
//#include <WiFi.h> // esp32
const char *ssid = "Jason"; // 输入你的WiFi名称
const char *password = "88888888"; // 输入你的WiFi密码
const char *mqtt_broker = "10.12.3.89"; //输入你的无线局域网适配器IPv4地址
const int mqtt_port = 1883; //默认为1883
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200); // 频段
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
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("Android");
}
void callback(char *topic, byte *payload, unsigned int length) {
Serial.print("Message arrived in topic: ");
Serial.println(topic);
Serial.print("Message:");
String message;
for (int i = 0; i < length; i++) {
message = message + (char) payload[i]; // convert *byte to string
}
Serial.print(message);
if (message == "lon") {
digitalWrite(LED_BUILTIN, LOW);// LED on
Serial.print(" on ready");
}
if (message == "loff"){
digitalWrite(LED_BUILTIN, HIGH);// LED off
Serial.print(" on ready");
}
Serial.println();
Serial.println("-----------------------");
}
void loop() {
// digitalWrite(LED_BUILTIN, LOW);
// delay(1000);
// digitalWrite(LED_BUILTIN, HIGH);
// delay(2000);
client.loop();
}
本文为作者独立编写
本BLOG上所有的原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。
送你一封信: 为什么我显示硬件没启动 请大佬解答
lookaworld: 有没有人能告诉我一下,我创建的时候可以选择stm32f103c8t6,但创建成功后没有这个芯片出现,这是怎么回事
粥粥粥崽: 还是不行,这是为什么呢
irukandji: 你是我的神,一开始还是显示驱动不了,过一会自己好了
wumingwuqing: 大佬,你有没有 出现 no source address line at 080001ce这个东西,我好像因为这个跑不了