Add dimming of meters (#24978)

This commit is contained in:
andig 2025-11-02 17:16:19 +01:00 • committed by GitHub
parent 6ef847b05b
commit eea15dc944
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 40 additions and 1 deletions

View file

@ -940,6 +940,10 @@ func (site *Site) update(lp updater) {
}
site.publishCircuits()
if err := site.dimMeters(circuitDimmed(site.circuit)); err != nil {
site.log.ERROR.Println(err)
}
}
// prioritize if possible

View file

@ -1,6 +1,11 @@
package core
import (
"errors"
"fmt"
"slices"
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/core/keys"
"github.com/evcc-io/evcc/util/config"
"github.com/samber/lo"
@ -43,3 +48,33 @@ func (site *Site) publishCircuits() {
site.publish(keys.Circuits, res)
}
func (site *Site) dimMeters(dim bool) error {
var errs error
for _, dev := range slices.Concat(site.auxMeters, site.extMeters) {
m, ok := dev.Instance().(api.Dimmer)
if !ok {
continue
}
if dimmed, err := m.Dimmed(); err == nil {
if dim == dimmed {
continue
}
} else {
if !errors.Is(err, api.ErrNotAvailable) {
errs = errors.Join(errs, fmt.Errorf("%s dimmed: %w", dev.Config().Name, err))
}
continue
}
if err := m.Dim(dim); err == nil {
site.log.DEBUG.Printf("%s dim: %t", dev.Config().Name, dim)
} else if !errors.Is(err, api.ErrNotAvailable) {
errs = errors.Join(errs, fmt.Errorf("%s dim: %w", dev.Config().Name, err))
}
}
return errs
}

View file

@ -275,7 +275,7 @@ func (c *EEBus) Dim(dim bool) error {
defer c.mu.Unlock()
if c.egLpcEntity == nil {
return errors.New("not connected")
return api.ErrNotAvailable
}
if !slices.Contains(c.eg.EgLPCInterface.AvailableScenariosForEntity(c.egLpcEntity), 1) {