Add CurrentGetter api for validating charger current (#9147)
This commit is contained in:
parent
7d6a3914c8
commit
ad92a44b2d
2 changed files with 23 additions and 0 deletions
|
|
@ -113,6 +113,11 @@ type CurrentLimiter interface {
|
|||
MaxCurrent(current int64) error
|
||||
}
|
||||
|
||||
// CurrentGetter provides getting charging maximum charging current for validation
|
||||
type CurrentGetter interface {
|
||||
GetMaxCurrent() (float64, error)
|
||||
}
|
||||
|
||||
// Charger provides current charging status and enable/disable charging
|
||||
type Charger interface {
|
||||
ChargeState
|
||||
|
|
|
|||
|
|
@ -652,6 +652,24 @@ func (lp *Loadpoint) syncCharger() error {
|
|||
return lp.charger.Enable(false)
|
||||
}
|
||||
|
||||
if charger, ok := lp.charger.(api.CurrentGetter); ok {
|
||||
current, err := charger.GetMaxCurrent()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if enabled && lp.chargeCurrent != current {
|
||||
if lp.guardGracePeriodElapsed() {
|
||||
lp.log.WARN.Printf("charger logic error: current mismatch (got %.3gA, expected %.3gA)", current, lp.chargeCurrent)
|
||||
}
|
||||
|
||||
if charger, ok := lp.charger.(api.ChargerEx); ok {
|
||||
return charger.MaxCurrentMillis(lp.chargeCurrent)
|
||||
}
|
||||
return lp.charger.MaxCurrent(int64(lp.chargeCurrent))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue