Add support for smart loads (#6119)
This commit is contained in:
parent
679c435f74
commit
b8c9399cb0
3 changed files with 30 additions and 2 deletions
21
core/site.go
21
core/site.go
|
|
@ -63,6 +63,7 @@ type Site struct {
|
|||
gridMeter api.Meter // Grid usage meter
|
||||
pvMeters []api.Meter // PV generation meters
|
||||
batteryMeters []api.Meter // Battery charging meters
|
||||
loadMeter api.Meter // Smart load meter
|
||||
|
||||
tariffs tariff.Tariffs // Tariff
|
||||
loadpoints []*Loadpoint // Loadpoints
|
||||
|
|
@ -86,6 +87,7 @@ type MetersConfig struct {
|
|||
PVMetersRef []string `mapstructure:"pvs"` // Multiple PV meters
|
||||
BatteryMeterRef string `mapstructure:"battery"` // Battery charging meter
|
||||
BatteryMetersRef []string `mapstructure:"batteries"` // Multiple Battery charging meters
|
||||
SmartLoadRef string `mapstructure:"smart"` // Smart loads meter
|
||||
}
|
||||
|
||||
// NewSiteFromConfig creates a new site
|
||||
|
|
@ -198,6 +200,14 @@ func NewSiteFromConfig(
|
|||
site.batteryMeters = append(site.batteryMeters, battery)
|
||||
}
|
||||
|
||||
// smart load meter
|
||||
if site.Meters.SmartLoadRef != "" {
|
||||
var err error
|
||||
if site.loadMeter, err = cp.Meter(site.Meters.SmartLoadRef); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// configure meter from references
|
||||
if site.gridMeter == nil && len(site.pvMeters) == 0 {
|
||||
return nil, errors.New("missing either grid or pv meter")
|
||||
|
|
@ -552,6 +562,17 @@ func (site *Site) sitePower(totalChargePower float64) (float64, error) {
|
|||
|
||||
sitePower := sitePower(site.log, site.MaxGridSupplyWhileBatteryCharging, site.gridPower, batteryPower, site.ResidualPower)
|
||||
|
||||
// deduct smart loads
|
||||
if site.loadMeter != nil {
|
||||
if power, err := site.loadMeter.CurrentPower(); err != nil {
|
||||
site.log.ERROR.Printf("smart load meter: %v", err)
|
||||
} else {
|
||||
site.log.DEBUG.Printf("smart load power: %.0fW", power)
|
||||
site.publish("smartLoadPower", power)
|
||||
sitePower -= power
|
||||
}
|
||||
}
|
||||
|
||||
site.log.DEBUG.Printf("site power: %.0fW", sitePower)
|
||||
|
||||
return sitePower, nil
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ meters:
|
|||
type: ...
|
||||
- name: charge
|
||||
type: ...
|
||||
- name: smart
|
||||
type: ...
|
||||
|
||||
# charger definitions
|
||||
# name can be freely chosen and is used as reference when assigning charger to vehicle
|
||||
|
|
@ -103,7 +105,9 @@ site:
|
|||
grid: grid # grid meter
|
||||
pvs:
|
||||
- pv # list of pv inverters/ meters
|
||||
battery: battery # battery meter
|
||||
batteries:
|
||||
- battery # list of battery meters
|
||||
smart: smart # additional smart loads meter
|
||||
prioritySoc: # give home battery priority up to this soc (empty to disable)
|
||||
bufferSoc: # ignore home battery discharge above soc (empty to disable)
|
||||
|
||||
|
|
|
|||
|
|
@ -176,6 +176,9 @@
|
|||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"smart": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -326,4 +329,4 @@
|
|||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue