From fa527dff6f339598bf8c622b25604a9e225f78a8 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 9 May 2021 10:55:42 +0200 Subject: [PATCH] Allow charger to access loadpoint by implementing core.LoadpointController (#922) --- core/loadpoint.go | 5 +++++ core/loadpoint_api.go | 5 +++++ internal/charger/easee.go | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/core/loadpoint.go b/core/loadpoint.go index 5ad6cc2b6f..a47c62c84a 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -426,6 +426,11 @@ func (lp *LoadPoint) Prepare(uiChan chan<- util.Param, pushChan chan<- push.Even } else { lp.log.ERROR.Printf("charger error: %v", err) } + + // allow charger to access loadpoint + if ctrl, ok := lp.charger.(LoadpointController); ok { + ctrl.LoadpointControl(lp) + } } func (lp *LoadPoint) syncCharger() { diff --git a/core/loadpoint_api.go b/core/loadpoint_api.go index 2cfa07cf75..d7e81909c6 100644 --- a/core/loadpoint_api.go +++ b/core/loadpoint_api.go @@ -7,6 +7,11 @@ import ( "github.com/andig/evcc/core/wrapper" ) +// LoadpointController gives access to loadpoint +type LoadpointController interface { + LoadpointControl(LoadPointAPI) +} + // LoadPointAPI is the external loadpoint API type LoadPointAPI interface { Name() string diff --git a/internal/charger/easee.go b/internal/charger/easee.go index dc4d1eebcf..91f7df7871 100644 --- a/internal/charger/easee.go +++ b/internal/charger/easee.go @@ -22,6 +22,7 @@ type Easee struct { status easee.ChargerStatus updated time.Time cache time.Duration + lp core.LoadPointAPI } func init() { @@ -257,3 +258,10 @@ func (c *Easee) Currents() (float64, float64, float64, error) { res.CircuitTotalPhaseConductorCurrentL3, err } + +var _ core.LoadpointController = (*Easee)(nil) + +// LoadpointControl implements core.LoadpointController +func (c *Easee) LoadpointControl(lp core.LoadPointAPI) { + c.lp = lp +}