diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index aad562ed1..f09f8c363 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -16,6 +16,7 @@ - Added in MQTT nested mode, for thermostat and mixer, like we had back in v2 - Cascade MC400 (product-id 210) (3.0.0b6) - values for wwMaxPower, wwFlowtempOffset +- RC300 `thermostat temp -1` to clear temporary setpoint in auto mode ### Fixed - telegrams matched to masterthermostat 0x18 diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 456307f8c..16c10b5bc 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1731,6 +1731,10 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = 0x0A; // manual offset } else { offset = 0x08; // auto offset + // special case to reactivate auto temperature, see #737, #746 + if (temperature == -1) { + factor = 0xFF; // use factor as value + } } validate_typeid = monitor_typeids[hc->hc_num() - 1]; // get setpoint roomtemp back break; @@ -1887,7 +1891,11 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co // add the write command to the Tx queue. value is *2 // post validate is the corresponding monitor or set type IDs as they can differ per model - write_command(set_typeid, offset, (uint8_t)((float)temperature * (float)factor), validate_typeid); + if (factor == 0xFF) { + write_command(set_typeid, offset, factor, validate_typeid); + } else { + write_command(set_typeid, offset, (uint8_t)((float)temperature * (float)factor), validate_typeid); + } return true; }