Add support for smart loads (#6119)

This commit is contained in:
andig 2023-02-09 09:07:40 +01:00 • committed by GitHub
parent 679c435f74
commit b8c9399cb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 2 deletions

View file

@ -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

View file

@ -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)

View file

@ -176,6 +176,9 @@
},
"minItems": 1,
"uniqueItems": true
},
"smart": {
"type": "string"
}
}
},
@ -326,4 +329,4 @@
]
}
}
}
}