mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-12 03:04:27 +05:00
auto restart after changing some settings
This commit is contained in:
@@ -23,6 +23,17 @@ protected:
|
|||||||
INFO("Settings updated (EEPROM)");
|
INFO("Settings updated (EEPROM)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vars.parameters.restartAfterTime > 0 && millis() - vars.parameters.restartSignalTime > vars.parameters.restartAfterTime) {
|
||||||
|
vars.parameters.restartAfterTime = 0;
|
||||||
|
|
||||||
|
INFO("Received restart message...");
|
||||||
|
eeSettings.updateNow();
|
||||||
|
INFO("Restart...");
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
ESP.restart();
|
||||||
|
}
|
||||||
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
if (!tMqtt->isEnabled() && strlen(settings.mqtt.server) > 0) {
|
if (!tMqtt->isEnabled() && strlen(settings.mqtt.server) > 0) {
|
||||||
tMqtt->enable();
|
tMqtt->enable();
|
||||||
|
|||||||
@@ -323,11 +323,8 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!doc["restart"].isNull() && doc["restart"].is<bool>() && doc["restart"].as<bool>()) {
|
if (!doc["restart"].isNull() && doc["restart"].is<bool>() && doc["restart"].as<bool>()) {
|
||||||
DEBUG("Received restart message...");
|
vars.parameters.restartAfterTime = 5000;
|
||||||
eeSettings.updateNow();
|
vars.parameters.restartSignalTime = millis();
|
||||||
DEBUG("Restart...");
|
|
||||||
|
|
||||||
ESP.restart();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
|||||||
@@ -106,6 +106,8 @@ struct Variables {
|
|||||||
} temperatures;
|
} temperatures;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
unsigned long restartSignalTime = 0;
|
||||||
|
unsigned int restartAfterTime = 0;
|
||||||
bool heatingEnabled = false;
|
bool heatingEnabled = false;
|
||||||
byte heatingMinTemp = 20;
|
byte heatingMinTemp = 20;
|
||||||
byte heatingMaxTemp = 90;
|
byte heatingMaxTemp = 90;
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
if ( connected && millis() - lastArpGratuitous > 60000 ) {
|
if (connected && millis() - lastArpGratuitous > 60000) {
|
||||||
arpGratuitous();
|
arpGratuitous();
|
||||||
lastArpGratuitous = millis();
|
lastArpGratuitous = millis();
|
||||||
}
|
}
|
||||||
@@ -137,19 +137,100 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void saveParamsCallback() {
|
static void saveParamsCallback() {
|
||||||
strcpy(settings.hostname, wmHostname->getValue());
|
bool changed = false;
|
||||||
strcpy(settings.mqtt.server, wmMqttServer->getValue());
|
bool needRestart = false;
|
||||||
settings.mqtt.port = wmMqttPort->getValue();
|
|
||||||
strcpy(settings.mqtt.user, wmMqttUser->getValue());
|
if (strcmp(wmHostname->getValue(), settings.hostname) != 0) {
|
||||||
strcpy(settings.mqtt.password, wmMqttPassword->getValue());
|
changed = true;
|
||||||
strcpy(settings.mqtt.prefix, wmMqttPrefix->getValue());
|
needRestart = true;
|
||||||
settings.mqtt.interval = wmMqttPublishInterval->getValue();
|
|
||||||
settings.opentherm.inPin = wmOtInPin->getValue();
|
strcpy(settings.hostname, wmHostname->getValue());
|
||||||
settings.opentherm.outPin = wmOtOutPin->getValue();
|
}
|
||||||
settings.opentherm.memberIdCode = wmOtMemberIdCode->getValue();
|
|
||||||
settings.opentherm.dhwPresent = wmOtDHWPresent->getCheckboxValue();
|
if (strcmp(wmMqttServer->getValue(), settings.mqtt.server) != 0) {
|
||||||
settings.sensors.outdoor.pin = wmOutdoorSensorPin->getValue();
|
changed = true;
|
||||||
settings.sensors.indoor.pin = wmIndoorSensorPin->getValue();
|
|
||||||
|
strcpy(settings.mqtt.server, wmMqttServer->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmMqttPort->getValue() != settings.mqtt.port) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
settings.mqtt.port = wmMqttPort->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(wmMqttUser->getValue(), settings.mqtt.user) != 0) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
strcpy(settings.mqtt.user, wmMqttUser->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(wmMqttPassword->getValue(), settings.mqtt.password) != 0) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
strcpy(settings.mqtt.password, wmMqttPassword->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(wmMqttPrefix->getValue(), settings.mqtt.prefix) != 0) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
strcpy(settings.mqtt.prefix, wmMqttPrefix->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmMqttPublishInterval->getValue() != settings.mqtt.interval) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
settings.mqtt.interval = wmMqttPublishInterval->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmOtInPin->getValue() != settings.opentherm.inPin) {
|
||||||
|
changed = true;
|
||||||
|
needRestart = true;
|
||||||
|
|
||||||
|
settings.opentherm.inPin = wmOtInPin->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmOtOutPin->getValue() != settings.opentherm.outPin) {
|
||||||
|
changed = true;
|
||||||
|
needRestart = true;
|
||||||
|
|
||||||
|
settings.opentherm.outPin = wmOtOutPin->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmOtMemberIdCode->getValue() != settings.opentherm.memberIdCode) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
settings.opentherm.memberIdCode = wmOtMemberIdCode->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmOtDHWPresent->getCheckboxValue() != settings.opentherm.dhwPresent) {
|
||||||
|
changed = true;
|
||||||
|
|
||||||
|
settings.opentherm.dhwPresent = wmOtDHWPresent->getCheckboxValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmOutdoorSensorPin->getValue() != settings.sensors.outdoor.pin) {
|
||||||
|
changed = true;
|
||||||
|
needRestart = true;
|
||||||
|
|
||||||
|
settings.sensors.outdoor.pin = wmOutdoorSensorPin->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wmIndoorSensorPin->getValue() != settings.sensors.indoor.pin) {
|
||||||
|
changed = true;
|
||||||
|
needRestart = true;
|
||||||
|
|
||||||
|
settings.sensors.indoor.pin = wmIndoorSensorPin->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!changed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (needRestart) {
|
||||||
|
vars.parameters.restartAfterTime = 5000;
|
||||||
|
vars.parameters.restartSignalTime = millis();
|
||||||
|
}
|
||||||
|
|
||||||
INFO_F(
|
INFO_F(
|
||||||
"New settings:\r\n"
|
"New settings:\r\n"
|
||||||
@@ -179,6 +260,7 @@ protected:
|
|||||||
settings.sensors.outdoor.pin,
|
settings.sensors.outdoor.pin,
|
||||||
settings.sensors.indoor.pin
|
settings.sensors.indoor.pin
|
||||||
);
|
);
|
||||||
|
|
||||||
eeSettings.updateNow();
|
eeSettings.updateNow();
|
||||||
INFO(F("Settings saved"));
|
INFO(F("Settings saved"));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user