mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
fix RC300 summertemp, mode
This commit is contained in:
@@ -990,7 +990,7 @@ void Thermostat::process_RC300Monitor(std::shared_ptr<const Telegram> telegram)
|
|||||||
// summermode is bit 4 for boilers and bit 6 for heatpumps: 0:winter, 1:summer
|
// summermode is bit 4 for boilers and bit 6 for heatpumps: 0:winter, 1:summer
|
||||||
telegram->read_value(hc->statusbyte, 2);
|
telegram->read_value(hc->statusbyte, 2);
|
||||||
// use summertemp or hpoperatingstate, https://github.com/emsesp/EMS-ESP32/issues/747, #550, #503
|
// use summertemp or hpoperatingstate, https://github.com/emsesp/EMS-ESP32/issues/747, #550, #503
|
||||||
if ((hc->statusbyte & 1) || !is_fetch(summer2_typeids[hc->hc()])) {
|
if ((hc->statusbyte & 1) || !is_received(summer2_typeids[hc->hc()])) {
|
||||||
has_update(hc->summermode, hc->statusbyte & 0x50 ? 1 : 0);
|
has_update(hc->summermode, hc->statusbyte & 0x50 ? 1 : 0);
|
||||||
has_update(hc->hpoperatingstate, EMS_VALUE_UINT_NOTSET);
|
has_update(hc->hpoperatingstate, EMS_VALUE_UINT_NOTSET);
|
||||||
} else {
|
} else {
|
||||||
@@ -1022,7 +1022,7 @@ void Thermostat::process_RC300Set(std::shared_ptr<const Telegram> telegram) {
|
|||||||
// has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual
|
// has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual
|
||||||
|
|
||||||
telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto
|
telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto
|
||||||
if (Helpers::hasValue(hc->mode_new)) {
|
if (hc->mode_new < 3) {
|
||||||
has_update(hc->mode, hc->mode_new);
|
has_update(hc->mode, hc->mode_new);
|
||||||
} else {
|
} else {
|
||||||
uint8_t mode = EMS_VALUE_UINT_NOTSET;
|
uint8_t mode = EMS_VALUE_UINT_NOTSET;
|
||||||
@@ -1063,7 +1063,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram, hc->roominfluence, 0);
|
has_update(telegram, hc->roominfluence, 0);
|
||||||
has_update(telegram, hc->roominfl_factor, 1); // is * 10
|
has_update(telegram, hc->roominfl_factor, 1); // is * 10
|
||||||
has_update(telegram, hc->offsettemp, 2);
|
has_update(telegram, hc->offsettemp, 2);
|
||||||
if (!is_fetch(summer2_typeids[hc->hc()])) {
|
if (!is_received(summer2_typeids[hc->hc()])) {
|
||||||
has_update(telegram, hc->summertemp, 6);
|
has_update(telegram, hc->summertemp, 6);
|
||||||
has_update(telegram, hc->summersetmode, 7);
|
has_update(telegram, hc->summersetmode, 7);
|
||||||
}
|
}
|
||||||
@@ -2616,7 +2616,7 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
uint8_t set;
|
uint8_t set;
|
||||||
|
|
||||||
if (is_fetch(summer2_typeids[hc->hc()])) {
|
if (is_received(summer2_typeids[hc->hc()])) {
|
||||||
if ((hc->statusbyte & 1) && Helpers::value2enum(value, set, FL_(enum_summermode))) {
|
if ((hc->statusbyte & 1) && Helpers::value2enum(value, set, FL_(enum_summermode))) {
|
||||||
write_command(summer2_typeids[hc->hc()], 0, set, summer2_typeids[hc->hc()]);
|
write_command(summer2_typeids[hc->hc()], 0, set, summer2_typeids[hc->hc()]);
|
||||||
return true;
|
return true;
|
||||||
@@ -3169,7 +3169,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co
|
|||||||
validate_typeid = set_typeids[hc->hc()];
|
validate_typeid = set_typeids[hc->hc()];
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case HeatingCircuit::Mode::SUMMER:
|
case HeatingCircuit::Mode::SUMMER:
|
||||||
if (is_fetch(summer2_typeids[hc->hc()])) {
|
if (is_received(summer2_typeids[hc->hc()])) {
|
||||||
offset = 0x01;
|
offset = 0x01;
|
||||||
set_typeid = summer2_typeids[hc->hc()];
|
set_typeid = summer2_typeids[hc->hc()];
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class Thermostat : public EMSdevice {
|
|||||||
uint8_t tempautotemp;
|
uint8_t tempautotemp;
|
||||||
int8_t remoteseltemp;
|
int8_t remoteseltemp;
|
||||||
uint8_t mode;
|
uint8_t mode;
|
||||||
uint8_t mode_new;
|
uint8_t mode_new = EMS_VALUE_UINT_NOTSET; // not initialized by register_value
|
||||||
uint8_t modetype;
|
uint8_t modetype;
|
||||||
uint8_t summermode;
|
uint8_t summermode;
|
||||||
uint8_t holidaymode;
|
uint8_t holidaymode;
|
||||||
|
|||||||
@@ -347,6 +347,16 @@ bool EMSdevice::is_fetch(uint16_t telegram_id) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get received status of telegramID
|
||||||
|
bool EMSdevice::is_received(uint16_t telegram_id) const {
|
||||||
|
for (const auto & tf : telegram_functions_) {
|
||||||
|
if (tf.telegram_type_id_ == telegram_id) {
|
||||||
|
return tf.received_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// check for a tag to create a nest
|
// check for a tag to create a nest
|
||||||
bool EMSdevice::has_tags(const uint8_t tag) const {
|
bool EMSdevice::has_tags(const uint8_t tag) const {
|
||||||
for (const auto & dv : devicevalues_) {
|
for (const auto & dv : devicevalues_) {
|
||||||
|
|||||||
@@ -314,6 +314,7 @@ class EMSdevice {
|
|||||||
void fetch_values();
|
void fetch_values();
|
||||||
void toggle_fetch(uint16_t telegram_id, bool toggle);
|
void toggle_fetch(uint16_t telegram_id, bool toggle);
|
||||||
bool is_fetch(uint16_t telegram_id) const;
|
bool is_fetch(uint16_t telegram_id) const;
|
||||||
|
bool is_received(uint16_t telegram_id) const;
|
||||||
bool has_telegram_id(uint16_t id) const;
|
bool has_telegram_id(uint16_t id) const;
|
||||||
void ha_config_clear();
|
void ha_config_clear();
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define EMSESP_APP_VERSION "3.6.3-test.7a"
|
#define EMSESP_APP_VERSION "3.6.3-test.7b"
|
||||||
|
|||||||
Reference in New Issue
Block a user