news 2026/7/16 0:22:30

ESP32S3 AP+MQTT Broker

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP32S3 AP+MQTT Broker

ESP32S3 AP+MQTT Broker

文章目录

  • ESP32S3 AP+MQTT Broker
    • ESP32S3的作为Broker的代码
    • ESP8266 设备1 发布端
    • ESP8266 设备2订阅端

ESP32S3的作为Broker的代码

需要安装 “PicoMQTT”

#include<WiFi.h>#include<PicoMQTT.h>// AP热点配置constchar*AP_SSID="ESP32S3_MQTT_AP";constchar*AP_PASSWORD="mqtt123456";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 virtual)voidon_message(constchar*topic,PicoMQTT::IncomingPacket&packet)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 实例(默认端口 1883)MyMQTTServer 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 发布端

#include<ESP8266WiFi.h>#include<PicoMQTT.h>constchar*WIFI_SSID="ESP32S3_MQTT_AP";constchar*WIFI_PASSWORD="mqtt123456";constchar*MQTT_BROKER_IP="192.168.4.1";constuint16_tMQTT_BROKER_PORT=1883;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 payload=Serial.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订阅端

#include<ESP8266WiFi.h>#include<PicoMQTT.h>constchar*WIFI_SSID="ESP32S3_MQTT_AP";constchar*WIFI_PASSWORD="mqtt123456";constchar*MQTT_BROKER_IP="192.168.4.1";constuint16_tMQTT_BROKER_PORT=1883;PicoMQTT::Client mqtt;// 消息回调voidon_message(constchar*topic,constchar*payload){Serial.printf("[订阅者] 收到消息 - 主题: %s, 内容: %s\n",topic,payload);}voidconnect_mqtt(){boolconnected=mqtt.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);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 10:40:08

LinkLifeVerse OS:让数据价值留在县域

县域越数字化&#xff0c;为什么越难&#xff1f;过去十年&#xff0c;大量县域走"上平台、抢流量"的路——短期 GMV 冲高&#xff0c;长期却固化了一个极不利的结构&#xff1a;全国性平台掌握流量定价权与用户数据&#xff0c;抽佣 15%&#xff5e;30%&#xff0c;…

作者头像 李华
网站建设 2026/7/15 13:37:17

3个实际场景告诉你,为什么你需要Winhance中文版优化Windows系统

3个实际场景告诉你&#xff0c;为什么你需要Winhance中文版优化Windows系统 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Wi…

作者头像 李华
网站建设 2026/7/13 5:16:53

awesome-ratatui:Rust 终端 UI 生态全景收录

文章目录awesome-ratatui&#xff1a;Rust 终端 UI 生态全景收录框架层&#xff1a;不止于终端组件库&#xff1a;终端里的现代 UI工具和实用库跨语言绑定终端应用&#xff1a;真正的使用者生态信号awesome-ratatui&#xff1a;Rust 终端 UI 生态全景收录 终端应用开发在过去几…

作者头像 李华
网站建设 2026/7/13 5:17:07

ngx_http_index_handler

1 定义 ngx_http_index_handler 函数 定义在 src/http/modules/ngx_http_index_module.c2 作用 ngx_http_index_handler 函数 它处理以 / 结尾的目录请求&#xff0c; 根据 index 指令指定的文件列表依次尝试找到存在的索引文件&#xff0c;如果找到则内部重定向到该文件&…

作者头像 李华
网站建设 2026/7/13 5:35:18

cu-cockpit:轻量级Linux单节点运维管理平台入门指南

cu-cockpit&#xff1a;轻量级Linux单节点运维管理平台入门指南 【免费下载链接】cu-cockpit cu-cockpit is a lightweight, single-node deployed OS operation and maintenance management platform, focusing on providing an efficient visualized operation and maintenan…

作者头像 李华