From 025a185bbfed625e0374095bf830ac5e38e9eb42 Mon Sep 17 00:00:00 2001 From: Yurii Date: Wed, 20 Dec 2023 16:47:36 +0300 Subject: [PATCH] refactoring: timings --- src/MainTask.h | 6 +++--- src/MqttTask.h | 9 +++++++-- src/Settings.h | 2 +- src/WifiManagerTask.h | 20 ++++++++++---------- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/MainTask.h b/src/MainTask.h index faac5a8..0c17f2d 100644 --- a/src/MainTask.h +++ b/src/MainTask.h @@ -285,7 +285,7 @@ protected: } if (vars.externalPump.enable && !this->heatingEnabled) { - if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_HEATING && millis() - this->heatingDisabledTime > (unsigned long) settings.externalPump.postCirculationTime * 1000) { + if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_HEATING && millis() - this->heatingDisabledTime > ((unsigned int) settings.externalPump.postCirculationTime * 1000)) { digitalWrite(settings.externalPump.pin, false); vars.externalPump.enable = false; @@ -293,7 +293,7 @@ protected: Log.sinfoln("EXTPUMP", F("Disabled: expired post circulation time")); - } else if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_ANTISTUCK && millis() - this->externalPumpStartTime >= (unsigned long) settings.externalPump.antiStuckTime * 1000) { + } else if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_ANTISTUCK && millis() - this->externalPumpStartTime >= ((unsigned int) settings.externalPump.antiStuckTime * 1000)) { digitalWrite(settings.externalPump.pin, false); vars.externalPump.enable = false; @@ -314,7 +314,7 @@ protected: Log.sinfoln("EXTPUMP", F("Enabled: heating on")); - } else if (!vars.externalPump.enable && millis() - vars.externalPump.lastEnableTime >= (unsigned long) settings.externalPump.antiStuckInterval * 1000) { + } else if (!vars.externalPump.enable && (vars.externalPump.lastEnableTime == 0 || millis() - vars.externalPump.lastEnableTime >= ((unsigned long) settings.externalPump.antiStuckInterval * 1000))) { vars.externalPump.enable = true; this->externalPumpStartTime = millis(); this->externalPumpStartReason = MainTask::REASON_PUMP_START_ANTISTUCK; diff --git a/src/MqttTask.h b/src/MqttTask.h index 5cf6d9b..e54bc7f 100644 --- a/src/MqttTask.h +++ b/src/MqttTask.h @@ -129,6 +129,11 @@ protected: } void loop() { + if (settings.mqtt.interval > 120) { + settings.mqtt.interval = 5; + eeSettings.update(); + } + if (!this->client->connected() && this->connected) { this->connected = false; this->onDisconnect(); @@ -174,7 +179,7 @@ protected: #endif // publish variables and status - if (this->newConnection || millis() - this->prevPubVarsTime > settings.mqtt.interval) { + if (this->newConnection || millis() - this->prevPubVarsTime > ((unsigned int) settings.mqtt.interval * 1000)) { this->writer->publish( this->haHelper->getDeviceTopic("status").c_str(), !vars.states.otStatus ? "offline" : vars.states.fault ? "fault" : "online", @@ -186,7 +191,7 @@ protected: } // publish settings - if (this->newConnection || millis() - this->prevPubSettingsTime > settings.mqtt.interval * 10) { + if (this->newConnection || millis() - this->prevPubSettingsTime > ((unsigned int) settings.mqtt.interval * 10000)) { this->publishSettings(this->haHelper->getDeviceTopic("settings").c_str()); this->prevPubSettingsTime = millis(); } diff --git a/src/Settings.h b/src/Settings.h index 7b6fea0..6788e59 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -21,7 +21,7 @@ struct Settings { char user[32]; char password[32]; char prefix[80] = "opentherm"; - unsigned int interval = 5000; + unsigned short interval = 5; } mqtt; struct { diff --git a/src/WifiManagerTask.h b/src/WifiManagerTask.h index 2db1263..6d73299 100644 --- a/src/WifiManagerTask.h +++ b/src/WifiManagerTask.h @@ -82,7 +82,7 @@ public: wmMqttPrefix = new WiFiManagerParameter("mqtt_prefix", "Prefix", settings.mqtt.prefix, 32); wm.addParameter(wmMqttPrefix); - wmMqttPublishInterval = new UnsignedIntParameter("mqtt_publish_interval", "Publish interval", settings.mqtt.interval, 5); + wmMqttPublishInterval = new UnsignedIntParameter("mqtt_publish_interval", "Publish interval (sec)", settings.mqtt.interval, 3); wm.addParameter(wmMqttPublishInterval); wmOtHeader = new HeaderParameter("OpenTherm"); @@ -144,13 +144,13 @@ public: wmExtPumpPin = new UnsignedIntParameter("ext_pump_pin", "Relay GPIO", settings.externalPump.pin, 2); wm.addParameter(wmExtPumpPin); - wmExtPumpPostCirculationTime = new UnsignedShortParameter("ext_pump_ps_time", "Post circulation time", settings.externalPump.postCirculationTime, 5); + wmExtPumpPostCirculationTime = new UnsignedShortParameter("ext_pump_ps_time", "Post circulation time (min)", (settings.externalPump.postCirculationTime / 60), 5); wm.addParameter(wmExtPumpPostCirculationTime); - wmExtPumpAntiStuckInterval = new UnsignedIntParameter("ext_pump_as_interval", "Anti stuck interval", settings.externalPump.antiStuckInterval, 7); + wmExtPumpAntiStuckInterval = new UnsignedIntParameter("ext_pump_as_interval", "Anti stuck interval (days)", (settings.externalPump.antiStuckInterval / 86400), 7); wm.addParameter(wmExtPumpAntiStuckInterval); - wmExtPumpAntiStuckTime = new UnsignedShortParameter("ext_pump_as_time", "Anti stuck time", settings.externalPump.antiStuckTime, 5); + wmExtPumpAntiStuckTime = new UnsignedShortParameter("ext_pump_as_time", "Anti stuck time (min)", (settings.externalPump.antiStuckTime / 60), 5); wm.addParameter(wmExtPumpAntiStuckTime); } @@ -507,23 +507,23 @@ protected: Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New externalPump.pin: %hhu"), settings.externalPump.pin); } - if (wmExtPumpPostCirculationTime->getValue() != settings.externalPump.postCirculationTime) { + if ((wmExtPumpPostCirculationTime->getValue() * 60) != settings.externalPump.postCirculationTime) { changed = true; - settings.externalPump.postCirculationTime = wmExtPumpPostCirculationTime->getValue(); + settings.externalPump.postCirculationTime = wmExtPumpPostCirculationTime->getValue() * 60; Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New externalPump.postCirculationTime: %hu"), settings.externalPump.postCirculationTime); } - if (wmExtPumpAntiStuckInterval->getValue() != settings.externalPump.antiStuckInterval) { + if ((wmExtPumpAntiStuckInterval->getValue() * 86400) != settings.externalPump.antiStuckInterval) { changed = true; - settings.externalPump.antiStuckInterval = wmExtPumpAntiStuckInterval->getValue(); + settings.externalPump.antiStuckInterval = wmExtPumpAntiStuckInterval->getValue() * 86400; Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New externalPump.antiStuckInterval: %du"), settings.externalPump.antiStuckInterval); } - if (wmExtPumpAntiStuckTime->getValue() != settings.externalPump.antiStuckTime) { + if ((wmExtPumpAntiStuckTime->getValue() * 60) != settings.externalPump.antiStuckTime) { changed = true; - settings.externalPump.antiStuckTime = wmExtPumpAntiStuckTime->getValue(); + settings.externalPump.antiStuckTime = wmExtPumpAntiStuckTime->getValue() * 60; Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New externalPump.antiStuckTime: %hu"), settings.externalPump.antiStuckTime); }