mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-04-25 20:01:46 +00:00
Use estimated if Aidon sends same value as last hour
This commit is contained in:
@@ -105,6 +105,7 @@ protected:
|
|||||||
double l1activeExportCounter = 0, l2activeExportCounter = 0, l3activeExportCounter = 0;
|
double l1activeExportCounter = 0, l2activeExportCounter = 0, l3activeExportCounter = 0;
|
||||||
float powerFactor = 0, l1PowerFactor = 0, l2PowerFactor = 0, l3PowerFactor = 0;
|
float powerFactor = 0, l1PowerFactor = 0, l2PowerFactor = 0, l3PowerFactor = 0;
|
||||||
double activeImportCounter = 0, reactiveImportCounter = 0, activeExportCounter = 0, reactiveExportCounter = 0;
|
double activeImportCounter = 0, reactiveImportCounter = 0, activeExportCounter = 0, reactiveExportCounter = 0;
|
||||||
|
double lastKnownCounter = 0;
|
||||||
bool threePhase = false, twoPhase = false, counterEstimated = false, l2currentMissing = false;;
|
bool threePhase = false, twoPhase = false, counterEstimated = false, l2currentMissing = false;;
|
||||||
|
|
||||||
int8_t lastError = 0x00;
|
int8_t lastError = 0x00;
|
||||||
|
|||||||
@@ -69,10 +69,23 @@ void AmsData::apply(AmsData& other) {
|
|||||||
this->l3activeExportCounter = other.getL3ActiveExportCounter();
|
this->l3activeExportCounter = other.getL3ActiveExportCounter();
|
||||||
case 3:
|
case 3:
|
||||||
this->meterTimestamp = other.getMeterTimestamp();
|
this->meterTimestamp = other.getMeterTimestamp();
|
||||||
this->activeImportCounter = other.getActiveImportCounter();
|
// Aidon tends to sometime send the same counter as last hour by accident
|
||||||
this->activeExportCounter = other.getActiveExportCounter();
|
if(meterType == AmsTypeAidon && counterEstimated && lastKnownCounter == other.getActiveImportCounter()-other.getActiveExportCounter()) {
|
||||||
this->reactiveImportCounter = other.getReactiveImportCounter();
|
double diff = activeImportCounter - activeExportCounter - lastKnownCounter;
|
||||||
this->reactiveExportCounter = other.getReactiveExportCounter();
|
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;
|
this->counterEstimated = false;
|
||||||
case 2:
|
case 2:
|
||||||
this->listId = other.getListId();
|
this->listId = other.getListId();
|
||||||
|
|||||||
Reference in New Issue
Block a user