Use estimated if Aidon sends same value as last hour

This commit is contained in:
Gunnar Skjold
2024-06-06 21:37:45 +02:00
parent 1db0082103
commit 4d340c5482
2 changed files with 18 additions and 4 deletions

View File

@@ -69,10 +69,23 @@ void AmsData::apply(AmsData& other) {
this->l3activeExportCounter = other.getL3ActiveExportCounter();
case 3:
this->meterTimestamp = other.getMeterTimestamp();
this->activeImportCounter = other.getActiveImportCounter();
this->activeExportCounter = other.getActiveExportCounter();
this->reactiveImportCounter = other.getReactiveImportCounter();
this->reactiveExportCounter = other.getReactiveExportCounter();
// Aidon tends to sometime send the same counter as last hour by accident
if(meterType == AmsTypeAidon && counterEstimated && lastKnownCounter == other.getActiveImportCounter()-other.getActiveExportCounter()) {
double diff = activeImportCounter - activeExportCounter - lastKnownCounter;
if(diff < 1.0) { // In case a very low value have been calculated, use the new values
this->activeImportCounter = other.getActiveImportCounter();
this->activeExportCounter = other.getActiveExportCounter();
this->reactiveImportCounter = other.getReactiveImportCounter();
this->reactiveExportCounter = other.getReactiveExportCounter();
this->lastKnownCounter = activeImportCounter - activeExportCounter;
}
} else {
this->activeImportCounter = other.getActiveImportCounter();
this->activeExportCounter = other.getActiveExportCounter();
this->reactiveImportCounter = other.getReactiveImportCounter();
this->reactiveExportCounter = other.getReactiveExportCounter();
this->lastKnownCounter = activeImportCounter - activeExportCounter;
}
this->counterEstimated = false;
case 2:
this->listId = other.getListId();