From 686112e4eebe2c5c6fba98dc6a74caf4114adffa Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Wed, 2 Aug 2023 18:41:25 +0200 Subject: [PATCH] Fix: Wrong detection of HM-300 inverters Was introduced in v23.8.1; Fixes #1198 --- lib/Hoymiles/src/parser/DevInfoParser.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/Hoymiles/src/parser/DevInfoParser.cpp b/lib/Hoymiles/src/parser/DevInfoParser.cpp index 5ac187fb..44fe59e1 100644 --- a/lib/Hoymiles/src/parser/DevInfoParser.cpp +++ b/lib/Hoymiles/src/parser/DevInfoParser.cpp @@ -210,15 +210,19 @@ uint8_t DevInfoParser::getDevIdx() && devInfo[pos].hwPart[2] == _payloadDevInfoSimple[4] && devInfo[pos].hwPart[3] == _payloadDevInfoSimple[5]) { ret = pos; + break; } } - // Then only for 3 bytes - for (pos = 0; pos < sizeof(devInfo) / sizeof(devInfo_t); pos++) { - if (devInfo[pos].hwPart[0] == _payloadDevInfoSimple[2] - && devInfo[pos].hwPart[1] == _payloadDevInfoSimple[3] - && devInfo[pos].hwPart[2] == _payloadDevInfoSimple[4]) { - ret = pos; + // Then only for 3 bytes but only if not already found + if (ret == 0xff) { + for (pos = 0; pos < sizeof(devInfo) / sizeof(devInfo_t); pos++) { + if (devInfo[pos].hwPart[0] == _payloadDevInfoSimple[2] + && devInfo[pos].hwPart[1] == _payloadDevInfoSimple[3] + && devInfo[pos].hwPart[2] == _payloadDevInfoSimple[4]) { + ret = pos; + break; + } } }