diff --git a/src/core/device_library.h b/src/core/device_library.h index 77cec8d25..f628d8df1 100644 --- a/src/core/device_library.h +++ b/src/core/device_library.h @@ -26,7 +26,7 @@ // Boilers - 0x08 { 8, DeviceType::BOILER, "CS5800i, CS6800i, WLW176i, WLW186i", DeviceFlags::EMS_DEVICE_FLAG_CS6800}, { 12, DeviceType::BOILER, "C1200W", DeviceFlags::EMS_DEVICE_FLAG_NONE}, -{ 16, DeviceType::BOILER, "CS5800iG", DeviceFlags::EMS_DEVICE_FLAG_CS6800}, +{ 16, DeviceType::BOILER, "CS5800iG", DeviceFlags::EMS_DEVICE_FLAG_NONE}, { 64, DeviceType::BOILER, "BK13/BK15, Smartline, GB1*2", DeviceFlags::EMS_DEVICE_FLAG_NONE}, { 72, DeviceType::BOILER, "Logano GB1*5, Logamatic MC10", DeviceFlags::EMS_DEVICE_FLAG_EMS}, { 81, DeviceType::BOILER, "Cascade CM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, @@ -154,6 +154,7 @@ // Heat Pumps - 0x53 {248, DeviceType::HEATPUMP, "Hybrid Manager HM200", DeviceFlags::EMS_DEVICE_FLAG_NONE}, +{16, DeviceType::HEATPUMP, "CSH5800iG", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // Ventilation - 0x51 {231, DeviceType::VENTILATION, "Logavent HRV176", DeviceFlags::EMS_DEVICE_FLAG_NONE}, diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index a5951afea..364525be2 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1002,11 +1002,16 @@ void EMSESP::process_deviceName(std::shared_ptr telegram) { // e.g. 09 0B 02 00 PP V1 V2 void EMSESP::process_version(std::shared_ptr telegram) { // check for valid telegram, just in case - if (telegram->message_length < 3) { - // for empty telegram add device with empty product, version and brand - if (!telegram->message_length) { - (void)add_device(telegram->src, 0, "00.00", 0); - } + if (telegram->offset != 0) { + return; + } + // for empty telegram add device with empty product, version and brand + if (telegram->message_length == 0) { + (void)add_device(telegram->src, 0, "00.00", 0); + return; + } else if (telegram->message_length < 3) { + (void)add_device(telegram->src, telegram->message_data[0], "00.00", 0); + send_read_request(EMSdevice::EMS_TYPE_NAME, telegram->src, 27); return; } @@ -1014,7 +1019,7 @@ void EMSESP::process_version(std::shared_ptr telegram) { uint8_t offset = 0; if (telegram->message_data[0] == 0x00) { // see if we have a 2nd subscriber - if (telegram->message_data[3] != 0x00) { + if (telegram->message_length > 5 && telegram->message_data[3] != 0x00) { offset = 3; } else { return; // ignore whole telegram