diff --git a/platformio.ini b/platformio.ini index ba95843..755f217 100644 --- a/platformio.ini +++ b/platformio.ini @@ -20,7 +20,7 @@ lib_deps = gyverlibs/GyverPID@^3.3 gyverlibs/GyverBlinker@^1.0 milesburton/DallasTemperature@^3.11.0 - laxilef/TinyLogger@^1.0.3 + laxilef/TinyLogger@^1.0.4 https://github.com/Laxilef/WiFiManager/archive/refs/heads/patch-1.zip ;https://github.com/tzapu/WiFiManager.git#v2.0.16-rc.2 build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -mtext-section-literals diff --git a/src/MainTask.h b/src/MainTask.h index 3ca854d..4cc70d1 100644 --- a/src/MainTask.h +++ b/src/MainTask.h @@ -47,7 +47,7 @@ protected: void loop() { if (eeSettings.tick()) { - Log.sinfoln("MAIN", PSTR("Settings updated (EEPROM)")); + Log.sinfoln("MAIN", F("Settings updated (EEPROM)")); } #if USE_TELNET @@ -55,7 +55,7 @@ protected: #endif if (vars.actions.restart) { - Log.sinfoln("MAIN", PSTR("Restart signal received. Restart after 10 sec.")); + Log.sinfoln("MAIN", F("Restart signal received. Restart after 10 sec.")); eeSettings.updateNow(); restartSignalTime = millis(); vars.actions.restart = false; @@ -92,7 +92,7 @@ protected: if (millis() - firstFailConnect > EMERGENCY_TIME_TRESHOLD) { vars.states.emergency = true; - Log.sinfoln("MAIN", PSTR("Emergency mode enabled")); + Log.sinfoln("MAIN", F("Emergency mode enabled")); } } } @@ -137,7 +137,7 @@ protected: } if (millis() - lastHeapInfo > 60000 || minFreeHeapSizeDiff > 0) { - Log.sverboseln("MAIN", PSTR("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)"), freeHeapSize, heapSize, minFreeHeapSize, minFreeHeapSizeDiff); + Log.sverboseln("MAIN", F("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)"), freeHeapSize, heapSize, minFreeHeapSize, minFreeHeapSizeDiff); lastHeapInfo = millis(); } } diff --git a/src/MqttTask.h b/src/MqttTask.h index f5e4f6b..d3fd4ca 100644 --- a/src/MqttTask.h +++ b/src/MqttTask.h @@ -24,7 +24,7 @@ protected: } void setup() { - Log.sinfoln("MQTT", PSTR("Started")); + Log.sinfoln("MQTT", F("Started")); client.setCallback(__callback); client.setBufferSize(1024); @@ -39,11 +39,11 @@ protected: void loop() { if (!client.connected() && millis() - lastReconnectAttempt >= MQTT_RECONNECT_INTERVAL) { - Log.sinfoln("MQTT", PSTR("Not connected, state: %i, connecting to server %s..."), client.state(), settings.mqtt.server); + Log.sinfoln("MQTT", F("Not connected, state: %i, connecting to server %s..."), client.state(), settings.mqtt.server); client.setServer(settings.mqtt.server, settings.mqtt.port); if (client.connect(settings.hostname, settings.mqtt.user, settings.mqtt.password)) { - Log.sinfoln("MQTT", PSTR("Connected")); + Log.sinfoln("MQTT", F("Connected")); client.subscribe(getTopicPath("settings/set").c_str()); client.subscribe(getTopicPath("state/set").c_str()); @@ -54,7 +54,7 @@ protected: lastReconnectAttempt = 0; } else { - Log.swarningln("MQTT", PSTR("Failed to connect to server")); + Log.swarningln("MQTT", F("Failed to connect to server")); if (settings.emergency.enable && !vars.states.emergency) { if (firstFailConnect == 0) { @@ -63,7 +63,7 @@ protected: if (millis() - firstFailConnect > EMERGENCY_TIME_TRESHOLD) { vars.states.emergency = true; - Log.sinfoln("MQTT", PSTR("Emergency mode enabled")); + Log.sinfoln("MQTT", F("Emergency mode enabled")); } } @@ -76,7 +76,7 @@ protected: if (vars.states.emergency) { vars.states.emergency = false; - Log.sinfoln("MQTT", PSTR("Emergency mode disabled")); + Log.sinfoln("MQTT", F("Emergency mode disabled")); } client.loop(); @@ -630,16 +630,16 @@ protected: } if (settings.debug) { - Log.strace("MQTT.MSG", PSTR("Topic: %s\r\n> "), topic); + Log.strace("MQTT.MSG", F("Topic: %s\r\n> "), topic); for (unsigned int i = 0; i < length; i++) { if ( payload[i] == 10 ) { - Log.print(PSTR("\r\n> ")); + Log.print("\r\n> "); } else { Log.print((char) payload[i]); } } - Log.print(PSTR("\r\n\n")); + Log.print("\r\n\n"); for (Stream* stream : Log.getStreams()) { stream->flush(); @@ -654,22 +654,22 @@ protected: case DeserializationError::EmptyInput: case DeserializationError::IncompleteInput: case DeserializationError::InvalidInput: - errMsg = PSTR("invalid input"); + errMsg = "invalid input"; break; case DeserializationError::NoMemory: - errMsg = PSTR("no memory"); + errMsg = "no memory"; break; case DeserializationError::TooDeep: - errMsg = PSTR("too deep"); + errMsg = "too deep"; break; default: - errMsg = PSTR("failed"); + errMsg = "failed"; break; } - Log.swarningln("MQTT.MSG", PSTR("No deserialization: %s"), errMsg); + Log.swarningln("MQTT.MSG", F("No deserialization: %s"), errMsg); return; } diff --git a/src/RegulatorTask.h b/src/RegulatorTask.h index 0915870..dee0a4d 100644 --- a/src/RegulatorTask.h +++ b/src/RegulatorTask.h @@ -34,7 +34,7 @@ protected: if (settings.heating.turbo) { settings.heating.turbo = false; - Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled")); + Log.sinfoln("REGULATOR", F("Turbo mode auto disabled")); } newTemp = getEmergencyModeTemp(); @@ -44,7 +44,7 @@ protected: if (settings.heating.turbo) { settings.heating.turbo = false; - Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled")); + Log.sinfoln("REGULATOR", F("Turbo mode auto disabled")); } newTemp = getTuningModeTemp(); @@ -58,7 +58,7 @@ protected: if (settings.heating.turbo && (fabs(settings.heating.target - vars.temperatures.indoor) < 1 || (settings.equitherm.enable && settings.pid.enable))) { settings.heating.turbo = false; - Log.sinfoln("REGULATOR", PSTR("Turbo mode auto disabled")); + Log.sinfoln("REGULATOR", F("Turbo mode auto disabled")); } newTemp = getNormalModeTemp(); @@ -87,7 +87,7 @@ protected: prevEtResult = etResult; newTemp += etResult; - Log.sinfoln("REGULATOR.EQUITHERM", PSTR("New emergency result: %u (%f)"), (int) round(etResult), etResult); + Log.sinfoln("REGULATOR.EQUITHERM", F("New emergency result: %u (%f)"), (int) round(etResult), etResult); } else { newTemp += prevEtResult; @@ -106,11 +106,11 @@ protected: if (fabs(prevHeatingTarget - settings.heating.target) > 0.0001) { prevHeatingTarget = settings.heating.target; - Log.sinfoln("REGULATOR", PSTR("New target: %f"), settings.heating.target); + Log.sinfoln("REGULATOR", F("New target: %f"), settings.heating.target); if (settings.equitherm.enable && settings.pid.enable) { pidRegulator.integral = 0; - Log.sinfoln("REGULATOR.PID", PSTR("Integral sum has been reset")); + Log.sinfoln("REGULATOR.PID", F("Integral sum has been reset")); } } @@ -122,7 +122,7 @@ protected: prevEtResult = etResult; newTemp += etResult; - Log.sinfoln("REGULATOR.EQUITHERM", PSTR("New result: %u (%f)"), (int) round(etResult), etResult); + Log.sinfoln("REGULATOR.EQUITHERM", F("New result: %u (%f)"), (int) round(etResult), etResult); } else { newTemp += prevEtResult; @@ -140,7 +140,7 @@ protected: prevPidResult = pidResult; newTemp += pidResult; - Log.sinfoln("REGULATOR.PID", PSTR("New result: %d (%f)"), (int) round(pidResult), pidResult); + Log.sinfoln("REGULATOR.PID", F("New result: %d (%f)"), (int) round(pidResult), pidResult); } else { newTemp += prevPidResult; @@ -169,7 +169,7 @@ protected: tunerInit = false; tunerRegulator = 0; tunerState = 0; - Log.sinfoln("REGULATOR.TUNING", PSTR("Stopped")); + Log.sinfoln("REGULATOR.TUNING", F("Stopped")); } if (!vars.tuning.enable) { @@ -179,7 +179,7 @@ protected: if (vars.tuning.regulator == 0) { // @TODO дописать - Log.sinfoln("REGULATOR.TUNING.EQUITHERM", PSTR("Not implemented")); + Log.sinfoln("REGULATOR.TUNING.EQUITHERM", F("Not implemented")); return 0; } else if (vars.tuning.regulator == 1) { @@ -189,7 +189,7 @@ protected: : settings.heating.target; if (tunerInit && pidTuner.getState() == 3) { - Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Finished")); + Log.sinfoln("REGULATOR.TUNING.PID", F("Finished")); for (Stream* stream : Log.getStreams()) { pidTuner.debugText(stream); } @@ -200,7 +200,7 @@ protected: tunerState = 0; if (pidTuner.getAccuracy() < 90) { - Log.swarningln("REGULATOR.TUNING.PID", PSTR("Bad result, try again...")); + Log.swarningln("REGULATOR.TUNING.PID", F("Bad result, try again...")); } else { settings.pid.p_factor = pidTuner.getPID_p(); @@ -212,7 +212,7 @@ protected: } if (!tunerInit) { - Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Start...")); + Log.sinfoln("REGULATOR.TUNING.PID", F("Start...")); float step; if (vars.temperatures.indoor - vars.temperatures.outdoor > 10) { @@ -222,7 +222,7 @@ protected: } float startTemp = step; - Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Started. Start value: %f, step: %f"), startTemp, step); + Log.sinfoln("REGULATOR.TUNING.PID", F("Started. Start value: %f, step: %f"), startTemp, step); pidTuner.setParameters(NORMAL, startTemp, step, 20 * 60 * 1000, 0.15, 60 * 1000, 10000); tunerInit = true; tunerRegulator = 1; @@ -232,7 +232,7 @@ protected: pidTuner.compute(); if (tunerState > 0 && pidTuner.getState() != tunerState) { - Log.sinfoln("REGULATOR.TUNING.PID", PSTR("Log:")); + Log.sinfoln("REGULATOR.TUNING.PID", F("Log:")); for (Stream* stream : Log.getStreams()) { pidTuner.debugText(stream); } diff --git a/src/SensorsTask.h b/src/SensorsTask.h index ace6d6a..fcb8c64 100644 --- a/src/SensorsTask.h +++ b/src/SensorsTask.h @@ -63,7 +63,7 @@ protected: outdoorSensor->requestTemperatures(); startOutdoorConversionTime = millis(); - Log.serrorln(FPSTR(S_SENSORS_OUTDOOR), PSTR("Could not read temperature data (no response)")); + Log.serrorln(FPSTR(S_SENSORS_OUTDOOR), F("Could not read temperature data (no response)")); } if (!completed) { @@ -72,10 +72,10 @@ protected: float rawTemp = outdoorSensor->getTempCByIndex(0); if (rawTemp == DEVICE_DISCONNECTED_C) { - Log.serrorln(FPSTR(S_SENSORS_OUTDOOR), PSTR("Could not read temperature data (not connected)")); + Log.serrorln(FPSTR(S_SENSORS_OUTDOOR), F("Could not read temperature data (not connected)")); } else { - Log.straceln(FPSTR(S_SENSORS_OUTDOOR), PSTR("Raw temp: %f"), rawTemp); + Log.straceln(FPSTR(S_SENSORS_OUTDOOR), F("Raw temp: %f"), rawTemp); if (emptyOutdoorTemp) { filteredOutdoorTemp = rawTemp; @@ -89,7 +89,7 @@ protected: if (fabs(vars.temperatures.outdoor - filteredOutdoorTemp) > 0.099) { vars.temperatures.outdoor = filteredOutdoorTemp + settings.sensors.outdoor.offset; - Log.sinfoln(FPSTR(S_SENSORS_OUTDOOR), PSTR("New temp: %f"), filteredOutdoorTemp); + Log.sinfoln(FPSTR(S_SENSORS_OUTDOOR), F("New temp: %f"), filteredOutdoorTemp); } } @@ -120,7 +120,7 @@ protected: indoorSensor->requestTemperatures(); startIndoorConversionTime = millis(); - Log.serrorln(FPSTR(S_SENSORS_INDOOR), PSTR("Could not read temperature data (no response)")); + Log.serrorln(FPSTR(S_SENSORS_INDOOR), F("Could not read temperature data (no response)")); } if (!completed) { @@ -129,10 +129,10 @@ protected: float rawTemp = indoorSensor->getTempCByIndex(0); if (rawTemp == DEVICE_DISCONNECTED_C) { - Log.serrorln(FPSTR(S_SENSORS_INDOOR), PSTR("Could not read temperature data (not connected)")); + Log.serrorln(FPSTR(S_SENSORS_INDOOR), F("Could not read temperature data (not connected)")); } else { - Log.straceln(FPSTR(S_SENSORS_INDOOR), PSTR("Raw temp: %f"), rawTemp); + Log.straceln(FPSTR(S_SENSORS_INDOOR), F("Raw temp: %f"), rawTemp); if (emptyIndoorTemp) { filteredIndoorTemp = rawTemp; @@ -146,7 +146,7 @@ protected: if (fabs(vars.temperatures.indoor - filteredIndoorTemp) > 0.099) { vars.temperatures.indoor = filteredIndoorTemp + settings.sensors.indoor.offset; - Log.sinfoln(FPSTR(S_SENSORS_INDOOR), PSTR("New temp: %f"), filteredIndoorTemp); + Log.sinfoln(FPSTR(S_SENSORS_INDOOR), F("New temp: %f"), filteredIndoorTemp); } } diff --git a/src/main.cpp b/src/main.cpp index 6f67fc7..eeded47 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -57,20 +57,20 @@ void setup() { EEPROM.begin(eeSettings.blockSize()); uint8_t eeSettingsResult = eeSettings.begin(0, 's'); if (eeSettingsResult == 0) { - Log.sinfoln("MAIN", PSTR("Settings loaded")); + Log.sinfoln("MAIN", F("Settings loaded")); if (strcmp(SETTINGS_VALID_VALUE, settings.validationValue) != 0) { - Log.swarningln("MAIN", PSTR("Settings not valid, reset and restart...")); + Log.swarningln("MAIN", F("Settings not valid, reset and restart...")); eeSettings.reset(); delay(1000); ESP.restart(); } } else if (eeSettingsResult == 1) { - Log.sinfoln("MAIN", PSTR("Settings NOT loaded, first start")); + Log.sinfoln("MAIN", F("Settings NOT loaded, first start")); } else if (eeSettingsResult == 2) { - Log.serrorln("MAIN", PSTR("Settings NOT loaded (error)")); + Log.serrorln("MAIN", F("Settings NOT loaded (error)")); } Log.setLevel(settings.debug ? TinyLogger::Level::VERBOSE : TinyLogger::Level::INFO);