Fix yaml meters added to dynamic config (#12030)
This commit is contained in:
parent
111b032778
commit
7e37fb4a8f
3 changed files with 43 additions and 6 deletions
|
|
@ -32,9 +32,10 @@ const (
|
|||
Vehicles = "vehicles"
|
||||
|
||||
// meters
|
||||
BatteryMeters = "batteryMeters"
|
||||
GridMeter = "GridMeter"
|
||||
GridMeter = "gridMeter"
|
||||
PvMeters = "pvMeters"
|
||||
BatteryMeters = "batteryMeters"
|
||||
AuxMeters = "auxMeters"
|
||||
|
||||
// battery settings
|
||||
BatteryCapacity = "batteryCapacity"
|
||||
|
|
|
|||
|
|
@ -247,6 +247,9 @@ func (site *Site) restoreMeters() {
|
|||
if v, err := settings.String(keys.BatteryMeters); err == nil && v != "" {
|
||||
site.Meters.BatteryMetersRef = append(site.Meters.BatteryMetersRef, strings.Split(v, ",")...)
|
||||
}
|
||||
if v, err := settings.String(keys.AuxMeters); err == nil && v != "" {
|
||||
site.Meters.AuxMetersRef = append(site.Meters.AuxMetersRef, strings.Split(v, ",")...)
|
||||
}
|
||||
}
|
||||
|
||||
// restoreSettings restores site settings
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import (
|
|||
"github.com/evcc-io/evcc/core/loadpoint"
|
||||
"github.com/evcc-io/evcc/core/site"
|
||||
"github.com/evcc-io/evcc/server/db/settings"
|
||||
"github.com/evcc-io/evcc/util/config"
|
||||
)
|
||||
|
||||
var _ site.API = (*Site)(nil)
|
||||
|
|
@ -21,6 +22,24 @@ const (
|
|||
PlannerTariff = "planner"
|
||||
)
|
||||
|
||||
// isConfigurable checks if the meter is configurable
|
||||
func isConfigurable(ref string) bool {
|
||||
dev, _ := config.Meters().ByName(ref)
|
||||
_, ok := dev.(config.ConfigurableDevice[api.Meter])
|
||||
return ok
|
||||
}
|
||||
|
||||
// filterConfigurable filters configurable meters
|
||||
func filterConfigurable(ref []string) []string {
|
||||
var res []string
|
||||
for _, r := range ref {
|
||||
if isConfigurable(r) {
|
||||
res = append(res, r)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
// GetTitle returns the title
|
||||
func (site *Site) GetTitle() string {
|
||||
site.RLock()
|
||||
|
|
@ -68,8 +87,7 @@ func (site *Site) SetPVMeterRefs(ref []string) {
|
|||
defer site.Unlock()
|
||||
|
||||
site.Meters.PVMetersRef = ref
|
||||
// site.publish("siteGridMeterRef", meter)
|
||||
settings.SetString(keys.PvMeters, strings.Join(ref, ","))
|
||||
settings.SetString(keys.PvMeters, strings.Join(filterConfigurable(ref), ","))
|
||||
}
|
||||
|
||||
// GetBatteryMeterRefs returns the BatteryMeterRef
|
||||
|
|
@ -85,8 +103,23 @@ func (site *Site) SetBatteryMeterRefs(ref []string) {
|
|||
defer site.Unlock()
|
||||
|
||||
site.Meters.BatteryMetersRef = ref
|
||||
// site.publish("siteGridMeterRef", meter)
|
||||
settings.SetString(keys.BatteryMeters, strings.Join(ref, ","))
|
||||
settings.SetString(keys.BatteryMeters, strings.Join(filterConfigurable(ref), ","))
|
||||
}
|
||||
|
||||
// GetAuxMeterRefs returns the AuxMeterRef
|
||||
func (site *Site) GetAuxMeterRefs() []string {
|
||||
site.RLock()
|
||||
defer site.RUnlock()
|
||||
return site.Meters.AuxMetersRef
|
||||
}
|
||||
|
||||
// SetAuxMeterRefs sets the AuxMeterRef
|
||||
func (site *Site) SetAuxMeterRefs(ref []string) {
|
||||
site.Lock()
|
||||
defer site.Unlock()
|
||||
|
||||
site.Meters.AuxMetersRef = ref
|
||||
settings.SetString(keys.AuxMeters, strings.Join(filterConfigurable(ref), ","))
|
||||
}
|
||||
|
||||
// Loadpoints returns the list loadpoints
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue