diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e7f2c84b6..435222e00 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1600,12 +1600,12 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { wait_km_ = true; connect_time = uuid::get_uptime_sec(); } + // this could also be by coincidence, so we should add a counter to the EMSbus class to check if the poll_id is the same as the EMS_BUS_ID for a certain number of times if (poll_id == EMSbus::ems_bus_id()) { EMSbus::poll_matched(uuid::get_uptime()); - } else { - EMSbus::poll_match_reset(); } + if (wait_km_) { if (poll_id != 0x48 && (uuid::get_uptime_sec() - connect_time) < EMS_WAIT_KM_TIMEOUT) { return; diff --git a/src/core/telegram.h b/src/core/telegram.h index 3a269402d..b1cd64dfb 100644 --- a/src/core/telegram.h +++ b/src/core/telegram.h @@ -215,6 +215,7 @@ class EMSbus { // sets the flag for EMS bus connected static void last_bus_activity(uint32_t timestamp) { + // record the first time we connected to the BUS, as this will be our uptime if (!last_bus_activity_) { bus_uptime_start_ = timestamp; } @@ -222,10 +223,6 @@ class EMSbus { bus_connected_ = true; } - static void poll_match_reset() { - poll_match_count_ = 0; - } - // return bus uptime in seconds static uint32_t bus_uptime() { if (!bus_uptime_start_) {