Ocpp: zero phase powers when transaction stops (#23464)

This commit is contained in:
lurtz 2025-09-09 16:43:31 +02:00 • committed by GitHub
parent b679e4da4e
commit 308f298335
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 2 deletions

View file

@ -116,8 +116,21 @@ func (conn *Connector) assumeMeterStopped() {
}
for phase := 1; phase <= 3; phase++ {
if _, ok := conn.measurements[getPhaseKey(types.MeasurandCurrentImport, phase)]; ok {
conn.measurements[getPhaseKey(types.MeasurandCurrentImport, phase)] = types.SampledValue{
// phase powers
for _, suffix := range []types.Measurand{"", "-N"} {
key := getPhaseKey(types.MeasurandPowerActiveImport, phase) + suffix
if _, ok := conn.measurements[key]; ok {
conn.measurements[key] = types.SampledValue{
Value: "0",
Unit: types.UnitOfMeasureW,
}
}
}
// phase currents
key := getPhaseKey(types.MeasurandCurrentImport, phase)
if _, ok := conn.measurements[key]; ok {
conn.measurements[key] = types.SampledValue{
Value: "0",
Unit: types.UnitOfMeasureA,
}

View file

@ -152,3 +152,23 @@ func (suite *connTestSuite) TestConnectorMeasurementsRunningTxn() {
_, _, _, err = suite.conn.Voltages()
suite.NoError(err, "Voltages")
}
func (suite *connTestSuite) TestOnStopTransactionResetsReportedPower() {
suite.conn.meterUpdated = suite.clock.Now()
// Set some power
suite.conn.measurements[types.MeasurandPowerActiveImport+".L1-N"] = types.SampledValue{Value: "1"}
suite.conn.measurements[types.MeasurandPowerActiveImport+".L2-N"] = types.SampledValue{Value: "1"}
suite.conn.measurements[types.MeasurandPowerActiveImport+".L3-N"] = types.SampledValue{Value: "1"}
res, err := suite.conn.CurrentPower()
suite.NoError(err, "CurrentPower")
suite.Equal(res, 3.0, "CurrentPower")
// set powers to zero
suite.conn.OnStopTransaction(nil)
res, err = suite.conn.CurrentPower()
suite.NoError(err, "CurrentPower")
suite.Equal(res, 0.0, "CurrentPower")
}