功能特征:
配网:
- 支持esptouch v1配网。
- 连接失败自动进入配网模式,配网失败再次启动配网,二次失败重启系统。
- 支持手动进入配网模式。
系统相关:
- 支持读取esp的系统信息,包括:
- 开机时间
- 剩余堆内存
- wifi名称,ip地址, 信号强度, mac地址
- 核心温度等cpu信息
- 系统版本
- 硬件信息
- ...
- 支持手动重启,重启成功并成功联网,蓝色led会闪烁1次
- 任务看门狗,系统卡死会自动重启
mqtt:
- 异步监听订阅,订阅收到消息蓝色led闪烁1次
- 断开检测,蓝色led闪烁3次,重连失败累计10次重启
- 55000ms刷新连接,防止连接被交换网断开
ddsu666电表通讯:
- 异步读取电表数据
- 支持电能清零
- 更改电表数据读取频率,支持手动进入数据监听模式。无即时监听续期,会超时后进入休眠模式
ota升级:
- 一键重启进入升级模式。如果升级成功蓝色led闪烁5次。
使用方法:
1. 准备mqtt服务器
配置好mqtt服务器,可以使用公有云或者自己搭建。
2. 配置与编译固件
项目地址 https://github.com/xinjiawei/esp32c3_mqtt_ddsu666
- 安装visualgdb
- idf menu 内找到Example Configuration菜单,编辑填写自己的mqtt地址和ota地址,然后remake项目
- build
3. 安装客户端
推荐使用IoT MQTT Panel 客户端, 有安卓和ios客户端, 应用内支持定义自己的面板。
安卓下载: https://play.google.com/store/apps/details?id=snr.lab.iotmqttpanel.prod
ios下载: https://apps.apple.com/cn/app/iot-mqtt-panel/id6466780124
这里分享我的面板配置文件,文件名为IoTMQTTPanel-241215_130105.json,可以导入软件使用。效果在尾图。
4. 其他接入
先订阅esp32_response这个topic,然后向sysop-get的topic发送info-power, qos为0,即可获得数据。后续流程需要自己定制。
配套的用电量微信通知脚本: https://github.com/xinjiawei/ddsu666_power_meter_notify
已知的问题:
- mqtt订阅sysop-get的topic,收到info-sys,执行系统信息查询,然后发布系统数据到esp32_response的topic。这个过程有概率触发系统崩溃重启,无法稳定复现问题。如果首次启动系统后立刻操作有概率触发。
笔记:
// ddsu666出厂默认的2007协议换到modbus协议
// 算CS https://crccalc.com/
FE FE FE FE 68 48 89 09 19 08 21 68 14 0E 33 33 35 3D 35 33 33 33 33 33 33 33 33 33 E6 16
// 参考教程: https://www.xingkongbeta.com/?p=272
ddsu666电表,modbus交互数据格式参考: https://www.modbus.cn/10181.html
uint8转float的代码参考: https://github.com/gjtimms/Modbus-RTU-Listen
效果
IoT MQTT Panel 客户端
esp32调试输出
电表与esp32

组装测试
文章评论