
大夏龙雀wf25_ESP32-C2 MQTT智能开关V3.0
简介
* WF-25 大夏龙雀ESP32-C2 homeassitant自动发现MQTT智能开关 * 功能:通过MQTT协议控制设备开关,支持WiFi配网,支持参数保存。 * 作者:bin_wang
简介:* WF-25 大夏龙雀ESP32-C2 homeassitant自动发现MQTT智能开关 * 功能:通过MQTT协议控制设备开关,支持WiFi配网,支持参数保存。 * 作者:bin_wang开源协议
:GPL 3.0
描述
ESP32-C2 MQTT智能开关控制器
基于ESP32-C2开发的MQTT智能开关控制器,支持WiFi配网、参数保存和远程MQTT控制。
📋 项目介绍
本项目实现了一个基于ESP32-C2的MQTT智能开关控制器,可用于智能家居场景中控制各类电器的开关。设备上电后会自动输出高电平控制芯片供电电路进行使能,连接网络后发送状态消息并自动关闭电源进入断电模式,低功耗模式。支持通过MQTT远程控制开关状态强制进入断电状态,并可通过WiFi配网轻松接入网络。
主要特性
- 上电即开:设备上电后立即打开电源使能引脚,无需等待网络连接
- 网络配置:支持WiFiManager配网,首次使用自动创建配置热点
- MQTT控制:支持通过MQTT远程控制开关状态
- 参数保存:所有配置参数保存到非易失性存储器,断电不丢失
- 低功耗:发送完启动消息后进入深度睡眠模式,极低能耗
- 恢复出厂:支持通过MQTT命令或长按按钮重置所有配置
- Home Assistant自动发现:自动添加到Home Assistant智能家居系统,无需手动配置
- 断电保持状态翻转:使用断电保持型逻辑状态变量,每次上电自动取反状态
🔄 状态管理
本项目采用断电保持型状态管理机制:
- 设备使用非易失性存储记录实际的开关逻辑状态
- 每次上电时,自动读取上次的状态,并取反作为新状态
- MQTT上报的状态基于逻辑状态,而非物理引脚的直接读取
- 通过MQTT命令可以覆盖和控制逻辑状态
更多详细说明请参考状态管理文档
🔧 硬件要求
- ESP32-C2 开发板(2MB Flash版本)
- 外部继电器模块或其他开关控制电路
- LED指示灯(可选)
- 按钮(可选,用于重置配置)
🔌 接线图
+-----------------+
| |
| ESP32-C2 |
| DevKit-M |
| |
+-----------------+
| GPIO7 GPIO9 |
| (按钮) (电源使能)|
| |
| GPIO8 |
| (LED) |
+-----------------+
| | |
| | |
v v v
+----------+ +--------+
| | | |
| 按钮 +---------------+ |
| | | |
+----------+ +---+----+
|
v
+-------+
| |
| LED |
| |
+-------+
接线说明:
- GPIO7: 连接到按钮,另一端接地(长按可重置设备)
- GPIO8: 连接到LED指示灯,另一端通过适当电阻接地
- GPIO9: 连接到PMOS信号输入端,控制esp32供电
注意:以上GPIO引脚号可在配置界面中更改
📥 固件编译与烧录
环境准备
- 安装 Visual Studio Code
- 安装 PlatformIO IDE 扩展
- 克隆本仓库到本地
git clone https://github.com/yourusername/esp32c2_mqttlingdong.git
编译和烧录
- 在VS Code中打开项目文件夹
- PlatformIO会自动安装依赖库
- 点击PlatformIO的"Build"按钮编译项目
- 将ESP32-C2开发板连接到电脑
- 点击PlatformIO的"Upload"按钮烧录固件
⚙️ 配置方法
首次使用配网
- 设备首次启动时会创建名为"ESP32C2_AP"的WiFi热点
- 使用手机或电脑连接此热点
- 会自动弹出配置页面(或手动访问192.168.4.1)
- 在配置页面中:
- 设置WiFi连接信息
- 配置MQTT服务器参数
- 可选配置GPIO引脚
MQTT配置参数
- MQTT服务器:MQTT服务器地址
- MQTT端口:MQTT服务器端口,默认1883
- MQTT用户名:MQTT服务器用户名(如需)
- MQTT密码:MQTT服务器密码(如需)
- MQTT主题:设备发布和订阅的基础主题
GPIO配置参数
- 下载长按重置按键:重置按钮引脚号,默认GPIO 9
- LED引脚:LED指示灯引脚号,默认GPIO 8
- 电源控制引脚:控制外部设备的引脚号,默认GPIO 7
📡 MQTT通信
主题说明
- 发布主题:
{mqtt_topic}
,设备发送状态信息 - 订阅主题:
{mqtt_topic}/control
,设备接收控制命令
控制命令
on
:打开电源,设置逻辑状态为开启off
:关闭电源,强制关断使能,设置逻辑状态为关闭clear_all_data
:清除所有配置数据,恢复出厂设置
状态消息
设备发送的状态消息为JSON格式,包含以下字段:
{
"status": "状态值", // 当前操作状态
"power": "on/off", // 逻辑电源状态,基于断电保持型寄存器值
"version": "1.0.7", // 固件版本
"mac": "XX:XX:XX:XX:XX:XX", // MAC地址
"name": "设备名称", // 设备名称
"rssi": -70, // WiFi信号强度(dBm)
"uptime": 1234 // 运行时间(秒)
}
可能的status状态值包括:
system_startup
:系统启动on
:逻辑电源状态为开启off
:逻辑电源状态为关闭reconnected
:MQTT重新连接
🏠 Home Assistant集成
本设备支持Home Assistant MQTT自动发现功能,连接到与Home Assistant相同的MQTT服务器后,设备会自动出现在Home Assistant界面中,无需手动配置。
自动发现实体
设备将自动创建以下实体:
- ESP32-C2开关 - 控制设备电源开关状态
- ESP32-C2状态 - 显示当前设备状态信息
- ESP32-C2固件版本 - 显示当前固件版本
- ESP32-C2运行时间 - 显示设备运行时间
- ESP32-C2 WiFi信号强度 - 显示WiFi连接的信号强度(dBm)
手动配置(可选)
如果自动发现未正常工作,你仍然可以通过Home Assistant集成指南中的说明手动配置。
🔄 工作流程
- 设备上电后立即打开电源引脚
- 读取上次保存的电源状态,并取反作为新的状态
- 连接WiFi网络(首次使用需要配网)
- 连接MQTT服务器并发送启动消息
- 发送完启动消息后自动关闭电源引脚
- 将MQTT上报的状态设置为逻辑状态,不直接读取引脚状态
🔍 故障排除
- 设备无法连接WiFi:长按重置按钮5秒以上,设备会重启并进入配网模式
- MQTT连接失败:检查MQTT服务器地址和凭据是否正确
- 无法控制外部设备:检查GPIO引脚配置和外部电路连接
- 设备未出现在Home Assistant中:
- 确保MQTT服务器配置正确
- 检查Home Assistant的MQTT集成是否开启了自动发现功能
- 尝试重启设备,使其重新发送发现消息
📝 技术细节
分区表
项目使用自定义分区表以支持2MB Flash:
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, factory, 0x10000, 0x140000,
spiffs, data, spiffs, 0x150000,0x50000,
主要依赖库
- WiFi:ESP32 WiFi库
- WiFiManager:用于配网管理
- PubSubClient:MQTT客户端
- Preferences:参数保存
📚 其他文档
- Home Assistant集成指南 - 如何将设备接入Home Assistant智能家居系统
- 接线详细说明 - 详细的接线图和说明
- 状态管理文档 - 断电保持型状态变量的工作原理和优势
- WiFiManager配置指南 - 如何使用配置界面进行设备设置
📜 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
👨💻 作者
- bin_wang - 项目开发者
📝 更新日志
v1.0.7 (2024-05-3)
- 优化WiFiManager配置界面,将开关启用配置改为复选框形式
- 改进用户界面体验,使配置更加直观
- 修复了一些界面显示问题
v1.0.6 (2024-05-1)
- 改进设备稳定性和连接可靠性
- 优化MQTT消息处理机制
- 修复了一些已知问题
v1.0.5 (2024-05-01)
- 添加OTA固件升级功能,支持通过WiFi直接更新固件
- 优化WiFiManager配置界面,添加固件升级按钮
v1.0.4 (2024-04-27)
- 添加WiFi信号强度(RSSI)监测和上报功能
- 优化启动消息处理逻辑,避免不必要的状态更新
v1.0.3 (2024-03-27)
- 添加断电保持型状态变量,每次上电自动取反状态
- 改进MQTT状态发送逻辑,使用逻辑状态而非直接读取引脚状态
- 修复了一些小问题
v1.0.2 (2024-07-01)
- 添加Home Assistant MQTT自动发现功能
- 增强MQTT消息格式,包含更多设备信息
- 添加设备版本和运行时间信息
v1.0.0 (2024-03-26)
- 初始版本发布
设计图

BOM


评论