Merge pull request #613 from cnrd/phase-accumlation

Added support for getting accumulated energy for phases (Kamstrup)
This commit is contained in:
Gunnar Skjold
2024-01-06 19:53:10 +01:00
committed by GitHub
5 changed files with 102 additions and 0 deletions

View File

@@ -61,6 +61,14 @@ public:
float getL2ActiveExportPower();
float getL3ActiveExportPower();
double getL1ActiveImportCounter();
double getL2ActiveImportCounter();
double getL3ActiveImportCounter();
double getL1ActiveExportCounter();
double getL2ActiveExportCounter();
double getL3ActiveExportCounter();
double getActiveImportCounter();
double getReactiveImportCounter();
double getActiveExportCounter();
@@ -84,6 +92,8 @@ protected:
float l1voltage = 0, l2voltage = 0, l3voltage = 0, l1current = 0, l2current = 0, l3current = 0;
float l1activeImportPower = 0, l2activeImportPower = 0, l3activeImportPower = 0;
float l1activeExportPower = 0, l2activeExportPower = 0, l3activeExportPower = 0;
double l1activeImportCounter = 0, l2activeImportCounter = 0, l3activeImportCounter;
double l1activeExportCounter = 0, l2activeExportCounter = 0, l3activeExportCounter;
float powerFactor = 0, l1PowerFactor = 0, l2PowerFactor = 0, l3PowerFactor = 0;
double activeImportCounter = 0, reactiveImportCounter = 0, activeExportCounter = 0, reactiveExportCounter = 0;
bool threePhase = false, twoPhase = false, counterEstimated = false, l2currentMissing = false;;

View File

@@ -51,6 +51,12 @@ void AmsData::apply(AmsData& other) {
this->l1activeExportPower = other.getL1ActiveExportPower();
this->l2activeExportPower = other.getL2ActiveExportPower();
this->l3activeExportPower = other.getL3ActiveExportPower();
this->l1activeImportCounter = other.getL1ActiveImportCounter();
this->l2activeImportCounter = other.getL2ActiveImportCounter();
this->l3activeImportCounter = other.getL3ActiveImportCounter();
this->l1activeExportCounter = other.getL1ActiveExportCounter();
this->l2activeExportCounter = other.getL2ActiveExportCounter();
this->l3activeExportCounter = other.getL3ActiveExportCounter();
case 3:
this->meterTimestamp = other.getMeterTimestamp();
this->activeImportCounter = other.getActiveImportCounter();
@@ -195,6 +201,30 @@ float AmsData::getL3ActiveExportPower() {
return this->l3activeExportPower;
}
double AmsData::getL1ActiveImportCounter() {
return this->l1activeImportCounter;
}
double AmsData::getL2ActiveImportCounter() {
return this->l2activeImportCounter;
}
double AmsData::getL3ActiveImportCounter() {
return this->l3activeImportCounter;
}
double AmsData::getL1ActiveExportCounter() {
return this->l1activeExportCounter;
}
double AmsData::getL2ActiveExportCounter() {
return this->l2activeExportCounter;
}
double AmsData::getL3ActiveExportCounter() {
return this->l3activeExportCounter;
}
double AmsData::getActiveImportCounter() {
return this->activeImportCounter;
}

View File

@@ -106,6 +106,24 @@ bool RawMqttHandler::publishList4(AmsData* data, AmsData* meterState) {
if(full || meterState->getL3ActiveExportPower() != data->getL3ActiveExportPower()) {
mqtt.publish(topic + "/meter/export/l3", String(data->getL3ActiveExportPower(), 2));
}
if(full || meterState->getL1ActiveImportCounter() != data->getL1ActiveImportCounter()) {
mqtt->publish(topic + "/meter/import/l1/accumulated", String(data->getL1ActiveImportCounter(), 2));
}
if(full || meterState->getL2ActiveImportCounter() != data->getL2ActiveImportCounter()) {
mqtt->publish(topic + "/meter/import/l2/accumulated", String(data->getL2ActiveImportCounter(), 2));
}
if(full || meterState->getL3ActiveImportCounter() != data->getL3ActiveImportCounter()) {
mqtt->publish(topic + "/meter/import/l3/accumulated", String(data->getL3ActiveImportCounter(), 2));
}
if(full || meterState->getL1ActiveExportCounter() != data->getL1ActiveExportCounter()) {
mqtt->publish(topic + "/meter/export/l1/accumulated", String(data->getL1ActiveExportCounter(), 2));
}
if(full || meterState->getL2ActiveExportCounter() != data->getL2ActiveExportCounter()) {
mqtt->publish(topic + "/meter/export/l2/accumulated", String(data->getL2ActiveExportCounter(), 2));
}
if(full || meterState->getL3ActiveExportCounter() != data->getL3ActiveExportCounter()) {
mqtt->publish(topic + "/meter/export/l3/accumulated", String(data->getL3ActiveExportCounter(), 2));
}
if(full || meterState->getPowerFactor() != data->getPowerFactor()) {
mqtt.publish(topic + "/meter/powerfactor", String(data->getPowerFactor(), 2));
}