|
Tasmota 接三路004后程序逻辑上没问题。但是健壮性不够。遇到一点故障就会导致电量统计出错。 以前一直以为是SetOption72的事情。。结果他的逻辑是这样的。
1,在内存中循环记录1,2,3路的电量
2,只要遇到第三路的数据出来就把之前记录的数据都累加。
这个时候如果第三路004t因为某些原因没有出现数据。。则会一直记录1和2路。。此时如果第三路数据出现了。那么总计数据就是前面一直累加的1和2和当前的第三路数据。。会导致电量偏大。。
3,并且在程序中还有一个比较if (PzemAc.energy > PzemAc.last_energy) { // Handle missed phase
导致了后期如果数据修正了因为这个比较的存在也不会得到承认。。。
我的解决办法是在xdrv_03_energy.ino中的struct ENERGY增加float energy[3] = { NAN, NAN, NAN };和 bool energy_valid[3] = {false,false,false};
在累加的地方去掉累加。三路总电量分别赋值,然后设置一个valid的标签。三路都valid后在执行EnergyUpdateTotal 并且把三路valid都还原。办法虽笨。但是似乎运行良好
另外发现Tasmota本身就支持峰谷电量的统计。。。正在看。。不知道能不能加入阶梯电量??O(∩_∩)O这样就会更加准确了。
|
评分
-
查看全部评分
|