From de955c841c50e1182512e2502c1e5f5f232ad61e Mon Sep 17 00:00:00 2001 From: meMorizE Date: Thu, 11 Dec 2025 09:14:10 +0100 Subject: [PATCH 1/3] Change unit relation of local sensor to setoption8, add unit conversion at ThermostatShow (#24213) Bugfix for https://github.com/arendst/Tasmota/issues/24165 --- .../xdrv_39_thermostat.ino | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_39_thermostat.ino b/tasmota/tasmota_xdrv_driver/xdrv_39_thermostat.ino index 97ee43fc2..231d4aaeb 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_39_thermostat.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_39_thermostat.ino @@ -201,8 +201,8 @@ struct THERMOSTAT { uint32_t time_ctr_checkpoint = 0; // Time to finalize the control cycle within the PI strategy or to switch to PI from Rampup in seconds uint32_t time_ctr_changepoint = 0; // Time until switching off output within the controller in seconds int32_t temp_measured_gradient = 0; // Temperature measured gradient from sensor in thousandths of degrees per hour - int16_t temp_target_level = THERMOSTAT_TEMP_INIT; // Target level of the thermostat in tenths of degrees - int16_t temp_target_level_ctr = THERMOSTAT_TEMP_INIT; // Target level set for the controller + int16_t temp_target_level = THERMOSTAT_TEMP_INIT; // Target level of the thermostat in tenths of degrees celsius + int16_t temp_target_level_ctr = THERMOSTAT_TEMP_INIT; // Target level set for the controller in tenths of degrees celsius int16_t temp_pi_accum_error = 0; // Temperature accumulated error for the PI controller in hundredths of degrees int16_t temp_pi_error = 0; // Temperature error for the PI controller in hundredths of degrees int32_t time_proportional_pi; // Time proportional part of the PI controller @@ -1402,7 +1402,7 @@ void ThermostatGetLocalSensor(uint8_t ctr_output) { JsonParserToken value_token = root[sensor_name].getObject()[PSTR(D_JSON_TEMPERATURE)]; if (value_token.isNum()) { int16_t value = value_token.getFloat() * 10; - if (Thermostat[ctr_output].status.temp_format == TEMP_FAHRENHEIT) { + if (Settings->flag.temperature_conversion) { // SetOption8 - Local Sensor provided in Fahrenheit value = ThermostatFahrenheitToCelsius(value, TEMP_CONV_ABSOLUTE); } if ( (value >= -1000) @@ -2085,18 +2085,27 @@ void ThermostatShow(uint8_t ctr_output, bool json) } else { char c_unit = Thermostat[ctr_output].status.temp_format==TEMP_CELSIUS ? D_UNIT_CELSIUS[0] : D_UNIT_FAHRENHEIT[0]; float f_temperature; + int32_t value; WSContentSend_P(HTTP_THERMOSTAT_INFO, ctr_output + 1, D_ENABLED); - f_temperature = Thermostat[ctr_output].temp_target_level / 10.0f; + value = Thermostat[ctr_output].temp_target_level; // in tenths of degrees Celsius + if (Thermostat[ctr_output].status.temp_format == TEMP_FAHRENHEIT) { + value = ThermostatCelsiusToFahrenheit(value, TEMP_CONV_ABSOLUTE); + } + f_temperature = value / 10.0f; WSContentSend_PD(HTTP_THERMOSTAT_TEMPERATURE, D_THERMOSTAT_SET_POINT, Settings->flag2.temperature_resolution, &f_temperature, c_unit); - f_temperature = Thermostat[ctr_output].temp_measured / 10.0f; + value = Thermostat[ctr_output].temp_measured; // in tenths of degrees Celsius + if (Thermostat[ctr_output].status.temp_format == TEMP_FAHRENHEIT) { + value = ThermostatCelsiusToFahrenheit(value, TEMP_CONV_ABSOLUTE); + } + f_temperature = value / 10.0f; WSContentSend_PD(HTTP_THERMOSTAT_TEMPERATURE, D_THERMOSTAT_SENSOR, Settings->flag2.temperature_resolution, &f_temperature, c_unit); - int16_t value = Thermostat[ctr_output].temp_measured_gradient; + value = Thermostat[ctr_output].temp_measured_gradient; if (Thermostat[ctr_output].status.temp_format == TEMP_FAHRENHEIT) { - value = ThermostatCelsiusToFahrenheit((int32_t)Thermostat[ctr_output].temp_measured_gradient, TEMP_CONV_RELATIVE); + value = ThermostatCelsiusToFahrenheit(value, TEMP_CONV_RELATIVE); } f_temperature = abs(value) / 1000.0f; WSContentSend_PD(HTTP_THERMOSTAT_TEMP_GRAD, value < 0 ? '-' : '+', Settings->flag2.temperature_resolution, &f_temperature, c_unit); From 0cae492ce091dec89f8493de962557a37596e336 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:14:47 +0100 Subject: [PATCH 2/3] Platform 2025.12.30 Tasmota Arduino Core 3.1.7 based on IDF 5.3.4.20251205 (#24212) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- platformio_tasmota32.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index abae172a2..e38c916c1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR and the code change compiles without warnings - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.8 - - [ ] The code change is tested and works with Tasmota core ESP32 V.3.1.6 + - [ ] The code change is tested and works with Tasmota core ESP32 V.3.1.7 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index cfd06b209..009cc65fc 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -97,7 +97,7 @@ custom_component_remove = espressif/cmake_utilities [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2025.11.31/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2025.12.30/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 5bfa6216990b7b1a65468ecb938edb33b43891d6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:26:02 +0100 Subject: [PATCH 3/3] Update changelogs --- CHANGELOG.md | 2 ++ RELEASENOTES.md | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d2371706..bfcd6decd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file. ### Changed - ESP32 Platform from 2025.11.30 to 2025.11.31, Framework (Arduino Core) from v3.1.5 to v3.1.6 and IDF from v5.3.4.251110 to v5.3.4.251110 (#24146) - Refactored DALI using TasmotaDali library v1.0.0 adding frame receive buffer +- ESP32 Platform from 2025.11.31 to 2025.12.30, Framework (Arduino Core) from v3.1.6 to v3.1.7 and IDF from v5.3.4.251110 to v5.3.4.20251205 (#24212) ### Fixed - ESP32-P4 Hosted MCU updated to v2.6.6 solving WiFi boot issues (#24146) @@ -23,6 +24,7 @@ All notable changes to this project will be documented in this file. - PCA9685 V2 driver PWMTO fading logic and overflow (#24159) - RGBW handling in TasmotaLED and xlgt_01_ws2812_esp32 (#24172) - ArtNet single light color mapping using `ChannelRemap` (#24058) +- Thermostat temperature unit (#24213) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d60b05b1f..a021e2060 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S This release will be supported from ESP8266/Arduino library Core version **2.7.8** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. -This release will be supported from ESP32/Arduino library Core version **v3.1.6**. +This release will be supported from ESP32/Arduino library Core version **v3.1.7**. -Support of ESP8266 Core versions before 2.7.8 and ESP32 Core versions before v3.1.6 have been removed. +Support of ESP8266 Core versions before 2.7.8 and ESP32 Core versions before v3.1.7 have been removed. ## Initial configuration tools @@ -76,7 +76,7 @@ Historical binaries can be downloaded from The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-P4, ESP32-S2 and ESP32-S3 based -The following binary downloads have been compiled with ESP32/Arduino library core version **v3.1.6**. +The following binary downloads have been compiled with ESP32/Arduino library core version **v3.1.7**. - **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash. @@ -135,7 +135,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Breaking Changed ### Changed -- ESP32 Platform from 2025.11.30 to 2025.11.31, Framework (Arduino Core) from v3.1.5 to v3.1.6 and IDF from v5.3.4.250826 to v5.3.4.251110 [#24146](https://github.com/arendst/Tasmota/issues/24118) +- ESP32 Platform from 2025.11.30 to 2025.12.30, Framework (Arduino Core) from v3.1.5 to v3.1.7 and IDF from v5.3.4.250826 to v5.3.4.20251205 [#24212](https://github.com/arendst/Tasmota/issues/24212) - LVGL library from v9.3.0 to v9.4.0 [#24028](https://github.com/arendst/Tasmota/issues/24028) - JPEGDEC library from v1.8.3 to v1.8.4 [#24120](https://github.com/arendst/Tasmota/issues/24120) - GPIOViewer from v1.6.3 to v1.7.0 @@ -151,6 +151,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - DALI protocol errors - RGBW handling in TasmotaLED and xlgt_01_ws2812_esp32 [#24172](https://github.com/arendst/Tasmota/issues/24172) - ArtNet single light color mapping using `ChannelRemap` [#24058](https://github.com/arendst/Tasmota/issues/24058) +- Thermostat temperature unit [#24213](https://github.com/arendst/Tasmota/issues/24213) - TLS fix ECDSA and add `SetOption165 1` to enable ECDSA in addition to RSA [#24000](https://github.com/arendst/Tasmota/issues/24000) - ESP32-P4 Hosted MCU updated to v2.6.6 solving WiFi boot issues [#24146](https://github.com/arendst/Tasmota/issues/24118) - ESP32-Solo1 using pre-compiled Arduino libraries [#24146](https://github.com/arendst/Tasmota/issues/24118)