diff --git a/charger/evsewifi.go b/charger/evsewifi.go index b0ae64e29..bdda744f5 100644 --- a/charger/evsewifi.go +++ b/charger/evsewifi.go @@ -34,6 +34,7 @@ type EVSEListEntry struct { ActualPower float64 `json:"actualPower"` Duration int64 `json:"duration"` AlwaysActive bool `json:"alwaysActive"` + HasMeter bool `json:"hasMeter"` LastActionUser string `json:"lastActionUser"` LastActionUID string `json:"lastActionUID"` Energy float64 `json:"energy"` @@ -75,6 +76,13 @@ func NewEVSEWifiFromConfig(other map[string]interface{}) (api.Charger, error) { return evse, err } + // auto-detect EVSE meter + if meter, err := evse.HasMeter(); meter && err == nil { + cc.Meter.Energy = true + cc.Meter.Energy = true + cc.Meter.Currents = true + } + // decorate Charger with Meter var currentPower func() (float64, error) if cc.Meter.Energy { @@ -139,6 +147,12 @@ func (evse *EVSEWifi) getParameters() (EVSEListEntry, error) { return params, nil } +// HasMeter returns the useMeter api response +func (evse *EVSEWifi) HasMeter() (bool, error) { + params, err := evse.getParameters() + return params.HasMeter, err +} + // Status implements the Charger.Status interface func (evse *EVSEWifi) Status() (api.ChargeStatus, error) { params, err := evse.getParameters()