Skip to content

Commit

Permalink
Alfen: add api.PhaseGetter (#13529)
Browse files Browse the repository at this point in the history
  • Loading branch information
andig committed Apr 21, 2024
1 parent bf16e8f commit 5d114e7
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 14 deletions.
21 changes: 17 additions & 4 deletions charger/alfen.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func init() {
registry.Add("alfen", NewAlfenFromConfig)
}

//go:generate go run ../cmd/tools/decorate.go -f decorateAlfen -b *Alfen -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error"
//go:generate go run ../cmd/tools/decorate.go -f decorateAlfen -b *Alfen -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)"

// NewAlfenFromConfig creates a Alfen charger from generic config
func NewAlfenFromConfig(other map[string]interface{}) (api.Charger, error) {
Expand Down Expand Up @@ -93,15 +93,19 @@ func NewAlfen(uri string, slaveID uint8) (api.Charger, error) {

_, v2, v3, err := wb.Voltages()

var phases1p3p func(int) error
var (
phasesS func(int) error
phasesG func() (int, error)
)
if v2 != 0 && v3 != 0 {
wb.log.DEBUG.Println("detected 3p alfen")
phases1p3p = wb.phases1p3p
phasesS = wb.phases1p3p
phasesG = wb.getPhases
} else {
wb.log.DEBUG.Println("detected 1p alfen")
}

return decorateAlfen(wb, phases1p3p), err
return decorateAlfen(wb, phasesS, phasesG), err
}

func (wb *Alfen) heartbeat() {
Expand Down Expand Up @@ -250,3 +254,12 @@ func (wb *Alfen) phases1p3p(phases int) error {
_, err := wb.conn.WriteSingleRegister(alfenRegPhases, uint16(phases))
return err
}

// getPhases implements the api.PhaseGetter interface
func (wb *Alfen) getPhases() (int, error) {
b, err := wb.conn.ReadHoldingRegisters(alfenRegPhases, 1)
if err != nil {
return 0, err
}
return int(binary.BigEndian.Uint16(b)), nil
}
40 changes: 37 additions & 3 deletions charger/alfen_decorators.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion charger/easee.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ func (c *Easee) ProductUpdate(i json.RawMessage) {
case easee.PHASE_MODE:
c.phaseMode = value.(int)
case easee.OUTPUT_PHASE:
c.outputPhase = value.(int) / 10 //API gives 0,10,30 for 0,1,3p
c.outputPhase = value.(int) / 10 // API gives 0,10,30 for 0,1,3p
case easee.DYNAMIC_CHARGER_CURRENT:
c.dynamicChargerCurrent = value.(float64)

Expand Down
3 changes: 1 addition & 2 deletions charger/solax.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,7 @@ func (wb *Solax) Status() (api.ChargeStatus, error) {
7, // "SuspendedEV"
3: // "Finishing"
return api.StatusB, nil
case
2: // "Charging"
case 2: // "Charging"
return api.StatusC, nil
case
6, // "Reserved"
Expand Down
6 changes: 2 additions & 4 deletions charger/sungrow.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,17 +118,15 @@ func (wb *Sungrow) Status() (api.ChargeStatus, error) {
}

switch s := binary.BigEndian.Uint16(b); s {
case
1: // "Idle"
case 1: // "Idle"
return api.StatusA, nil
case
2, // "Standby"
4, // "SuspendedEVSE"
5, // "SuspendedEV"
6: // "Completed"
return api.StatusB, nil
case
3: // "Charging"
case 3: // "Charging"
return api.StatusC, nil
case
7, // "Reserved"
Expand Down

0 comments on commit 5d114e7

Please sign in to comment.