evcc-io/core/site_api.go
2020-11-12 11:53:42 +01:00

64 lines
1.5 KiB
Go

package core
import "github.com/andig/evcc/api"
// SiteAPI is the external site API
type SiteAPI interface {
Healthy() bool
LoadPoints() []LoadPointAPI
LoadPointSettingsAPI
}
// LoadPoints returns the array of associated loadpoints
func (site *Site) LoadPoints() []LoadPointAPI {
res := make([]LoadPointAPI, len(site.loadpoints))
for id, lp := range site.loadpoints {
res[id] = lp
}
return res
}
// GetMode gets loadpoint charge mode
func (site *Site) GetMode() api.ChargeMode {
return site.loadpoints[0].GetMode()
}
// SetMode sets loadpoint charge mode
func (site *Site) SetMode(mode api.ChargeMode) {
site.log.INFO.Printf("set global charge mode: %s", string(mode))
for _, lp := range site.loadpoints {
lp.SetMode(mode)
}
}
// GetTargetSoC gets loadpoint charge target soc
func (site *Site) GetTargetSoC() int {
return site.loadpoints[0].GetTargetSoC()
}
// SetTargetSoC sets loadpoint charge target soc
func (site *Site) SetTargetSoC(soc int) error {
site.log.INFO.Println("set global target soc:", soc)
for _, lp := range site.loadpoints {
if err := lp.SetTargetSoC(soc); err != nil {
return err
}
}
return nil
}
// GetMinSoC gets loadpoint charge minimum soc
func (site *Site) GetMinSoC() int {
return site.loadpoints[0].GetMinSoC()
}
// SetMinSoC sets loadpoint charge minimum soc
func (site *Site) SetMinSoC(soc int) error {
site.log.INFO.Println("set global min soc:", soc)
for _, lp := range site.loadpoints {
if err := lp.SetMinSoC(soc); err != nil {
return err
}
}
return nil
}