diff --git a/charger/heatpump.go b/charger/heatpump.go index e2b24ae38..9b5790fac 100644 --- a/charger/heatpump.go +++ b/charger/heatpump.go @@ -22,6 +22,7 @@ import ( "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/charger/measurement" + "github.com/evcc-io/evcc/core/loadpoint" "github.com/evcc-io/evcc/plugin" "github.com/evcc-io/evcc/util" ) @@ -29,7 +30,7 @@ import ( // Heatpump charger implementation type Heatpump struct { *embed - phases int + lp loadpoint.API power int64 maxPowerG func() (int64, error) maxPowerS func(int64) error @@ -49,13 +50,11 @@ func NewHeatpumpFromConfig(ctx context.Context, other map[string]interface{}) (a GetMaxPower *plugin.Config // optional measurement.Temperature `mapstructure:",squash"` measurement.Energy `mapstructure:",squash"` - Phases int }{ embed: embed{ Icon_: "heatpump", Features_: []api.Feature{api.Heating, api.IntegratedDevice}, }, - Phases: 1, } if err := util.DecodeOther(other, &cc); err != nil { @@ -76,7 +75,7 @@ func NewHeatpumpFromConfig(ctx context.Context, other map[string]interface{}) (a // return nil, api.ErrSponsorRequired // } - res, err := NewHeatpump(ctx, &cc.embed, maxPowerS, maxPowerG, cc.Phases) + res, err := NewHeatpump(ctx, &cc.embed, maxPowerS, maxPowerG) if err != nil { return nil, err } @@ -95,12 +94,11 @@ func NewHeatpumpFromConfig(ctx context.Context, other map[string]interface{}) (a } // NewHeatpump creates heatpump charger -func NewHeatpump(ctx context.Context, embed *embed, maxPowerS func(int64) error, maxPowerG func() (int64, error), phases int) (*Heatpump, error) { +func NewHeatpump(ctx context.Context, embed *embed, maxPowerS func(int64) error, maxPowerG func() (int64, error)) (*Heatpump, error) { res := &Heatpump{ embed: embed, maxPowerG: maxPowerG, maxPowerS: maxPowerS, - phases: phases, } return res, nil @@ -155,5 +153,16 @@ func (wb *Heatpump) MaxCurrent(current int64) error { // MaxCurrent implements the api.Charger interface func (wb *Heatpump) MaxCurrentEx(current float64) error { - return wb.setMaxPower(int64(230 * current * float64(wb.phases))) + phases := 1 + if wb.lp != nil { + phases = wb.lp.GetPhases() + } + return wb.setMaxPower(int64(230 * current * float64(phases))) +} + +var _ loadpoint.Controller = (*Heatpump)(nil) + +// LoadpointControl implements loadpoint.Controller +func (wb *Heatpump) LoadpointControl(lp loadpoint.API) { + wb.lp = lp } diff --git a/charger/vaillant.go b/charger/vaillant.go index d12c58e88..d02d169b6 100644 --- a/charger/vaillant.go +++ b/charger/vaillant.go @@ -53,16 +53,14 @@ func NewVaillantFromConfig(ctx context.Context, other map[string]interface{}) (a Realm string HeatingZone int HeatingSetpoint float32 - Phases int Cache time.Duration }{ embed: embed{ Icon_: "heatpump", Features_: []api.Feature{api.Heating, api.IntegratedDevice}, }, - Realm: sensonet.REALM_GERMANY, - Phases: 1, - Cache: time.Minute, + Realm: sensonet.REALM_GERMANY, + Cache: time.Minute, } if err := util.DecodeOther(other, &cc); err != nil { diff --git a/templates/definition/charger/idm.yaml b/templates/definition/charger/idm.yaml index a565fc1a6..dda225eaf 100644 --- a/templates/definition/charger/idm.yaml +++ b/templates/definition/charger/idm.yaml @@ -14,11 +14,9 @@ params: de: "Temperaturquelle" en: "Temperature source" - name: phases - type: int - advanced: true + deprecated: true render: | type: heatpump - phases: {{ .phases }} setmaxpower: source: modbus {{- include "modbus" . | indent 2 }} diff --git a/templates/definition/charger/lambda-zewotherm.yaml b/templates/definition/charger/lambda-zewotherm.yaml index 8f2dd713e..199901893 100644 --- a/templates/definition/charger/lambda-zewotherm.yaml +++ b/templates/definition/charger/lambda-zewotherm.yaml @@ -21,11 +21,9 @@ params: de: "Temperaturquelle" en: "Temperature source" - name: phases - type: int - advanced: true + deprecated: true render: | type: heatpump - phases: {{ .phases }} setmaxpower: source: modbus {{- include "modbus" . | indent 2 }} diff --git a/templates/definition/charger/vaillant.yaml b/templates/definition/charger/vaillant.yaml index 56469ee4d..18cd14f39 100644 --- a/templates/definition/charger/vaillant.yaml +++ b/templates/definition/charger/vaillant.yaml @@ -23,12 +23,10 @@ params: de: Boost Temperatur en: Boost temperature setpoint - name: phases - type: int - advanced: true + deprecated: true render: | type: vaillant user: {{ .user }} password: {{ .password }} heatingzone: {{ .zone }} heatingsetpoint: {{ .setpoint }} - phases: {{ .phases }}