Add CoarseCurrent feature for vehicles that can't follow mA charging (#4662)
This commit is contained in:
parent
85d0117b5a
commit
6e943a0405
4 changed files with 25 additions and 21 deletions
|
|
@ -14,4 +14,5 @@ func (f *Feature) UnmarshalText(text []byte) error {
|
|||
const (
|
||||
_ Feature = iota
|
||||
Offline
|
||||
CoarseCurrent
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
const _FeatureName = "Offline"
|
||||
const _FeatureName = "OfflineCoarseCurrent"
|
||||
|
||||
var _FeatureIndex = [...]uint8{0, 7}
|
||||
var _FeatureIndex = [...]uint8{0, 7, 20}
|
||||
|
||||
const _FeatureLowerName = "offline"
|
||||
const _FeatureLowerName = "offlinecoarsecurrent"
|
||||
|
||||
func (i Feature) String() string {
|
||||
i -= 1
|
||||
|
|
@ -26,17 +26,21 @@ func (i Feature) String() string {
|
|||
func _FeatureNoOp() {
|
||||
var x [1]struct{}
|
||||
_ = x[Offline-(1)]
|
||||
_ = x[CoarseCurrent-(2)]
|
||||
}
|
||||
|
||||
var _FeatureValues = []Feature{Offline}
|
||||
var _FeatureValues = []Feature{Offline, CoarseCurrent}
|
||||
|
||||
var _FeatureNameToValueMap = map[string]Feature{
|
||||
_FeatureName[0:7]: Offline,
|
||||
_FeatureLowerName[0:7]: Offline,
|
||||
_FeatureName[0:7]: Offline,
|
||||
_FeatureLowerName[0:7]: Offline,
|
||||
_FeatureName[7:20]: CoarseCurrent,
|
||||
_FeatureLowerName[7:20]: CoarseCurrent,
|
||||
}
|
||||
|
||||
var _FeatureNames = []string{
|
||||
_FeatureName[0:7],
|
||||
_FeatureName[7:20],
|
||||
}
|
||||
|
||||
// FeatureString retrieves an enum value from the enum constants string name.
|
||||
|
|
|
|||
|
|
@ -613,7 +613,7 @@ func (lp *LoadPoint) setLimit(chargeCurrent float64, force bool) error {
|
|||
// set current
|
||||
if chargeCurrent != lp.chargeCurrent && chargeCurrent >= lp.GetMinCurrent() {
|
||||
var err error
|
||||
if charger, ok := lp.charger.(api.ChargerEx); ok {
|
||||
if charger, ok := lp.charger.(api.ChargerEx); ok && !lp.vehicleHasFeature(api.CoarseCurrent) {
|
||||
err = charger.MaxCurrentMillis(chargeCurrent)
|
||||
} else {
|
||||
chargeCurrent = math.Trunc(chargeCurrent)
|
||||
|
|
@ -697,12 +697,7 @@ func (lp *LoadPoint) setStatus(status api.ChargeStatus) {
|
|||
|
||||
// targetEnergyReached checks if target is configured and reached
|
||||
func (lp *LoadPoint) targetEnergyReached() bool {
|
||||
v, ok := lp.vehicle.(api.FeatureDescriber)
|
||||
if ok {
|
||||
ok = v.Has(api.Offline)
|
||||
}
|
||||
|
||||
return (v == nil || ok) &&
|
||||
return (lp.vehicle == nil || lp.vehicleHasFeature(api.Offline)) &&
|
||||
lp.targetEnergy > 0 &&
|
||||
lp.chargedEnergy/1e3 >= float64(lp.targetEnergy)
|
||||
}
|
||||
|
|
@ -941,13 +936,18 @@ func (lp *LoadPoint) unpublishVehicle() {
|
|||
lp.vehiclePublishFeature(api.Offline)
|
||||
}
|
||||
|
||||
// vehiclePublishFeature availability of vehicle features
|
||||
func (lp *LoadPoint) vehiclePublishFeature(f api.Feature) {
|
||||
// vehicleHasFeature checks availability of vehicle feature
|
||||
func (lp *LoadPoint) vehicleHasFeature(f api.Feature) bool {
|
||||
v, ok := lp.vehicle.(api.FeatureDescriber)
|
||||
if ok {
|
||||
ok = v.Has(f)
|
||||
}
|
||||
lp.publish("vehicleFeature"+f.String(), ok)
|
||||
return ok
|
||||
}
|
||||
|
||||
// vehiclePublishFeature availability of vehicle features
|
||||
func (lp *LoadPoint) vehiclePublishFeature(f api.Feature) {
|
||||
lp.publish("vehicleFeature"+f.String(), lp.vehicleHasFeature(f))
|
||||
}
|
||||
|
||||
// vehicleUnidentified returns true if there are associated vehicles and detection is running.
|
||||
|
|
|
|||
|
|
@ -59,11 +59,10 @@ func (lp *LoadPoint) GetTargetEnergy() int {
|
|||
// setTargetEnergy sets loadpoint charge target energy (no mutex)
|
||||
func (lp *LoadPoint) setTargetEnergy(energy int) {
|
||||
lp.targetEnergy = energy
|
||||
// test guard
|
||||
if lp.socTimer != nil {
|
||||
// TODO soctimer
|
||||
// lp.socTimer.Energy = energy
|
||||
}
|
||||
// TODO soctimer
|
||||
// if lp.socTimer != nil {
|
||||
// lp.socTimer.Energy = energy
|
||||
// }
|
||||
lp.publish("targetEnergy", energy)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue