From 2b525cf8f614917199d4a666885d14cb8bc2c88b Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 12 Oct 2024 12:20:22 +0200 Subject: [PATCH] Fix combined status provider --- charger/openwb.go | 5 ++++- provider/combined.go | 43 +++++++++++++++++++++++-------------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/charger/openwb.go b/charger/openwb.go index 8856fc5280..0f41816c91 100644 --- a/charger/openwb.go +++ b/charger/openwb.go @@ -91,7 +91,10 @@ func NewOpenWB(log *util.Logger, mqttconf mqtt.Config, id int, topic string, p1p if err != nil { return nil, err } - statusG := provider.NewCombinedProvider(pluggedG, chargingG).StringGetter + statusG, err := provider.NewCombinedProvider(pluggedG, chargingG).StringGetter() + if err != nil { + return nil, err + } // setters currentTopic := openwb.SlaveChargeCurrentTopic diff --git a/provider/combined.go b/provider/combined.go index 05e9c982bd..508ede928c 100644 --- a/provider/combined.go +++ b/provider/combined.go @@ -28,12 +28,11 @@ func NewCombinedFromConfig(ctx context.Context, other map[string]interface{}) (P } plugged, err := NewBoolGetterFromConfig(ctx, cc.Plugged) - - var charging func() (bool, error) - if err == nil { - charging, err = NewBoolGetterFromConfig(ctx, cc.Charging) + if err != nil { + return nil, err } + charging, err := NewBoolGetterFromConfig(ctx, cc.Charging) if err != nil { return nil, err } @@ -51,23 +50,27 @@ func NewCombinedProvider(plugged, charging func() (bool, error)) *combinedProvid } } +var _ StringProvider = (*combinedProvider)(nil) + // StringGetter returns string from OpenWB charging/ plugged status -func (o *combinedProvider) StringGetter() (string, error) { - charging, err := o.charging() - if err != nil { - return "", err - } - if charging { - return string(api.StatusC), nil - } +func (o *combinedProvider) StringGetter() (func() (string, error), error) { + return func() (string, error) { + charging, err := o.charging() + if err != nil { + return "", err + } + if charging { + return string(api.StatusC), nil + } - plugged, err := o.plugged() - if err != nil { - return "", err - } - if plugged { - return string(api.StatusB), nil - } + plugged, err := o.plugged() + if err != nil { + return "", err + } + if plugged { + return string(api.StatusB), nil + } - return string(api.StatusA), nil + return string(api.StatusA), nil + }, nil }