ESP32S3 AP+MQTT Broker

发布时间:2026/10/15 7:02:58
ESP32S3 AP+MQTT Broker ESP32S3 APMQTT Broker文章目录ESP32S3 APMQTT BrokerESP32S3的作为Broker的代码ESP8266 设备1 发布端ESP8266 设备2订阅端ESP32S3的作为Broker的代码需要安装 “PicoMQTT”#includeWiFi.h#includePicoMQTT.h// AP热点配置constchar*AP_SSIDESP32S3_MQTT_AP;constchar*AP_PASSWORDmqtt123456;IPAddressapIP(192,168,4,1);IPAddressgateway(192,168,4,1);IPAddresssubnet(255,255,255,0);// 自定义 Broker 类重写 on_messageclassMyMQTTServer:publicPicoMQTT::Server{public:usingServer::Server;// 继承基类构造函数protected:// 重写消息处理函数基类中是 protected virtualvoidon_message(constchar*topic,PicoMQTT::IncomingPacketpacket)override{Serial.println(----------------------------------------);Serial.print(主题: );Serial.println(topic);// 使用 available() 和 read() 读取载荷Stream 标准方法Serial.print(消息内容: );while(packet.available()){charc(char)packet.read();// read() 返回 intSerial.print(c);}Serial.println();Serial.println(----------------------------------------);}};// 创建自定义 Broker 实例默认端口 1883MyMQTTServer mqttServer;voidsetup(){Serial.begin(115200);delay(100);WiFi.mode(WIFI_AP);WiFi.softAPConfig(apIP,gateway,subnet);WiFi.softAP(AP_SSID,AP_PASSWORD);Serial.println( ESP32-S3 MQTT Broker AP );Serial.print(热点名称);Serial.println(AP_SSID);Serial.print(热点密码);Serial.println(AP_PASSWORD);Serial.print(Broker地址);Serial.println(WiFi.softAPIP());Serial.println(MQTT端口1883);Serial.println();mqttServer.begin();Serial.println(MQTT Broker 运行就绪等待设备接入);}voidloop(){mqttServer.loop();delay(50);}ESP8266 设备1 发布端#includeESP8266WiFi.h#includePicoMQTT.hconstchar*WIFI_SSIDESP32S3_MQTT_AP;constchar*WIFI_PASSWORDmqtt123456;constchar*MQTT_BROKER_IP192.168.4.1;constuint16_tMQTT_BROKER_PORT1883;PicoMQTT::Client mqtt;// 消息回调可选用于接收自己的消息voidon_message(constchar*topic,constchar*payload){Serial.printf(收到消息 [主题: %s] 内容: %s\n,topic,payload);}voidsetup(){Serial.begin(115200);delay(100);WiFi.mode(WIFI_STA);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);Serial.print(正在连接 WiFi);while(WiFi.status()!WL_CONNECTED){delay(500);Serial.print(.);}Serial.println(\nWiFi 已连接IP: WiFi.localIP().toString());// 订阅可选mqtt.subscribe(test/topic,on_message);mqtt.connect(MQTT_BROKER_IP,MQTT_BROKER_PORT,ESP8266_Client,nullptr,nullptr,nullptr,nullptr,0,0,false,true,nullptr);Serial.println(MQTT 客户端已启动);Serial.println(请在串口输入消息按回车发送到 test/topic);}voidloop(){mqtt.loop();// 检查串口是否有输入if(Serial.available()){String payloadSerial.readStringUntil(\n);// 读取整行payload.trim();// 去除首尾空格/换行if(payload.length()0){mqtt.publish(test/topic,payload.c_str());Serial.printf(已发布: %s\n,payload.c_str());}}delay(10);}ESP8266 设备2订阅端#includeESP8266WiFi.h#includePicoMQTT.hconstchar*WIFI_SSIDESP32S3_MQTT_AP;constchar*WIFI_PASSWORDmqtt123456;constchar*MQTT_BROKER_IP192.168.4.1;constuint16_tMQTT_BROKER_PORT1883;PicoMQTT::Client mqtt;// 消息回调voidon_message(constchar*topic,constchar*payload){Serial.printf([订阅者] 收到消息 - 主题: %s, 内容: %s\n,topic,payload);}voidconnect_mqtt(){boolconnectedmqtt.connect(MQTT_BROKER_IP,MQTT_BROKER_PORT,ESP8266_Subscriber,// 唯一客户端 IDnullptr,nullptr,nullptr,nullptr,0,0,false,true,nullptr);if(connected){Serial.println(MQTT 连接成功);// 连接成功后订阅主题mqtt.subscribe(test/topic,on_message);// 明确订阅发布者使用的主题mqtt.subscribe(#,on_message);// 保留通配符用于调试}else{Serial.println(MQTT 连接失败请检查 Broker 是否运行);}}voidsetup(){Serial.begin(115200);delay(100);WiFi.mode(WIFI_STA);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);Serial.print(正在连接 WiFi);while(WiFi.status()!WL_CONNECTED){delay(500);Serial.print(.);}Serial.println(\nWiFi 已连接IP: WiFi.localIP().toString());connect_mqtt();}voidloop(){mqtt.loop();// 如果断开尝试重连if(!mqtt.connected()){Serial.println(MQTT 断开尝试重连...);connect_mqtt();delay(1000);}delay(10);}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询