Skip to content

Commit 5edfa67

Browse files
authored
Invert power measurement when receiving currents for Inverted Eastron (#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
1 parent 94ca08e commit 5edfa67

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

SmartEVSE-3/src/glcd.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ void GLCD(void) {
820820
// If current flow is < 0.3A don't show the blob
821821

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

@@ -843,9 +843,9 @@ void GLCD(void) {
843843

844844
if (LCDToggle && EVMeter.Type) {
845845
if (EVMeter.PowerMeasured < 9950) {
846-
sprintfl(Str, "%1u.%1ukW", EVMeter.PowerMeasured, 3, 1);
846+
sprintfl(Str, "%1d.%1dkW", EVMeter.PowerMeasured, 3, 1);
847847
} else {
848-
sprintfl(Str, "%ukW", EVMeter.PowerMeasured, 3, 0);
848+
sprintfl(Str, "%dkW", EVMeter.PowerMeasured, 3, 0);
849849
}
850850
} else {
851851
sprintfl(Str, "%uA", Balanced[0], 1, 0);
@@ -922,14 +922,14 @@ void GLCD(void) {
922922
break;
923923
case 3:
924924
if (EVMeter.Type) {
925-
sprintfl(Str, "%u.%01u kW", EVMeter.PowerMeasured, 3, 1);
925+
sprintfl(Str, "%d.%01d kW", EVMeter.PowerMeasured, 3, 1);
926926
GLCD_print_buf2(5, Str);
927927
break;
928928
} else LCDText++;
929929
// fall through
930930
case 4:
931931
if (EVMeter.Type) {
932-
sprintfl(Str, "%u.%02u kWh", EVMeter.EnergyCharged, 3, 2);
932+
sprintfl(Str, "%d.%02d kWh", EVMeter.EnergyCharged, 3, 2);
933933
GLCD_print_buf2(5, Str);
934934
break;
935935
} else LCDText++;

SmartEVSE-3/src/meter.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,9 @@ uint8_t Meter::receiveCurrentMeasurement(uint8_t *buf) {
259259
PowerMeasured = 0; // so we calculate PowerMeasured so we dont have to poll for this again
260260
for (x = 0; x < 3; x++) {
261261
Power[x] = decodeMeasurement(buf, x + offset, EMConfig[Type].PDivisor);
262+
if(Type == EM_EASTRON3P_INV) Power[x] = -Power[x];
262263
PowerMeasured += Power[x];
263-
if (Type != EM_EASTRON3P_INV) {
264-
if (Power[x] < 0) var[x] = -var[x];
265-
} else {
266-
if (Power[x] > 0) var[x] = -var[x];
267-
}
264+
if (Power[x] < 0) var[x] = -var[x];
268265
}
269266
}
270267

0 commit comments

Comments
 (0)