refactor: small fixes

This commit is contained in:
Yurii
2024-02-20 15:27:51 +03:00
parent 1a03117257
commit a5d2b9fcfa
11 changed files with 61 additions and 59 deletions

View File

@@ -17,7 +17,7 @@ public:
float Kk = 0.0; float Kk = 0.0;
float Kt = 0.0; float Kt = 0.0;
Equitherm() {} Equitherm() = default;
// kn, kk, kt // kn, kk, kt
Equitherm(float new_kn, float new_kk, float new_kt) { Equitherm(float new_kn, float new_kk, float new_kt) {

View File

@@ -6,7 +6,7 @@ class HomeAssistantHelper {
public: public:
typedef std::function<void(const char*, bool)> PublishEventCallback; typedef std::function<void(const char*, bool)> PublishEventCallback;
HomeAssistantHelper() {} HomeAssistantHelper() = default;
void setWriter() { void setWriter() {
this->writer = nullptr; this->writer = nullptr;

View File

@@ -177,7 +177,6 @@ public:
} else { } else {
sizeArgName = length - size_t(argStartPos - currentBuf) - 1; sizeArgName = length - size_t(argStartPos - currentBuf) - 1;
Serial.printf("sizeArgName: %d\r\n", sizeArgName);
// send all content if arg len > space // send all content if arg len > space
if (sizeArgName >= sizeof(argName)) { if (sizeArgName >= sizeof(argName)) {

View File

@@ -415,7 +415,7 @@ public:
doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic(F("settings/set")); doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic(F("settings/set"));
doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"target\" : {{ value|int(0) }}}}"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"target\" : {{ value|int(0) }}}}");
doc[FPSTR(HA_MIN)] = minTemp; doc[FPSTR(HA_MIN)] = minTemp;
doc[FPSTR(HA_MAX)] = maxTemp <= minTemp ? maxTemp : maxTemp; doc[FPSTR(HA_MAX)] = maxTemp > minTemp ? maxTemp : minTemp;
doc[FPSTR(HA_STEP)] = 1; doc[FPSTR(HA_STEP)] = 1;
doc[FPSTR(HA_MODE)] = "box"; doc[FPSTR(HA_MODE)] = "box";
doc[FPSTR(HA_EXPIRE_AFTER)] = 120; doc[FPSTR(HA_EXPIRE_AFTER)] = 120;

View File

@@ -20,14 +20,11 @@ public:
} }
~MainTask() { ~MainTask() {
if (this->blinker != nullptr) {
delete this->blinker; delete this->blinker;
} }
}
protected: protected:
const static byte REASON_PUMP_START_HEATING = 1; enum class PumpStartReason {NONE, HEATING, ANTISTUCK};
const static byte REASON_PUMP_START_ANTISTUCK = 2;
Blinker* blinker = nullptr; Blinker* blinker = nullptr;
bool blinkerInitialized = false; bool blinkerInitialized = false;
@@ -38,7 +35,7 @@ protected:
unsigned long restartSignalTime = 0; unsigned long restartSignalTime = 0;
bool heatingEnabled = false; bool heatingEnabled = false;
unsigned long heatingDisabledTime = 0; unsigned long heatingDisabledTime = 0;
byte externalPumpStartReason; PumpStartReason extPumpStartReason = PumpStartReason::NONE;
unsigned long externalPumpStartTime = 0; unsigned long externalPumpStartTime = 0;
bool telnetStarted = false; bool telnetStarted = false;
@@ -57,12 +54,12 @@ protected:
void setup() { void setup() {
#ifdef LED_STATUS_PIN #ifdef LED_STATUS_PIN
pinMode(LED_STATUS_PIN, OUTPUT); pinMode(LED_STATUS_PIN, OUTPUT);
digitalWrite(LED_STATUS_PIN, false); digitalWrite(LED_STATUS_PIN, LOW);
#endif #endif
if (settings.externalPump.pin != 0) { if (settings.externalPump.pin != 0) {
pinMode(settings.externalPump.pin, OUTPUT); pinMode(settings.externalPump.pin, OUTPUT);
digitalWrite(settings.externalPump.pin, false); digitalWrite(settings.externalPump.pin, LOW);
} }
} }
@@ -250,14 +247,14 @@ protected:
if (!this->blinker->running() && millis() - endBlinkTime >= 5000) { if (!this->blinker->running() && millis() - endBlinkTime >= 5000) {
if (errCount == 0) { if (errCount == 0) {
if (!ledOn) { if (!ledOn) {
digitalWrite(ledPin, true); digitalWrite(ledPin, HIGH);
ledOn = true; ledOn = true;
} }
return; return;
} else if (ledOn) { } else if (ledOn) {
digitalWrite(ledPin, false); digitalWrite(ledPin, LOW);
ledOn = false; ledOn = false;
endBlinkTime = millis(); endBlinkTime = millis();
return; return;
@@ -289,7 +286,7 @@ protected:
if (!settings.externalPump.use || settings.externalPump.pin == 0) { if (!settings.externalPump.use || settings.externalPump.pin == 0) {
if (vars.states.externalPump) { if (vars.states.externalPump) {
if (settings.externalPump.pin != 0) { if (settings.externalPump.pin != 0) {
digitalWrite(settings.externalPump.pin, false); digitalWrite(settings.externalPump.pin, LOW);
} }
vars.states.externalPump = false; vars.states.externalPump = false;
@@ -302,16 +299,16 @@ protected:
} }
if (vars.states.externalPump && !this->heatingEnabled) { if (vars.states.externalPump && !this->heatingEnabled) {
if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_HEATING && millis() - this->heatingDisabledTime > (settings.externalPump.postCirculationTime * 1000u)) { if (this->extPumpStartReason == MainTask::PumpStartReason::HEATING && millis() - this->heatingDisabledTime > (settings.externalPump.postCirculationTime * 1000u)) {
digitalWrite(settings.externalPump.pin, false); digitalWrite(settings.externalPump.pin, LOW);
vars.states.externalPump = false; vars.states.externalPump = false;
vars.parameters.extPumpLastEnableTime = millis(); vars.parameters.extPumpLastEnableTime = millis();
Log.sinfoln("EXTPUMP", F("Disabled: expired post circulation time")); Log.sinfoln("EXTPUMP", F("Disabled: expired post circulation time"));
} else if (this->externalPumpStartReason == MainTask::REASON_PUMP_START_ANTISTUCK && millis() - this->externalPumpStartTime >= (settings.externalPump.antiStuckTime * 1000u)) { } else if (this->extPumpStartReason == MainTask::PumpStartReason::ANTISTUCK && millis() - this->externalPumpStartTime >= (settings.externalPump.antiStuckTime * 1000u)) {
digitalWrite(settings.externalPump.pin, false); digitalWrite(settings.externalPump.pin, LOW);
vars.states.externalPump = false; vars.states.externalPump = false;
vars.parameters.extPumpLastEnableTime = millis(); vars.parameters.extPumpLastEnableTime = millis();
@@ -319,24 +316,24 @@ protected:
Log.sinfoln("EXTPUMP", F("Disabled: expired anti stuck time")); Log.sinfoln("EXTPUMP", F("Disabled: expired anti stuck time"));
} }
} else if (vars.states.externalPump && this->heatingEnabled && this->externalPumpStartReason == MainTask::REASON_PUMP_START_ANTISTUCK) { } else if (vars.states.externalPump && this->heatingEnabled && this->extPumpStartReason == MainTask::PumpStartReason::ANTISTUCK) {
this->externalPumpStartReason = MainTask::REASON_PUMP_START_HEATING; this->extPumpStartReason = MainTask::PumpStartReason::HEATING;
} else if (!vars.states.externalPump && this->heatingEnabled) { } else if (!vars.states.externalPump && this->heatingEnabled) {
vars.states.externalPump = true; vars.states.externalPump = true;
this->externalPumpStartTime = millis(); this->externalPumpStartTime = millis();
this->externalPumpStartReason = MainTask::REASON_PUMP_START_HEATING; this->extPumpStartReason = MainTask::PumpStartReason::HEATING;
digitalWrite(settings.externalPump.pin, true); digitalWrite(settings.externalPump.pin, HIGH);
Log.sinfoln("EXTPUMP", F("Enabled: heating on")); Log.sinfoln("EXTPUMP", F("Enabled: heating on"));
} else if (!vars.states.externalPump && (vars.parameters.extPumpLastEnableTime == 0 || millis() - vars.parameters.extPumpLastEnableTime >= (settings.externalPump.antiStuckInterval * 1000ul))) { } else if (!vars.states.externalPump && (vars.parameters.extPumpLastEnableTime == 0 || millis() - vars.parameters.extPumpLastEnableTime >= (settings.externalPump.antiStuckInterval * 1000ul))) {
vars.states.externalPump = true; vars.states.externalPump = true;
this->externalPumpStartTime = millis(); this->externalPumpStartTime = millis();
this->externalPumpStartReason = MainTask::REASON_PUMP_START_ANTISTUCK; this->extPumpStartReason = MainTask::PumpStartReason::ANTISTUCK;
digitalWrite(settings.externalPump.pin, true); digitalWrite(settings.externalPump.pin, HIGH);
Log.sinfoln("EXTPUMP", F("Enabled: anti stuck")); Log.sinfoln("EXTPUMP", F("Enabled: anti stuck"));
} }

View File

@@ -15,9 +15,7 @@ public:
} }
~MqttTask() { ~MqttTask() {
if (this->haHelper != nullptr) {
delete this->haHelper; delete this->haHelper;
}
if (this->client != nullptr) { if (this->client != nullptr) {
if (this->client->connected()) { if (this->client->connected()) {
@@ -27,14 +25,9 @@ public:
delete this->client; delete this->client;
} }
if (this->writer != nullptr) {
delete this->writer; delete this->writer;
}
if (this->wifiClient != nullptr) {
delete this->wifiClient; delete this->wifiClient;
} }
}
void disable() { void disable() {
this->client->stop(); this->client->stop();

View File

@@ -54,9 +54,9 @@ protected:
#ifdef LED_OT_RX_PIN #ifdef LED_OT_RX_PIN
{ {
digitalWrite(LED_OT_RX_PIN, true); digitalWrite(LED_OT_RX_PIN, HIGH);
delayMicroseconds(2000); delayMicroseconds(2000);
digitalWrite(LED_OT_RX_PIN, false); digitalWrite(LED_OT_RX_PIN, LOW);
} }
#endif #endif
} }
@@ -71,7 +71,7 @@ protected:
#ifdef LED_OT_RX_PIN #ifdef LED_OT_RX_PIN
pinMode(LED_OT_RX_PIN, OUTPUT); pinMode(LED_OT_RX_PIN, OUTPUT);
digitalWrite(LED_OT_RX_PIN, false); digitalWrite(LED_OT_RX_PIN, LOW);
#endif #endif
} }

View File

@@ -28,9 +28,7 @@ public:
} }
~PortalTask() { ~PortalTask() {
if (this->bufferedWebServer != nullptr) {
delete this->bufferedWebServer; delete this->bufferedWebServer;
}
if (this->webServer != nullptr) { if (this->webServer != nullptr) {
this->stopWebServer(); this->stopWebServer();

View File

@@ -159,7 +159,7 @@ protected:
if (vars.parameters.heatingEnabled) { if (vars.parameters.heatingEnabled) {
float pidResult = getPidTemp( float pidResult = getPidTemp(
settings.equitherm.enable ? (settings.pid.maxTemp * -1) : settings.pid.minTemp, settings.equitherm.enable ? (settings.pid.maxTemp * -1) : settings.pid.minTemp,
settings.equitherm.enable ? settings.pid.maxTemp : settings.pid.maxTemp settings.pid.maxTemp
); );
if (fabs(prevPidResult - pidResult) + 0.0001 >= 0.5) { if (fabs(prevPidResult - pidResult) + 0.0001 >= 0.5) {

View File

@@ -110,7 +110,7 @@ struct Settings {
// 1 - manual, 2 - ds18b20, 3 - ble // 1 - manual, 2 - ds18b20, 3 - ble
byte type = 1; byte type = 1;
byte pin = SENSOR_INDOOR_PIN_DEFAULT; byte pin = SENSOR_INDOOR_PIN_DEFAULT;
char bleAddresss[18] = "00:00:00:00:00:00"; uint8_t bleAddresss[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
float offset = 0.0f; float offset = 0.0f;
} indoor; } indoor;
} sensors; } sensors;
@@ -166,17 +166,17 @@ struct Variables {
unsigned long extPumpLastEnableTime = 0; unsigned long extPumpLastEnableTime = 0;
byte dhwMinTemp = DEFAULT_DHW_MIN_TEMP; byte dhwMinTemp = DEFAULT_DHW_MIN_TEMP;
byte dhwMaxTemp = DEFAULT_DHW_MAX_TEMP; byte dhwMaxTemp = DEFAULT_DHW_MAX_TEMP;
byte maxModulation; byte maxModulation = 0;
uint8_t slaveMemberId; uint8_t slaveMemberId = 0;
uint8_t slaveFlags; uint8_t slaveFlags = 0;
uint8_t slaveType; uint8_t slaveType = 0;
uint8_t slaveVersion; uint8_t slaveVersion = 0;
float slaveOtVersion; float slaveOtVersion = 0.0f;
uint8_t masterMemberId; uint8_t masterMemberId = 0;
uint8_t masterFlags; uint8_t masterFlags = 0;
uint8_t masterType; uint8_t masterType = 0;
uint8_t masterVersion; uint8_t masterVersion = 0;
float masterOtVersion; float masterOtVersion = 0;
} parameters; } parameters;
struct { struct {

View File

@@ -232,7 +232,7 @@ bool jsonToNetworkSettings(const JsonVariantConst src, NetworkSettings& dst) {
} }
// ap // sta
if (!src["sta"]["ssid"].isNull()) { if (!src["sta"]["ssid"].isNull()) {
String value = src["sta"]["ssid"].as<String>(); String value = src["sta"]["ssid"].as<String>();
@@ -329,7 +329,19 @@ void settingsToJson(const Settings& src, JsonVariant dst, bool safe = false) {
dst["sensors"]["indoor"]["type"] = src.sensors.indoor.type; dst["sensors"]["indoor"]["type"] = src.sensors.indoor.type;
dst["sensors"]["indoor"]["pin"] = src.sensors.indoor.pin; dst["sensors"]["indoor"]["pin"] = src.sensors.indoor.pin;
dst["sensors"]["indoor"]["bleAddresss"] = src.sensors.indoor.bleAddresss;
char bleAddress[18];
sprintf(
bleAddress,
"%02x:%02x:%02x:%02x:%02x:%02x",
src.sensors.indoor.bleAddresss[0],
src.sensors.indoor.bleAddresss[1],
src.sensors.indoor.bleAddresss[2],
src.sensors.indoor.bleAddresss[3],
src.sensors.indoor.bleAddresss[4],
src.sensors.indoor.bleAddresss[5]
);
dst["sensors"]["indoor"]["bleAddresss"] = String(bleAddress);
dst["sensors"]["indoor"]["offset"] = roundd(src.sensors.indoor.offset, 2); dst["sensors"]["indoor"]["offset"] = roundd(src.sensors.indoor.offset, 2);
if (!safe) { if (!safe) {
@@ -486,7 +498,7 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
if (!src["mqtt"]["port"].isNull()) { if (!src["mqtt"]["port"].isNull()) {
unsigned short value = src["mqtt"]["port"].as<unsigned short>(); unsigned short value = src["mqtt"]["port"].as<unsigned short>();
if (value >= 0 && value <= 65536) { if (value > 0 && value <= 65535) {
dst.mqtt.port = value; dst.mqtt.port = value;
changed = true; changed = true;
} }
@@ -821,9 +833,12 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
#if USE_BLE #if USE_BLE
if (!src["sensors"]["indoor"]["bleAddresss"].isNull()) { if (!src["sensors"]["indoor"]["bleAddresss"].isNull()) {
String value = src["sensors"]["indoor"]["bleAddresss"].as<String>(); String value = src["sensors"]["indoor"]["bleAddresss"].as<String>();
int tmp[6];
if(sscanf(value.c_str(), "%02x:%02x:%02x:%02x:%02x:%02x", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]) == 6) {
for(uint8_t i = 0; i < 6; i++) {
dst.sensors.indoor.bleAddresss[i] = (uint8_t) tmp[i];
}
if (value.length() < sizeof(dst.sensors.indoor.bleAddresss)) {
strcpy(dst.sensors.indoor.bleAddresss, value.c_str());
changed = true; changed = true;
} }
} }