mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-06-15 12:26:33 +03:00
handle mandatory scheduler name change in update function
This commit is contained in:
@@ -1531,6 +1531,18 @@ bool System::check_upgrade() {
|
|||||||
}
|
}
|
||||||
return StateUpdateResult::UNCHANGED;
|
return StateUpdateResult::UNCHANGED;
|
||||||
});
|
});
|
||||||
|
// Scheduler name is now mandatory, update FS
|
||||||
|
uint8_t i = 0;
|
||||||
|
bool schedule_changed = false;
|
||||||
|
EMSESP::webSchedulerService.update([&](WebScheduler & scheduler) {
|
||||||
|
for (ScheduleItem & scheduleItem : scheduler.scheduleItems) {
|
||||||
|
if (scheduleItem.name[0] == '\0') {
|
||||||
|
snprintf(scheduleItem.name, sizeof(scheduleItem.name), "schedule_%d", i++);
|
||||||
|
schedule_changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return schedule_changed ? StateUpdateResult::CHANGED : StateUpdateResult::UNCHANGED;
|
||||||
|
});
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webSchedu
|
|||||||
EMSESP::webSchedulerService.ha_reset();
|
EMSESP::webSchedulerService.ha_reset();
|
||||||
|
|
||||||
// build up the list of schedule items
|
// build up the list of schedule items
|
||||||
uint8_t i = 0;
|
|
||||||
auto scheduleItems = root["schedule"].as<JsonArray>();
|
auto scheduleItems = root["schedule"].as<JsonArray>();
|
||||||
for (const JsonObject schedule : scheduleItems) {
|
for (const JsonObject schedule : scheduleItems) {
|
||||||
// create each schedule item, overwriting any previous settings
|
// create each schedule item, overwriting any previous settings
|
||||||
@@ -95,10 +94,6 @@ StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webSchedu
|
|||||||
si.value = schedule["value"].as<std::string>();
|
si.value = schedule["value"].as<std::string>();
|
||||||
strlcpy(si.name, schedule["name"].as<const char *>(), sizeof(si.name));
|
strlcpy(si.name, schedule["name"].as<const char *>(), sizeof(si.name));
|
||||||
|
|
||||||
if (si.name[0] == '\0') {
|
|
||||||
snprintf(si.name, sizeof(si.name), "schedule_%d", i++); // set a default name. Before v3.9.0 we allowed empty schedule names.
|
|
||||||
}
|
|
||||||
|
|
||||||
// calculated elapsed minutes
|
// calculated elapsed minutes
|
||||||
si.elapsed_min = Helpers::string2minutes(si.time.c_str());
|
si.elapsed_min = Helpers::string2minutes(si.time.c_str());
|
||||||
si.retry_cnt = 0xFF; // no startup retries
|
si.retry_cnt = 0xFF; // no startup retries
|
||||||
@@ -580,11 +575,11 @@ void WebSchedulerService::load_test_data() {
|
|||||||
// test 1
|
// test 1
|
||||||
auto si = ScheduleItem();
|
auto si = ScheduleItem();
|
||||||
si.active = true;
|
si.active = true;
|
||||||
si.flags = 1;
|
si.flags = 1; // day schedule
|
||||||
si.time = "12:00";
|
si.time = "12:00";
|
||||||
si.cmd = "system/fetch";
|
si.cmd = "system/fetch";
|
||||||
si.value = "10";
|
si.value = "10";
|
||||||
strcpy(si.name, "test_scheduler");
|
strcpy(si.name, "test_scheduler1");
|
||||||
si.elapsed_min = 0;
|
si.elapsed_min = 0;
|
||||||
si.retry_cnt = 0xFF; // no startup retries
|
si.retry_cnt = 0xFF; // no startup retries
|
||||||
|
|
||||||
@@ -593,11 +588,11 @@ void WebSchedulerService::load_test_data() {
|
|||||||
// test 2
|
// test 2
|
||||||
si = ScheduleItem();
|
si = ScheduleItem();
|
||||||
si.active = false;
|
si.active = false;
|
||||||
si.flags = 1;
|
si.flags = SCHEDULEFLAG_SCHEDULE_IMMEDIATE; // immediate
|
||||||
si.time = "13:00";
|
si.time = "13:00";
|
||||||
si.cmd = "system/message";
|
si.cmd = "system/message";
|
||||||
si.value = "20";
|
si.value = "20";
|
||||||
strcpy(si.name, ""); // to make sure its excluded from Dashboard
|
strcpy(si.name, "test_scheduler2"); // to make sure its excluded from Dashboard
|
||||||
si.elapsed_min = 0;
|
si.elapsed_min = 0;
|
||||||
si.retry_cnt = 0xFF; // no startup retries
|
si.retry_cnt = 0xFF; // no startup retries
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user