Ocpp: zero phase powers when transaction stops (#23464)
This commit is contained in:
parent
b679e4da4e
commit
308f298335
2 changed files with 35 additions and 2 deletions
|
|
@ -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,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue