diff --git a/src/emsesp.cpp b/src/emsesp.cpp index bae7a1b67..86e01b739 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -971,7 +971,12 @@ void EMSESP::process_deviceName(std::shared_ptr telegram) { char name[16]; uint8_t len = telegram->offset + telegram->message_length - 27; strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16); - if (strlen(name)) { + char * c = name; + while (isprint(*c)) { + c++; + }; + *c = '\0'; + if (strlen(name) > 2) { // https://github.com/emsesp/EMS-ESP32/issues/2166#issuecomment-2454488657 LOG_DEBUG("Model name received for device 0x%02X: %s", telegram->src, name); for (const auto & emsdevice : emsdevices) { if (emsdevice->is_device_id(telegram->src)) { @@ -1462,6 +1467,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { } else if (first_value == TxService::TX_WRITE_FAIL) { LOG_ERROR("Last Tx write rejected by host"); txservice_.send_poll(); // close the bus + txservice_.reset_retry_count(); + tx_successful = true; // no retries + } else { + txservice_.send_poll(); // close the bus + LOG_ERROR("Last Tx write host reply: 0x%02X", first_value); } } else if (tx_state == Telegram::Operation::TX_READ && length == 1) { EMSbus::tx_state(Telegram::Operation::TX_READ); // reset Tx wait state @@ -1528,9 +1538,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { // check for poll to us, if so send top message from Tx queue immediately and quit if (poll_id == txservice_.get_send_id()) { txservice_.send(); + } else { + // send remote room temperature if active + Roomctrl::send(poll_id); } - // send remote room temperature if active - Roomctrl::send(poll_id); + return; } else { #ifdef EMSESP_UART_DEBUG