diff --git a/meter/dsmr.go b/meter/dsmr.go index 5bac99091..561d7b732 100644 --- a/meter/dsmr.go +++ b/meter/dsmr.go @@ -250,14 +250,16 @@ func (m *Dsmr) get(id string) (float64, error) { // CurrentPower implements the api.Meter interface func (m *Dsmr) CurrentPower() (float64, error) { - bezug, err := m.get("1-0:1.7.0") + bezug, err1 := m.get("1-0:1.7.0") + lief, err2 := m.get("1-0:2.7.0") - var lief float64 - if err == nil { - lief, err = m.get("1-0:2.7.0") + // allow one value to be missing + if err1 == nil && errors.Is(err2, api.ErrNotAvailable) || err2 == nil && errors.Is(err1, api.ErrNotAvailable) { + err1 = nil + err2 = nil } - return (bezug - lief) * 1e3, err + return (bezug - lief) * 1e3, errors.Join(err1, err2) } // totalEnergy implements the api.MeterEnergy interface