diff --git a/meter/rct.go b/meter/rct.go index c4bd57f4a..3235094c7 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -40,9 +40,11 @@ func NewRCTFromConfig(ctx context.Context, other map[string]interface{}) (api.Me capacity `mapstructure:",squash"` Uri, Usage string MinSoc, MaxSoc int + MaxChargePower int Cache time.Duration }{ - Cache: 30 * time.Second, + MaxChargePower: 10000, + Cache: 30 * time.Second, } if err := util.DecodeOther(other, &cc); err != nil { @@ -53,11 +55,11 @@ func NewRCTFromConfig(ctx context.Context, other map[string]interface{}) (api.Me return nil, errors.New("missing usage") } - return NewRCT(ctx, cc.Uri, cc.Usage, cc.MinSoc, cc.MaxSoc, cc.Cache, cc.capacity.Decorator()) + return NewRCT(ctx, cc.Uri, cc.Usage, cc.MinSoc, cc.MaxSoc, cc.MaxChargePower, cc.Cache, cc.capacity.Decorator()) } // NewRCT creates an RCT meter -func NewRCT(ctx context.Context, uri, usage string, minSoc, maxSoc int, cache time.Duration, capacity func() float64) (api.Meter, error) { +func NewRCT(ctx context.Context, uri, usage string, minSoc, maxSoc, maxchargepower int, cache time.Duration, capacity func() float64) (api.Meter, error) { log := util.NewLogger("rct") // re-use connections @@ -133,7 +135,7 @@ func NewRCT(ctx context.Context, uri, usage string, minSoc, maxSoc int, cache ti return err } - if err := m.conn.Write(rct.PowerMngBatteryPowerExternW, m.floatVal(float32(-10_000))); err != nil { + if err := m.conn.Write(rct.PowerMngBatteryPowerExternW, m.floatVal(float32(-maxchargepower))); err != nil { return err } diff --git a/templates/definition/meter/rct-power.yaml b/templates/definition/meter/rct-power.yaml index 495d8b6c1..66b5421aa 100644 --- a/templates/definition/meter/rct-power.yaml +++ b/templates/definition/meter/rct-power.yaml @@ -23,6 +23,7 @@ params: - name: cache advanced: true default: 30s + - name: maxchargepower render: | type: rct uri: {{ .host }} @@ -31,3 +32,4 @@ render: | capacity: {{ .capacity }} # kWh minsoc: {{ .minsoc }} maxsoc: {{ .maxsoc }} + maxchargepower: {{ .maxchargepower }}