1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-12 13:48:14 +00:00

[preferences] Better handling of flash_write_interval (#8199)

This commit is contained in:
Clyde Stubbs 2025-02-05 13:34:30 +11:00 committed by GitHub
parent 977333a73c
commit 4d8f58db94
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 7 deletions

View File

@ -1,6 +1,6 @@
from esphome.const import CONF_ID
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import CONF_ID
CODEOWNERS = ["@esphome/core"]
@ -11,9 +11,7 @@ CONF_FLASH_WRITE_INTERVAL = "flash_write_interval"
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(): cv.declare_id(IntervalSyncer),
cv.Optional(
CONF_FLASH_WRITE_INTERVAL, default="60s"
): cv.positive_time_period_milliseconds,
cv.Optional(CONF_FLASH_WRITE_INTERVAL, default="60s"): cv.update_interval,
}
).extend(cv.COMPONENT_SCHEMA)

View File

@ -8,15 +8,22 @@ namespace preferences {
class IntervalSyncer : public Component {
public:
void set_write_interval(uint32_t write_interval) { write_interval_ = write_interval; }
void set_write_interval(uint32_t write_interval) { this->write_interval_ = write_interval; }
void setup() override {
set_interval(write_interval_, []() { global_preferences->sync(); });
if (this->write_interval_ != 0) {
set_interval(this->write_interval_, []() { global_preferences->sync(); });
}
}
void loop() override {
if (this->write_interval_ == 0) {
global_preferences->sync();
}
}
void on_shutdown() override { global_preferences->sync(); }
float get_setup_priority() const override { return setup_priority::BUS; }
protected:
uint32_t write_interval_;
uint32_t write_interval_{60000};
};
} // namespace preferences

View File

@ -0,0 +1,2 @@
preferences:
flash_write_interval: 20s