diff --git a/lib/Hoymiles/src/parser/StatisticsParser.cpp b/lib/Hoymiles/src/parser/StatisticsParser.cpp index df6e585e..831c1ad1 100644 --- a/lib/Hoymiles/src/parser/StatisticsParser.cpp +++ b/lib/Hoymiles/src/parser/StatisticsParser.cpp @@ -82,8 +82,6 @@ void StatisticsParser::clearBuffer() { memset(_payloadStatistic, 0, STATISTIC_PACKET_SIZE); _statisticLength = 0; - - memset(_lastYieldDay, 0, sizeof(_lastYieldDay)); } void StatisticsParser::appendFragment(const uint8_t offset, const uint8_t* payload, const uint8_t len) @@ -111,8 +109,7 @@ void StatisticsParser::endAppendFragment() // currently all values are zero --> Add last known values to offset Hoymiles.getMessageOutput()->printf("Yield Day reset detected!\r\n"); - setChannelFieldOffset(TYPE_DC, c, FLD_YD, - getChannelFieldOffset(TYPE_DC, c, FLD_YD) + _lastYieldDay[static_cast(c)]); + setChannelFieldOffset(TYPE_DC, c, FLD_YD, _lastYieldDay[static_cast(c)]); _lastYieldDay[static_cast(c)] = 0; } else { diff --git a/lib/Hoymiles/src/parser/StatisticsParser.h b/lib/Hoymiles/src/parser/StatisticsParser.h index 2893cbd8..10f06e04 100644 --- a/lib/Hoymiles/src/parser/StatisticsParser.h +++ b/lib/Hoymiles/src/parser/StatisticsParser.h @@ -168,5 +168,5 @@ private: uint32_t _lastUpdateFromInternal = 0; bool _enableYieldDayCorrection = false; - float _lastYieldDay[CH_CNT]; + float _lastYieldDay[CH_CNT] = {}; }; \ No newline at end of file