From b70ab2792806591dcb9b8eb4e3ca58008306221c Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 8 Aug 2026 15:15:41 +0200 Subject: [PATCH] Shelly: query return energy support once (#32644) --- meter/shelly.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/meter/shelly.go b/meter/shelly.go index 4801e80c1..35568f960 100644 --- a/meter/shelly.go +++ b/meter/shelly.go @@ -49,15 +49,18 @@ func NewShellyFromConfig(other map[string]any) (api.Meter, error) { // making their totals unsuitable for bidirectional grid metering. if !(c.usage == "grid" && c.conn.IsThreePhase()) { total, ret := c.conn.TotalEnergy, c.conn.ReturnEnergy + + hasReturn := c.conn.HasReturnEnergy() + // production is measured in return direction, unless the device has no return // register at all or already reverses the direction itself - if c.usage == "pv" && c.conn.HasReturnEnergy() && !c.conn.IsReversed() { + if c.usage == "pv" && hasReturn && !c.conn.IsReversed() { total, ret = ret, total } implement.Has(c, implement.MeterEnergy(total)) // without a return register the second reading is a constant zero - if c.conn.HasReturnEnergy() { + if hasReturn { implement.Has(c, implement.MeterReturnEnergy(ret)) } }