Skip to content

Commit

Permalink
Fix combined status provider
Browse files Browse the repository at this point in the history
  • Loading branch information
andig committed Oct 12, 2024
1 parent f6865e4 commit 2b525cf
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 21 deletions.
5 changes: 4 additions & 1 deletion charger/openwb.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
43 changes: 23 additions & 20 deletions provider/combined.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -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
}

0 comments on commit 2b525cf

Please sign in to comment.