Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

用了几个月突然不能用了,WiFi指示灯一直处于闪烁状态,打开开关会自动断开 #16

Open
bravehappy opened this issue Feb 11, 2022 · 19 comments

Comments

@bravehappy
Copy link

No description provided.

@qlwz
Copy link
Owner

qlwz commented Feb 11, 2022

看看是否wifi断开了。没有连接wifi 会定时重启,所以会关闭继电器。

@bravehappy
Copy link
Author

被重置成初始状态了,出现了dc1_049dc3的wifi,现重新配网

@bravehappy
Copy link
Author

今天又被重置成初始状态

@byff
Copy link

byff commented Feb 19, 2022

看看是否wifi断开了。没有连接wifi 会定时重启,所以会关闭继电器。

image

大佬,并不是WiFi连接的问题,我出现一样的情况,只要配置mqtt服务器或者打开mqtt发现就马上重置了,然后就会出现上图所示read config错误,连接WiFi不配置mqtt就没问题。 不知道是硬件问题还是怎么了,突然间就出现这种问题了,一起工作的其他几个dc1都好好的

@qlwz
Copy link
Owner

qlwz commented Feb 19, 2022

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

@sxx1314
Copy link

sxx1314 commented Feb 19, 2022

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

也偶尔有这问题。无规律被重置,然后有极小几率保存配置失败。但是清空flash重刷其他固件等操作都没什么问题。重点是出现在不同的设备上都或多或少会有无规律被重置的几率。

@byff
Copy link

byff commented Feb 19, 2022

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

今晚尝试了一下刷回旧固件,神奇的过去了好几个小时了居然没有被重置,HA接入也正常。旧版固件比最新的体积要大,怀疑是flash出现坏块或者其他问题了,刷新固件的时候正好问题存储区域被mqtt写入数据读取异常导致…
PS以上纯属个人没有依据的瞎猜😂😂

@sxx1314
Copy link

sxx1314 commented Feb 20, 2022

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

看了一下log,应该是每过5min 会保存一次config的问题。。。有点太频繁了,如果保存失败就可能出现“被重置”的情况。

00:00:00 successful client mqtt connection
18:30:49 NTP: 2022-02-20 18:30:49
18:35:43 saveConfig . . . OK Len: 232 Crc: 17638
18:40:42 NTP: 2022-02-20 18:40:42
18:40:44 saveConfig . . . OK Len: 234 Crc: 31645
18:45:45 saveConfig . . . OK Len: 234 Crc: 23766

如果按照这个频率 一年的话得写入 12x24x365=105120次

看了一下代码,应该是保存电量这里,按照tasmota的电量保存代码好像是得等非常长的时间(对写入次数几乎没有影响)。

esp_dc1/src/DC1.cpp

Lines 661 to 667 in e6694ba

if (perSecond % 301 == 0 && cse7766->Energy.kWhtoday > 0)
{
energySync();
Config::saveConfig();
}
energyMarginCheck();
}

有这个影响的同学可以尝试直接注释或者延长这个时间,当然也可以在web上加一个控制选项,自己研究吧。

@sxx1314
Copy link

sxx1314 commented Feb 23, 2022

重新编译了一个版本
发现现在控制时会出现

CAT9554 digitalWrite Error
CAT9554 digitalWrite Error2

然后刷容量大一点的homekit固件又正常了。。。
把它刷到另一台设备上倒是正常。
希望 @qlwz 大佬编译一个屏蔽每隔5min保存电量代码的homekit的固件吧,这个项目下没有homekit。

@fenkail-ui
Copy link

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

看了一下log,应该是每过5min 会保存一次config的问题。。。有点太频繁了,如果保存失败就可能出现“被重置”的情况。

00:00:00 successful client mqtt connection
18:30:49 NTP: 2022-02-20 18:30:49
18:35:43 saveConfig . . . OK Len: 232 Crc: 17638
18:40:42 NTP: 2022-02-20 18:40:42
18:40:44 saveConfig . . . OK Len: 234 Crc: 31645
18:45:45 saveConfig . . . OK Len: 234 Crc: 23766

如果按照这个频率 一年的话得写入 12x24x365=105120次

看了一下代码,应该是保存电量这里,按照tasmota的电量保存代码好像是得等非常长的时间(对写入次数几乎没有影响)。

esp_dc1/src/DC1.cpp

Lines 661 to 667 in e6694ba

if (perSecond % 301 == 0 && cse7766->Energy.kWhtoday > 0)
{
energySync();
Config::saveConfig();
}
energyMarginCheck();
}

有这个影响的同学可以尝试直接注释或者延长这个时间,当然也可以在web上加一个控制选项,自己研究吧。

多谢,把301改成了3600,即一个小时,已成功

@gitercn
Copy link
Contributor

gitercn commented May 30, 2022

如果这样看有可能是flash有问题了 存储了mqtt读出来错的。然后校验失败了。

看了一下log,应该是每过5min 会保存一次config的问题。。。有点太频繁了,如果保存失败就可能出现“被重置”的情况。

00:00:00 successful client mqtt connection
18:30:49 NTP: 2022-02-20 18:30:49
18:35:43 saveConfig . . . OK Len: 232 Crc: 17638
18:40:42 NTP: 2022-02-20 18:40:42
18:40:44 saveConfig . . . OK Len: 234 Crc: 31645
18:45:45 saveConfig . . . OK Len: 234 Crc: 23766

如果按照这个频率 一年的话得写入 12x24x365=105120次
看了一下代码,应该是保存电量这里,按照tasmota的电量保存代码好像是得等非常长的时间(对写入次数几乎没有影响)。

esp_dc1/src/DC1.cpp

Lines 661 to 667 in e6694ba

if (perSecond % 301 == 0 && cse7766->Energy.kWhtoday > 0)
{
energySync();
Config::saveConfig();
}
energyMarginCheck();
}

有这个影响的同学可以尝试直接注释或者延长这个时间,当然也可以在web上加一个控制选项,自己研究吧。

多谢,把301改成了3600,即一个小时,已成功

我也遇到了容易重置这个问题,我按照你说的修改了下,提了个pull request

@feng5064
Copy link

有没有那位大神能提供已经“更改保存电量时间为一小时”的固件,这里提供的固件好像不是最新的。自己不会编译,只能求助各位大神了。

@neckyaan
Copy link

neckyaan commented Dec 29, 2022

我跟踪了下日志,发现除了上面能量保存要写flash外,switchRelay也会经常写flash ,最夸张的是我插了个400w左右的电器,每一分钟就要写一次flash.至于开关状态,由homeassistant负责管理,完全没必要写在flash中。我的临时解决方案是把563行以下的内容: 

if (isSave && config.power_on_state > 0)
{
bitWrite(config.last_state, ch, isOn);
bitSet(operationFlag, 1);
Config::delaySaveConfig(10)
}

改写成以下内容:
if (isSave && config.power_on_state > 0)
{
//我改了参数,operationFlag为1会产生1分钟写一次falsh,并注销了Config::delaySaveConfig(10);
bitWrite(config.last_state, ch, isOn);
bitSet(operationFlag, 0);
//Config::delaySaveConfig(10);
Debug::AddInfo(PSTR("my_test DC1::switchRelay delaysaveconfig"));
}

@wwwcqh
Copy link

wwwcqh commented Feb 8, 2023

请各位高手共享一下最新的固件,谢谢

duchenpaul added a commit to duchenpaul/esp_dc1 that referenced this issue Mar 15, 2023
* 修复不填写mqtt led快闪的问题

* 更改保存电量时间为一小时,避免频繁写入flash

qlwz#16 (comment)

---------

Co-authored-by: 情留メ蚊子 <[email protected]>
Co-authored-by: gitercn <[email protected]>
@sxm635796963
Copy link

我跟踪了下日志,发现除了上面能量保存要写flash外,switchRelay也会经常写flash ,最夸张的是我插了个400w左右的电器,每一分钟就要写一次flash.至于开关状态,由homeassistant负责管理,完全没必要写在flash中。我的临时解决方案是把563行以下的内容: 

如果 (isSave && config.power_on_state > 0) { bitWrite(config.last_state, ch, isOn); bitSet(operationFlag, 1); 配置::delaySaveConfig(10) }

修改以下内容: if (isSave && config.power_on_state > 0) { //我修改了参数,operationFlag为1会产1分钟写一次falsh,并注销了Config::delaySaveConfig(10); bitWrite(config.last_state, ch, isOn); bitSet(operationFlag, 0); //配置::delaySaveConfig(10); Debug::AddInfo(PSTR("my_test DC1::switchRelay delaysaveconfig")); }

老哥能分享个你的固件吗

@jeremy-chuang
Copy link

您好 @qlwz
請問可以關閉没有连接wifi 会定时重启的功能嗎?

@ghostist
Copy link

ghostist commented Aug 4, 2023

我跟踪了下日志,发现除了上面能量保存要写flash外,switchRelay也会经常写flash ,最夸张的是我插了个400w左右的电器,每一分钟就要写一次flash.至于开关状态,由homeassistant负责管理,完全没必要写在flash中。我的临时解决方案是把563行以下的内容: 

if (isSave && config.power_on_state > 0) { bitWrite(config.last_state, ch, isOn); bitSet(operationFlag, 1); Config::delaySaveConfig(10) }

改写成以下内容: if (isSave && config.power_on_state > 0) { //我改了参数,operationFlag为1会产生1分钟写一次falsh,并注销了Config::delaySaveConfig(10); bitWrite(config.last_state, ch, isOn); bitSet(operationFlag, 0); //Config::delaySaveConfig(10); Debug::AddInfo(PSTR("my_test DC1::switchRelay delaysaveconfig")); }

老哥我觉得你这么改,还是会每分钟写flash,但是不是很确定
想问下你现在插座还好吗?

@neckyaan
Copy link

neckyaan commented Aug 6, 2023

https://github.com/neckyaan/esp_dc1/releases/download/2020.07.11.2000/dc1_20230108.bin

pexcn added a commit to pexcn/esp-dc1 that referenced this issue Feb 9, 2024
@fffonion
Copy link

跑了一年左右我也碰到同样的问题了,也判断是flash写坏了 😂 ;我自己的一个项目(esp32)也是往flash里写统计,结果最近也坏了。学到了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests