Auto-detect EVSE meter (#459)

This commit is contained in:
andig 2020-11-20 18:09:53 +01:00 • committed by GitHub
parent 84dd7d8f20
commit eef2f1dc58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

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