Make sure we dont use more than 5 peaks if defined higher

This commit is contained in:
Gunnar Skjold 2022-10-06 17:20:13 +02:00
parent b420a0e6f4
commit 06ec97b42a
2 changed files with 6 additions and 7 deletions

View File

@ -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) {

View File

@ -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(),