chore: move phase setters to separate file (#5634)
This commit is contained in:
parent
05d371e774
commit
91be66cc34
2 changed files with 40 additions and 33 deletions
|
|
@ -1300,36 +1300,6 @@ func (lp *Loadpoint) scalePhasesIfAvailable(phases int) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// setConfiguredPhases sets the default phase configuration
|
||||
func (lp *Loadpoint) setConfiguredPhases(phases int) {
|
||||
lp.Lock()
|
||||
defer lp.Unlock()
|
||||
|
||||
lp.ConfiguredPhases = phases
|
||||
|
||||
// publish 1p3p capability and phase configuration
|
||||
if _, ok := lp.charger.(api.PhaseSwitcher); ok {
|
||||
lp.publish(phasesConfigured, lp.ConfiguredPhases)
|
||||
} else {
|
||||
lp.publish(phasesConfigured, nil)
|
||||
}
|
||||
}
|
||||
|
||||
// setPhases sets the number of enabled phases without modifying the charger
|
||||
func (lp *Loadpoint) setPhases(phases int) {
|
||||
if lp.GetPhases() != phases {
|
||||
lp.Lock()
|
||||
lp.phases = phases
|
||||
lp.Unlock()
|
||||
|
||||
// reset timer to disabled state
|
||||
lp.resetPhaseTimer()
|
||||
|
||||
// measure phases after switching
|
||||
lp.resetMeasuredPhases()
|
||||
}
|
||||
}
|
||||
|
||||
// scalePhases adjusts the number of active phases and returns the appropriate charging current.
|
||||
// Returns api.ErrNotAvailable if api.PhaseSwitcher is not available.
|
||||
func (lp *Loadpoint) scalePhases(phases int) error {
|
||||
|
|
@ -1639,7 +1609,7 @@ func (lp *Loadpoint) updateChargeCurrents() {
|
|||
lp.measuredPhases = phases
|
||||
lp.Unlock()
|
||||
|
||||
lp.log.DEBUG.Printf("detected phases: %dp", phases)
|
||||
lp.log.DEBUG.Printf("detected active phases: %dp", phases)
|
||||
lp.publish(phasesActive, phases)
|
||||
}
|
||||
}
|
||||
|
|
@ -1676,7 +1646,7 @@ func (lp *Loadpoint) updateChargeVoltages() {
|
|||
}
|
||||
|
||||
if phases >= 1 {
|
||||
lp.log.DEBUG.Printf("detected phases: %dp", phases)
|
||||
lp.log.DEBUG.Printf("detected connected phases: %dp", phases)
|
||||
lp.setPhases(phases)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,36 @@ import (
|
|||
"github.com/evcc-io/evcc/api"
|
||||
)
|
||||
|
||||
// setConfiguredPhases sets the default phase configuration
|
||||
func (lp *Loadpoint) setConfiguredPhases(phases int) {
|
||||
lp.Lock()
|
||||
defer lp.Unlock()
|
||||
|
||||
lp.ConfiguredPhases = phases
|
||||
|
||||
// publish 1p3p capability and phase configuration
|
||||
if _, ok := lp.charger.(api.PhaseSwitcher); ok {
|
||||
lp.publish(phasesConfigured, lp.ConfiguredPhases)
|
||||
} else {
|
||||
lp.publish(phasesConfigured, nil)
|
||||
}
|
||||
}
|
||||
|
||||
// setPhases sets the number of enabled phases without modifying the charger
|
||||
func (lp *Loadpoint) setPhases(phases int) {
|
||||
if lp.GetPhases() != phases {
|
||||
lp.Lock()
|
||||
lp.phases = phases
|
||||
lp.Unlock()
|
||||
|
||||
// reset timer to disabled state
|
||||
lp.resetPhaseTimer()
|
||||
|
||||
// measure phases after switching
|
||||
lp.resetMeasuredPhases()
|
||||
}
|
||||
}
|
||||
|
||||
// resetMeasuredPhases resets measured phases to unknown on vehicle disconnect, phase switch or phase api call
|
||||
func (lp *Loadpoint) resetMeasuredPhases() {
|
||||
lp.Lock()
|
||||
|
|
@ -49,7 +79,14 @@ func (lp *Loadpoint) activePhases() int {
|
|||
vehicle := lp.getVehiclePhases()
|
||||
measured := lp.getMeasuredPhases()
|
||||
|
||||
return min(expect(vehicle), expect(physical), expect(measured))
|
||||
active := min(expect(vehicle), expect(physical), expect(measured))
|
||||
|
||||
// sanity check - we should not assume less active phases than actually measured
|
||||
if measured > 0 && active < measured {
|
||||
lp.log.WARN.Printf("phase mismatch between %dp measured for %dp vehicle and %dp charger", measured, vehicle, physical)
|
||||
}
|
||||
|
||||
return active
|
||||
}
|
||||
|
||||
// maxActivePhases returns the maximum number of active phases for the meter.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue