DSMR: allow selectively returning consumption or delivery (#11774)

This commit is contained in:
andig 2024-01-20 10:53:40 +01:00 • committed by GitHub
parent 872bc32279
commit 02214bcdea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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