OCPP: report zero charge power while idle (#30655)
This commit is contained in:
parent
6f7b689322
commit
2db85aeed6
2 changed files with 33 additions and 0 deletions
|
|
@ -307,6 +307,12 @@ func (conn *Connector) CurrentPower() (float64, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// no power measurand: chargers that only report energy while idle (e.g. Mennekes ACU)
|
||||
// never send power outside a transaction, so report zero as nothing is charging
|
||||
if conn.txnId == 0 {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
return 0, api.ErrNotAvailable
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,6 +112,33 @@ func (suite *connTestSuite) TestConnectorMeasurementsNoTxn() {
|
|||
suite.Equal(res3, 1.0, "Voltages")
|
||||
}
|
||||
|
||||
func (suite *connTestSuite) TestConnectorEnergyOnlyNoTxn() {
|
||||
// connected, no txn, only energy register reported (e.g. Mennekes ACU while idle)
|
||||
suite.conn.measurements[types.MeasurandEnergyActiveImportRegister] = types.SampledValue{Value: "1000", Unit: types.UnitOfMeasureWh}
|
||||
suite.conn.meterUpdated = suite.clock.Now()
|
||||
|
||||
// no power measurand but no running txn: report zero instead of ErrNotAvailable
|
||||
res, err := suite.conn.CurrentPower()
|
||||
suite.NoError(err, "CurrentPower")
|
||||
suite.Equal(0.0, res, "CurrentPower")
|
||||
|
||||
// energy is still reported
|
||||
res, err = suite.conn.TotalEnergy()
|
||||
suite.NoError(err, "TotalEnergy")
|
||||
suite.Equal(1.0, res, "TotalEnergy")
|
||||
}
|
||||
|
||||
func (suite *connTestSuite) TestConnectorEnergyOnlyRunningTxn() {
|
||||
// connected, running txn, only energy register reported and no power yet
|
||||
suite.conn.measurements[types.MeasurandEnergyActiveImportRegister] = types.SampledValue{Value: "1000", Unit: types.UnitOfMeasureWh}
|
||||
suite.conn.meterUpdated = suite.clock.Now()
|
||||
suite.conn.txnId = 1
|
||||
|
||||
// missing power during an active txn must still surface as not available
|
||||
_, err := suite.conn.CurrentPower()
|
||||
suite.Equal(api.ErrNotAvailable, err, "CurrentPower")
|
||||
}
|
||||
|
||||
func (suite *connTestSuite) TestConnectorMeasurementsRunningTxnOutdated() {
|
||||
// connected, running txn, no meter update since 1 hour
|
||||
suite.addMeasurements()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue