恢复出厂设置
factory_reset 组件允许您使存储在闪存中的所有 ESPHome 首选项失效(重置)并重启您的节点。
重启后,所有状态、参数和变量将使用其默认值重新初始化。这在以下情况下很有用:
- 对于预刷了 ESPHome 的设备,可将行为重置回出厂状态
- 在将设备移动到新环境或开始新用例时(例如重置计数器或状态)
- 在赠送设备时出于隐私考虑
NOTE
请谨慎使用! 所有凭据、全局变量、计数器和保存在非易失性存储器中的状态都将丢失,无法恢复。
即使使用 esptool 原始读取闪存也无济于事,因为数据已从闪存中物理擦除。
对于使用 captive portal 配置的设备,这也会重置 WiFi 设置,从而使此类设备离线。 您需要在设备附近,使用内置的 WiFi 接入点和 captive portal 重新配置它。
通过快速电源循环重置
Section titled “通过快速电源循环重置”factory_reset 组件可以配置为通过重复按重置按钮或电源循环来清除存储的首选项,这对于无法通过串口线连接的设备清除存储在非易失性存储器中的数据非常有用。所需的电源循环次数和它们之间的最大延迟可以在 factory_reset 组件配置中设置。注意事项:
-
最大延迟仅影响设备通电的时间,不影响设备断电的时间(这无法测量)。
-
当发生任何其他类型的重置时,或者设备保持通电并运行的时间超过最大延迟时,重置计数将清除为零。
-
RP2040 和 RP2350 不支持此功能,因为无法确定重置原因。
-
在 ESP8266 上,此功能需要在 ESP8266 平台 中启用
restore_from_flash功能。
factory_reset: resets_required: 5 max_delay: 10s-
resets_required (可选, integer): 设备将被重置的电源循环次数。 无默认值,如果未配置,电源循环重置功能将被禁用
-
max_delay (可选, Time): 电源循环之间的最大延迟。默认:10s
on_increment 触发器
Section titled “on_increment 触发器”当当前重置循环计数发生变化时,将触发一个触发器。当 factory_reset 组件检测到电源循环,或者循环计数因超时或不同类型的重置而清除为零时,就会发生这种情况。传递给触发器的参数有:
x: 当前循环计数target: 目标循环计数
factory_reset: resets_required: 5 max_delay: 10s on_increment: - logger.log: format: "快速电源循环计数现在为 %u,目标 %u" args: [x, target]