嘉立创产业服务站群
发作品签到
专业版

大夏龙雀wf25_ESP32-C2 MQTT智能开关V3.0

工程标签

280
0
0
0

简介

* WF-25 大夏龙雀ESP32-C2 homeassitant自动发现MQTT智能开关 * 功能:通过MQTT协议控制设备开关,支持WiFi配网,支持参数保存。 * 作者:bin_wang

简介:* WF-25 大夏龙雀ESP32-C2 homeassitant自动发现MQTT智能开关 * 功能:通过MQTT协议控制设备开关,支持WiFi配网,支持参数保存。 * 作者:bin_wang
复刻成本:10

开源协议

GPL 3.0

创建时间:2025-05-03 03:33:24更新时间:2025-05-06 04:08:34

描述

ESP32-C2 MQTT智能开关控制器

基于ESP32-C2开发的MQTT智能开关控制器,支持WiFi配网、参数保存和远程MQTT控制。

ESP32-C2 开发板

📋 项目介绍

本项目实现了一个基于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引脚号可在配置界面中更改

📥 固件编译与烧录

环境准备

  1. 安装 Visual Studio Code
  2. 安装 PlatformIO IDE 扩展
  3. 克隆本仓库到本地
    git clone https://github.com/yourusername/esp32c2_mqttlingdong.git
    

编译和烧录

  1. 在VS Code中打开项目文件夹
  2. PlatformIO会自动安装依赖库
  3. 点击PlatformIO的"Build"按钮编译项目
  4. 将ESP32-C2开发板连接到电脑
  5. 点击PlatformIO的"Upload"按钮烧录固件

⚙️ 配置方法

首次使用配网

  1. 设备首次启动时会创建名为"ESP32C2_AP"的WiFi热点
  2. 使用手机或电脑连接此热点
  3. 会自动弹出配置页面(或手动访问192.168.4.1)
  4. 在配置页面中:
    • 设置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界面中,无需手动配置。

自动发现实体

设备将自动创建以下实体:

  1. ESP32-C2开关 - 控制设备电源开关状态
  2. ESP32-C2状态 - 显示当前设备状态信息
  3. ESP32-C2固件版本 - 显示当前固件版本
  4. ESP32-C2运行时间 - 显示设备运行时间
  5. ESP32-C2 WiFi信号强度 - 显示WiFi连接的信号强度(dBm)

手动配置(可选)

如果自动发现未正常工作,你仍然可以通过Home Assistant集成指南中的说明手动配置。

🔄 工作流程

  1. 设备上电后立即打开电源引脚
  2. 读取上次保存的电源状态,并取反作为新的状态
  3. 连接WiFi网络(首次使用需要配网)
  4. 连接MQTT服务器并发送启动消息
  5. 发送完启动消息后自动关闭电源引脚
  6. 将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:参数保存

📚 其他文档

📜 许可证

本项目采用 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

暂无BOM

附件

序号文件名称下载次数
1
ESP32C2_MQTT_Switch_v1.0.7.zip
10
2
V1.0.07源代码——mqtt_esp32c2智能开关.rar
18
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航