From 0ede2240a2ac048ff8cd1435532d3c1b13558807 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 31 Mar 2024 07:29:32 +0300 Subject: [PATCH] fix: temperature_unit for climate fixed; temp in vars.parameters.* by default fixed --- src/HaHelper.h | 8 ++++---- src/OpenThermTask.h | 21 +++++++++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/HaHelper.h b/src/HaHelper.h index 5b5cf98..47da358 100644 --- a/src/HaHelper.h +++ b/src/HaHelper.h @@ -1412,10 +1412,10 @@ public: doc[FPSTR(HA_TEMPERATURE_STATE_TEMPLATE)] = F("{{ value_json.heating.target|float(0)|round(1) }}"); if (unit == UnitSystem::METRIC) { - doc[FPSTR(HA_TEMPERATURE_UNIT)] = FPSTR(HA_UNIT_OF_MEASUREMENT_C); + doc[FPSTR(HA_TEMPERATURE_UNIT)] = "C"; } else if (unit == UnitSystem::IMPERIAL) { - doc[FPSTR(HA_TEMPERATURE_UNIT)] = FPSTR(HA_UNIT_OF_MEASUREMENT_F); + doc[FPSTR(HA_TEMPERATURE_UNIT)] = "F"; } doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic(F("settings/set")); @@ -1464,10 +1464,10 @@ public: doc[FPSTR(HA_TEMPERATURE_STATE_TEMPLATE)] = F("{{ value_json.dhw.target|int(0) }}"); if (unit == UnitSystem::METRIC) { - doc[FPSTR(HA_TEMPERATURE_UNIT)] = FPSTR(HA_UNIT_OF_MEASUREMENT_C); + doc[FPSTR(HA_TEMPERATURE_UNIT)] = "C"; } else if (unit == UnitSystem::IMPERIAL) { - doc[FPSTR(HA_TEMPERATURE_UNIT)] = FPSTR(HA_UNIT_OF_MEASUREMENT_F); + doc[FPSTR(HA_TEMPERATURE_UNIT)] = "F"; } doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic(F("settings/set")); diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h index 1440222..fdb3ded 100644 --- a/src/OpenThermTask.h +++ b/src/OpenThermTask.h @@ -44,6 +44,13 @@ protected: } void setup() { + if (settings.system.unitSystem != UnitSystem::METRIC) { + vars.parameters.heatingMinTemp = convertTemp(vars.parameters.heatingMinTemp, UnitSystem::METRIC, settings.system.unitSystem); + vars.parameters.heatingMaxTemp = convertTemp(vars.parameters.heatingMaxTemp, UnitSystem::METRIC, settings.system.unitSystem); + vars.parameters.dhwMinTemp = convertTemp(vars.parameters.dhwMinTemp, UnitSystem::METRIC, settings.system.unitSystem); + vars.parameters.dhwMaxTemp = convertTemp(vars.parameters.dhwMaxTemp, UnitSystem::METRIC, settings.system.unitSystem); + } + #ifdef LED_OT_RX_GPIO pinMode(LED_OT_RX_GPIO, OUTPUT); digitalWrite(LED_OT_RX_GPIO, LOW); @@ -218,12 +225,15 @@ protected: } } else { + vars.parameters.dhwMinTemp = convertTemp(DEFAULT_DHW_MIN_TEMP, UnitSystem::METRIC, settings.system.unitSystem); + vars.parameters.dhwMaxTemp = convertTemp(DEFAULT_DHW_MAX_TEMP, UnitSystem::METRIC, settings.system.unitSystem); + Log.swarningln(FPSTR(L_OT_DHW), F("Failed get min/max temp")); } if (settings.dhw.minTemp >= settings.dhw.maxTemp) { - settings.dhw.minTemp = 30; - settings.dhw.maxTemp = 60; + settings.dhw.minTemp = vars.parameters.dhwMinTemp; + settings.dhw.maxTemp = vars.parameters.dhwMaxTemp; fsSettings.update(); } } @@ -244,12 +254,15 @@ protected: } } else { + vars.parameters.heatingMinTemp = convertTemp(DEFAULT_HEATING_MIN_TEMP, UnitSystem::METRIC, settings.system.unitSystem); + vars.parameters.heatingMaxTemp = convertTemp(DEFAULT_HEATING_MAX_TEMP, UnitSystem::METRIC, settings.system.unitSystem); + Log.swarningln(FPSTR(L_OT_HEATING), F("Failed get min/max temp")); } if (settings.heating.minTemp >= settings.heating.maxTemp) { - settings.heating.minTemp = 20; - settings.heating.maxTemp = 90; + settings.heating.minTemp = vars.parameters.heatingMinTemp; + settings.heating.maxTemp = vars.parameters.heatingMaxTemp; fsSettings.update(); }