From 8adb35e47ad09b54cb258cd2f4e957b9cf1ba43f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 25 Jul 2024 17:58:38 +0200 Subject: [PATCH] response "" for empty, fix value for some cases --- src/emsesp.cpp | 9 +++------ src/helpers.cpp | 1 + 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index a74f5b826..062d139c0 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -729,7 +729,7 @@ void EMSESP::publish_response(std::shared_ptr telegram) { } buffer[267] = '\0'; } - if (telegram->message_length > 0 || telegram->offset == offset) { + if (telegram->message_length) { strlcpy(&buffer[(telegram->offset - offset) * 3], Helpers::data_to_hex(telegram->message_data, telegram->message_length).c_str(), 768); } else { strlcpy(&buffer[(telegram->offset - offset) * 3], "", 768); @@ -746,11 +746,8 @@ void EMSESP::publish_response(std::shared_ptr telegram) { doc["offset"] = Helpers::hextoa(s, offset); doc["data"] = buffer; - if (telegram->message_length <= 4 && strlen(buffer) <= 11) { - uint32_t value = 0; - for (uint8_t i = 0; i < telegram->message_length; i++) { - value = (value << 8) + telegram->message_data[i]; - } + if (strlen(buffer) && strlen(buffer) <= 11) { + uint32_t value = Helpers::hextoint(buffer); doc["value"] = value; } Mqtt::queue_publish("response", doc.as()); diff --git a/src/helpers.cpp b/src/helpers.cpp index a86dd54f9..991a6e2a1 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -411,6 +411,7 @@ uint32_t Helpers::hextoint(const char * hex) { // get current character then increment char byte = *hex++; // transform hex character to the 4bit equivalent number, using the ascii table indexes + if (byte == ' ') byte = *hex++; // skip spaces if (byte >= '0' && byte <= '9') byte = byte - '0'; else if (byte >= 'a' && byte <= 'f')