mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
call services after settings have been persisted
This commit is contained in:
@@ -24,58 +24,38 @@ namespace emsesp {
|
|||||||
EMSESPSettingsService::EMSESPSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager)
|
EMSESPSettingsService::EMSESPSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager)
|
||||||
: _httpEndpoint(EMSESPSettings::read, EMSESPSettings::update, this, server, EMSESP_SETTINGS_SERVICE_PATH, securityManager)
|
: _httpEndpoint(EMSESPSettings::read, EMSESPSettings::update, this, server, EMSESP_SETTINGS_SERVICE_PATH, securityManager)
|
||||||
, _fsPersistence(EMSESPSettings::read, EMSESPSettings::update, this, fs, EMSESP_SETTINGS_FILE) {
|
, _fsPersistence(EMSESPSettings::read, EMSESPSettings::update, this, fs, EMSESP_SETTINGS_FILE) {
|
||||||
|
addUpdateHandler([&](const String & originId) { onUpdate(); }, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EMSESPSettings::read(EMSESPSettings & settings, JsonObject & root) {
|
void EMSESPSettings::read(EMSESPSettings & settings, JsonObject & root) {
|
||||||
root["tx_mode"] = settings.tx_mode;
|
root["tx_mode"] = settings.tx_mode;
|
||||||
root["ems_bus_id"] = settings.ems_bus_id;
|
root["ems_bus_id"] = settings.ems_bus_id;
|
||||||
|
|
||||||
root["syslog_level"] = settings.syslog_level;
|
root["syslog_level"] = settings.syslog_level;
|
||||||
root["syslog_mark_interval"] = settings.syslog_mark_interval;
|
root["syslog_mark_interval"] = settings.syslog_mark_interval;
|
||||||
root["syslog_host"] = settings.syslog_host;
|
root["syslog_host"] = settings.syslog_host;
|
||||||
|
root["master_thermostat"] = settings.master_thermostat;
|
||||||
root["master_thermostat"] = settings.master_thermostat;
|
root["shower_timer"] = settings.shower_timer;
|
||||||
root["shower_timer"] = settings.shower_timer;
|
root["shower_alert"] = settings.shower_alert;
|
||||||
root["shower_alert"] = settings.shower_alert;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StateUpdateResult EMSESPSettings::update(JsonObject & root, EMSESPSettings & settings) {
|
StateUpdateResult EMSESPSettings::update(JsonObject & root, EMSESPSettings & settings) {
|
||||||
EMSESPSettings newSettings = {};
|
settings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE;
|
||||||
newSettings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE;
|
settings.ems_bus_id = root["ems_bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID;
|
||||||
newSettings.ems_bus_id = root["ems_bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID;
|
settings.syslog_level = root["syslog_level"] | EMSESP_DEFAULT_SYSLOG_LEVEL;
|
||||||
|
settings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL;
|
||||||
|
settings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST;
|
||||||
|
settings.master_thermostat = root["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT;
|
||||||
|
settings.shower_timer = root["shower_timer"] | EMSESP_DEFAULT_SHOWER_TIMER;
|
||||||
|
settings.shower_alert = root["shower_alert"] | EMSESP_DEFAULT_SHOWER_ALERT;
|
||||||
|
|
||||||
newSettings.syslog_level = root["syslog_level"] | EMSESP_DEFAULT_SYSLOG_LEVEL;
|
return StateUpdateResult::CHANGED;
|
||||||
newSettings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL;
|
}
|
||||||
newSettings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST;
|
|
||||||
|
|
||||||
newSettings.master_thermostat = root["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT;
|
// this is called after the settings have been persisted to the filesystem
|
||||||
newSettings.shower_timer = root["shower_timer"] | EMSESP_DEFAULT_SHOWER_TIMER;
|
void EMSESPSettingsService::onUpdate() {
|
||||||
newSettings.shower_alert = root["shower_alert"] | EMSESP_DEFAULT_SHOWER_ALERT;
|
EMSESP::shower_.start();
|
||||||
|
EMSESP::system_.syslog_init();
|
||||||
bool changed = false;
|
EMSESP::reset_tx();
|
||||||
|
|
||||||
if (newSettings.tx_mode != settings.tx_mode) {
|
|
||||||
EMSESP::reset_tx(newSettings.tx_mode); // reset counters
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((newSettings.shower_timer != settings.shower_timer) || (newSettings.shower_alert != settings.shower_alert)) {
|
|
||||||
EMSESP::shower_.start();
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((newSettings.syslog_level != settings.syslog_level) || (newSettings.syslog_mark_interval != settings.syslog_mark_interval)
|
|
||||||
|| !newSettings.syslog_host.equals(settings.syslog_host)) {
|
|
||||||
EMSESP::system_.syslog_init();
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (changed) {
|
|
||||||
settings = newSettings;
|
|
||||||
return StateUpdateResult::CHANGED;
|
|
||||||
}
|
|
||||||
|
|
||||||
return StateUpdateResult::UNCHANGED;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EMSESPSettingsService::begin() {
|
void EMSESPSettingsService::begin() {
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ class EMSESPSettingsService : public StatefulService<EMSESPSettings> {
|
|||||||
private:
|
private:
|
||||||
HttpEndpoint<EMSESPSettings> _httpEndpoint;
|
HttpEndpoint<EMSESPSettings> _httpEndpoint;
|
||||||
FSPersistence<EMSESPSettings> _fsPersistence;
|
FSPersistence<EMSESPSettings> _fsPersistence;
|
||||||
|
|
||||||
|
void onUpdate();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
Reference in New Issue
Block a user