Add dimming of meters (#24978)
This commit is contained in:
parent
6ef847b05b
commit
eea15dc944
3 changed files with 40 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue