Skip to content

Commit

Permalink
Invert power measurement when receiving currents for Inverted Eastron…
Browse files Browse the repository at this point in the history
… (#162)

* Only invert if power measured is negative (Fix #145)

* Invert power for Inverted Eastron while receiving currents

* Change LCD formatting to match datatype for EVMeter measurements
  • Loading branch information
PimDoos authored Dec 22, 2024
1 parent 94ca08e commit 5edfa67
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 10 deletions.
10 changes: 5 additions & 5 deletions SmartEVSE-3/src/glcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ void GLCD(void) {
// If current flow is < 0.3A don't show the blob

if (EVMeter.Type) { // If we have a EV kWh meter configured, Show total charged energy in kWh on LCD.
sprintfl(Str, "%2u.%1ukWh", EVMeter.EnergyCharged, 3, 1); // Will reset to 0.0kWh when charging cable reconnected, and state change from STATE B->C
sprintfl(Str, "%2d.%1dkWh", EVMeter.EnergyCharged, 3, 1); // Will reset to 0.0kWh when charging cable reconnected, and state change from STATE B->C
GLCD_write_buf_str(89, 1, Str,GLCD_ALIGN_LEFT); // print to buffer
}

Expand All @@ -843,9 +843,9 @@ void GLCD(void) {

if (LCDToggle && EVMeter.Type) {
if (EVMeter.PowerMeasured < 9950) {
sprintfl(Str, "%1u.%1ukW", EVMeter.PowerMeasured, 3, 1);
sprintfl(Str, "%1d.%1dkW", EVMeter.PowerMeasured, 3, 1);
} else {
sprintfl(Str, "%ukW", EVMeter.PowerMeasured, 3, 0);
sprintfl(Str, "%dkW", EVMeter.PowerMeasured, 3, 0);
}
} else {
sprintfl(Str, "%uA", Balanced[0], 1, 0);
Expand Down Expand Up @@ -922,14 +922,14 @@ void GLCD(void) {
break;
case 3:
if (EVMeter.Type) {
sprintfl(Str, "%u.%01u kW", EVMeter.PowerMeasured, 3, 1);
sprintfl(Str, "%d.%01d kW", EVMeter.PowerMeasured, 3, 1);
GLCD_print_buf2(5, Str);
break;
} else LCDText++;
// fall through
case 4:
if (EVMeter.Type) {
sprintfl(Str, "%u.%02u kWh", EVMeter.EnergyCharged, 3, 2);
sprintfl(Str, "%d.%02d kWh", EVMeter.EnergyCharged, 3, 2);
GLCD_print_buf2(5, Str);
break;
} else LCDText++;
Expand Down
7 changes: 2 additions & 5 deletions SmartEVSE-3/src/meter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,9 @@ uint8_t Meter::receiveCurrentMeasurement(uint8_t *buf) {
PowerMeasured = 0; // so we calculate PowerMeasured so we dont have to poll for this again
for (x = 0; x < 3; x++) {
Power[x] = decodeMeasurement(buf, x + offset, EMConfig[Type].PDivisor);
if(Type == EM_EASTRON3P_INV) Power[x] = -Power[x];
PowerMeasured += Power[x];
if (Type != EM_EASTRON3P_INV) {
if (Power[x] < 0) var[x] = -var[x];
} else {
if (Power[x] > 0) var[x] = -var[x];
}
if (Power[x] < 0) var[x] = -var[x];
}
}

Expand Down

0 comments on commit 5edfa67

Please sign in to comment.