diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index f29d2b944..13aeab59e 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -5,9 +5,11 @@ ## Added ## Fixed -- lastcode broke MQTT JSON structure [#228] + +- lastcode broke MQTT JSON structure [#228](https://github.com/emsesp/EMS-ESP32/issues/228) - overlapping while reading sequence of EMS1.0 telegrams - redundant telegram readings (because of offset overflow) +- added missing RC30/Moduline400 [#243](https://github.com/emsesp/EMS-ESP32/issues/243) ## Changed diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 741256cb8..f2e900c15 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2691,6 +2691,17 @@ void Thermostat::register_device_values() { case EMS_DEVICE_FLAG_RC20: register_device_value(TAG_THERMOSTAT_DATA, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; + case EMS_DEVICE_FLAG_RC30: + register_device_value(TAG_THERMOSTAT_DATA, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime + register_device_value(TAG_THERMOSTAT_DATA, &ibaMainDisplay_, DeviceValueType::ENUM, FL_(enum_ibaMainDisplay), FL_(ibaMainDisplay), DeviceValueUOM::NONE); + register_device_value(TAG_THERMOSTAT_DATA, &ibaLanguage_, DeviceValueType::ENUM, FL_(enum_ibaLanguage), FL_(ibaLanguage), DeviceValueUOM::NONE); + register_device_value(TAG_THERMOSTAT_DATA, + &ibaClockOffset_, + DeviceValueType::INT, + nullptr, + FL_(ibaClockOffset), + DeviceValueUOM::SECONDS); // offset (in sec) to clock, 0xff=-1s, 0x02=2s + break; case EMS_DEVICE_FLAG_RC30_N: register_device_value(TAG_THERMOSTAT_DATA, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(TAG_THERMOSTAT_DATA, &ibaMainDisplay_, DeviceValueType::ENUM, FL_(enum_ibaMainDisplay), FL_(ibaMainDisplay), DeviceValueUOM::NONE); @@ -2940,6 +2951,9 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummertemp, DeviceValueType::UINT, nullptr, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summertemp)); register_device_value(tag, &hc->summermode, DeviceValueType::BOOL, nullptr, FL_(summermode), DeviceValueUOM::NONE); break; + case EMS_DEVICE_FLAG_RC30: + register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); + break; case EMS_DEVICE_FLAG_RC30_N: case EMS_DEVICE_FLAG_RC35: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); diff --git a/src/telegram.cpp b/src/telegram.cpp index c4166db8b..186430b91 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -607,19 +607,20 @@ void TxService::retry_tx(const uint8_t operation, const uint8_t * data, const ui tx_telegrams_.emplace_front(tx_telegram_id_++, std::move(telegram_last_), true, get_post_send_query()); } +// send a request to read the next block of data from longer telegrams uint16_t TxService::read_next_tx(uint8_t offset) { // add to the top/front of the queue uint8_t message_data[1] = {EMS_MAX_TELEGRAM_LENGTH}; // request all data, 32 bytes if (telegram_last_->offset != offset) { return 0; } - - uint8_t add_offset = 25; //for EMS+ telegram increase offset by 25 - if (telegram_last_->type_id < 0x100) { //but for EMS1.0 by 27 + + uint8_t add_offset = 25; // for EMS+ telegram increase offset by 25 + if (telegram_last_->type_id < 0x100) { // but for EMS1.0 by 27 add_offset = 27; } - if (UINT8_MAX - telegram_last_->offset < add_offset) { //stop if new offset would overflow + if (UINT8_MAX - telegram_last_->offset < add_offset) { // stop if new offset would overflow return 0; } diff --git a/src/version.h b/src/version.h index 37decfc86..5987e4f1f 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.3.1b0" +#define EMSESP_APP_VERSION "3.3.1b1"