diff --git a/src/EnergyAccounting.cpp b/src/EnergyAccounting.cpp index 60deaa43..d31441fb 100644 --- a/src/EnergyAccounting.cpp +++ b/src/EnergyAccounting.cpp @@ -237,11 +237,12 @@ float EnergyAccounting::getMonthMax() { uint32_t maxHour = 0.0; bool included[5] = { false, false, false, false, false }; - while(count < config->hours) { + while(count < config->hours && count <= 5) { uint8_t maxIdx = 0; uint16_t maxVal = 0; for(uint8_t i = 0; i < 5; i++) { if(included[i]) continue; + if(data.peaks[i].day == 0) continue; if(data.peaks[i].value > maxVal) { maxVal = data.peaks[i].value; maxIdx = i; @@ -253,9 +254,7 @@ float EnergyAccounting::getMonthMax() { for(uint8_t i = 0; i < 5; i++) { if(!included[i]) continue; - if(data.peaks[i].day > 0) { - maxHour += data.peaks[i].value; - } + maxHour += data.peaks[i].value; } return maxHour > 0 ? maxHour / count / 100.0 : 0.0; } @@ -266,7 +265,7 @@ float EnergyAccounting::getPeak(uint8_t num) { uint8_t count = 0; bool included[5] = { false, false, false, false, false }; - while(count < config->hours) { + while(count < config->hours && count <= 5) { uint8_t maxIdx = 0; uint16_t maxVal = 0; for(uint8_t i = 0; i < 5; i++) { @@ -341,7 +340,7 @@ bool EnergyAccounting::load() { this->data.peaks[b].day = b; memcpy(&this->data.peaks[b].value, buf+i, 2); b++; - if(b >= config->hours) break; + if(b >= config->hours || b >= 5) break; } ret = true; } else if(buf[0] == 1) { diff --git a/src/mqtt/HomeAssistantMqttHandler.cpp b/src/mqtt/HomeAssistantMqttHandler.cpp index 9a563664..ff273e3e 100644 --- a/src/mqtt/HomeAssistantMqttHandler.cpp +++ b/src/mqtt/HomeAssistantMqttHandler.cpp @@ -62,7 +62,7 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En if(peakCount > 5) peakCount = 5; for(uint8_t i = 1; i <= peakCount; i++) { if(!peaks.isEmpty()) peaks += ","; - peaks += String(ea->getPeak(i)); + peaks += String(ea->getPeak(i), 2); } snprintf_P(json, BufferSize, REALTIME_JSON, ea->getMonthMax(),