硬件
ESP32S2
PZEM-004T-V3.0
LCD1602 I2C版
固件
参考链接:https://tasmota.github.io/docs/PZEM-0XX/#pzem-004
整个流程参考链接中已经说的很详细了。下面我仅对自己操作过程中出现的问题做一下记录。
我使用的 PZEM-004T-V3.0 (和 PZEM-004T-V1.0有一些区别,比如通讯协议不通用)。官方固件支持004T,不过我将接收引脚配置为 PZEM016 Rx 就能读取到 004T-V3.0 版本了。
电量模块一下就支持了,麻烦的是LCD1602,固件不支持需要自己编译。流程如下:
安装 VSCode,配置代理参考https://www.aahgo.com/post/328.html 不然后续操作有点慢。我只做了前半部分
安装 PlatformIO 插件
下载 Tasmota Releases版的源代码 Source code(zip) ,当然也可以在通过git指令拉下来。再使用 VSCode 打开项目文件夹
在 Tasmota 子文件夹中新建user_config_override.h文件,将 链接 中的文件内容拷贝进去。
Tasmota-xx.x.x\tasmota\user_config_override.h
将
platformio_override_sample.ini
重命名为platformio_override.ini
将 default_envs = 宏修改为自己的芯片。点击状态栏
Switch PlatformIO Project Environment
修改为自己的芯片(我的是esp32s2),再点击Build,Upload。使芯片进入下载模式。(ESP32 需要 按下IO0 按下EN 抬起EN 抬起IO0)
固件下载完成
配置
- 接入芯片AP热点,打开浏览器
192.168.4.1
,接入路由器,记住成功显示的IP。 - 浏览器打开返回的 IP,进入配置页面根据硬件接线配置 I2C 和 PTEM 的引脚
- 浏览器打开 Console 输入下面的指令:
I2CScan
查看返回值DeviceAddress XXX
设置LCD1602的地址。如DeviceAddress 27
TelePeriod 10
设置显示刷新的时间间隔。最小10sDisplayModel 1
和DisplayModel 0
- 新增一条Rule:
Rule1 ON Tele-ENERGY#Power DO DisplayText [z] [x1y0]%value%W ENDON ON Tele-ENERGY#Today DO DisplayText [x8y0]%value%Wh ENDON ON Tele-ENERGY#Voltage DO DisplayText [x1y1]%value%V ENDON ON Tele-ENERGY#Current DO DisplayText [x8y1]%value%A ENDON
- 启用
Rule1 1
- 此时LCD屏因该有显示了,平且数据已10秒间隔开始更新。如果屏幕没有显示,第一仔细看,第二旋转电位器调高对比度(可以先调整将黑框都显示出来,有字符显示后再调回去)
- WEB界面会出现一个按钮,用于开关LCD背光
- 设置mqtt地址,Home Assistant 会自动增加和显示相关数据。