diff --git a/charger/charger.go b/charger/charger.go index 8d8cba7fa..a3527e9be 100644 --- a/charger/charger.go +++ b/charger/charger.go @@ -39,26 +39,25 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Charger, error } status, err := provider.NewStringGetterFromConfig(cc.Status) - - var enabled func() (bool, error) - if err == nil { - enabled, err = provider.NewBoolGetterFromConfig(cc.Enabled) - } - - var enable func(bool) error - if err == nil { - enable, err = provider.NewBoolSetterFromConfig("enable", cc.Enable) - } - - var maxcurrent func(int64) error - if err == nil { - maxcurrent, err = provider.NewIntSetterFromConfig("maxcurrent", cc.MaxCurrent) - } - if err != nil { return nil, err } + enabled, err := provider.NewBoolGetterFromConfig(cc.Enabled) + if err != nil { + return nil, fmt.Errorf("enabled: %w", err) + } + + enable, err := provider.NewBoolSetterFromConfig("enable", cc.Enable) + if err != nil { + return nil, fmt.Errorf("enable: %w", err) + } + + maxcurrent, err := provider.NewIntSetterFromConfig("maxcurrent", cc.MaxCurrent) + if err != nil { + return nil, fmt.Errorf("maxcurrent: %w", err) + } + return NewConfigurable(status, enabled, enable, maxcurrent) } diff --git a/meter/meter.go b/meter/meter.go index 2367b2219..d782c34dd 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -36,7 +36,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error) power, err := provider.NewFloatGetterFromConfig(cc.Power) if err != nil { - return nil, err + return nil, fmt.Errorf("power: %w", err) } m, _ := NewConfigurable(power) @@ -45,7 +45,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error) if cc.Energy != nil { m.totalEnergyG, err = provider.NewFloatGetterFromConfig(*cc.Energy) if err != nil { - return nil, err + return nil, fmt.Errorf("energy: %w", err) } } @@ -55,10 +55,10 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error) return nil, errors.New("need 3 currents") } - for _, cc := range cc.Currents { + for idx, cc := range cc.Currents { c, err := provider.NewFloatGetterFromConfig(cc) if err != nil { - return nil, err + return nil, fmt.Errorf("currents[%d]: %w", idx, err) } m.currentsG = append(m.currentsG, c) @@ -69,7 +69,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error) if cc.SoC != nil { m.batterySoCG, err = provider.NewFloatGetterFromConfig(*cc.SoC) if err != nil { - return nil, err + return nil, fmt.Errorf("battery: %w", err) } } diff --git a/provider/calc.go b/provider/calc.go index ea4dc50f0..9b121a646 100644 --- a/provider/calc.go +++ b/provider/calc.go @@ -1,6 +1,8 @@ package provider import ( + "fmt" + "github.com/andig/evcc/util" ) @@ -20,10 +22,10 @@ func NewCalcFromConfig(other map[string]interface{}) (func() (float64, error), e o := &calcProvider{} - for _, cc := range cc.Add { + for idx, cc := range cc.Add { f, err := NewFloatGetterFromConfig(cc) if err != nil { - return nil, err + return nil, fmt.Errorf("add[%d]: %w", idx, err) } o.add = append(o.add, f) } diff --git a/provider/http.go b/provider/http.go index 7e50a9707..07fc36a2f 100644 --- a/provider/http.go +++ b/provider/http.go @@ -71,7 +71,7 @@ func NewHTTPProviderFromConfig(other map[string]interface{}) (*HTTP, error) { // handle basic auth if cc.Auth.Type != "" { if err := NewAuth(log, cc.Auth, p.headers); err != nil { - return nil, err + return nil, fmt.Errorf("http auth: %w", err) } } @@ -83,7 +83,7 @@ func NewHTTPProviderFromConfig(other map[string]interface{}) (*HTTP, error) { if cc.Jq != "" { op, err := gojq.Parse(cc.Jq) if err != nil { - return nil, fmt.Errorf("invalid jq query: %s", p.jq) + return nil, fmt.Errorf("invalid jq query '%s': %w", p.jq, err) } p.jq = op diff --git a/provider/socket.go b/provider/socket.go index eb5f135d8..b835826f6 100644 --- a/provider/socket.go +++ b/provider/socket.go @@ -58,7 +58,7 @@ func NewSocketProviderFromConfig(other map[string]interface{}) (*Socket, error) // handle basic auth if cc.Auth.Type != "" { if err := NewAuth(log, cc.Auth, p.headers); err != nil { - return nil, err + return nil, fmt.Errorf("socket auth: %w", err) } } diff --git a/vehicle/vehicle.go b/vehicle/vehicle.go index dc110db66..a71cd284d 100644 --- a/vehicle/vehicle.go +++ b/vehicle/vehicle.go @@ -61,7 +61,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error getter, err := provider.NewFloatGetterFromConfig(cc.Charge) if err != nil { - return nil, err + return nil, fmt.Errorf("charge: %w", err) } if cc.Cache > 0 { @@ -78,7 +78,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error if cc.Status != nil { v.statusG, err = provider.NewStringGetterFromConfig(*cc.Status) if err != nil { - return nil, err + return nil, fmt.Errorf("status: %w", err) } status = v.status } @@ -88,7 +88,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error if cc.Range != nil { v.rangeG, err = provider.NewIntGetterFromConfig(*cc.Range) if err != nil { - return nil, err + return nil, fmt.Errorf("range: %w", err) } rng = v.rng }