From 09d4d7aa9e4bbd828e5e8923b65cbeca5aa19ba4 Mon Sep 17 00:00:00 2001 From: premultiply <4681172+premultiply@users.noreply.github.com> Date: Fri, 19 Sep 2025 21:59:02 +0200 Subject: [PATCH] SMA EM: use export register for energy (#23711) --- meter/sma.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/meter/sma.go b/meter/sma.go index 2298fa728..05dd8f21a 100644 --- a/meter/sma.go +++ b/meter/sma.go @@ -109,6 +109,9 @@ var _ api.MeterEnergy = (*SMA)(nil) // TotalEnergy implements the api.MeterEnergy interface func (sm *SMA) TotalEnergy() (float64, error) { values, err := sm.device.Values() + if sm.scale < 0 { + return sma.AsFloat(values[sunny.ActiveEnergyMinus]) / 3600000, err + } return sma.AsFloat(values[sunny.ActiveEnergyPlus]) / 3600000, err } @@ -130,7 +133,7 @@ func (sm *SMA) Currents() (float64, float64, float64, error) { res[i] = util.SignFromPower(sma.AsFloat(values[id]), powers[i]) } - return res[0], res[1], res[2], err + return sm.scale * res[0], sm.scale * res[1], sm.scale * res[2], err } var _ api.PhaseVoltages = (*SMA)(nil) @@ -161,7 +164,7 @@ func (sm *SMA) Powers() (float64, float64, float64, error) { res[i] -= sma.AsFloat(values[id]) } - return res[0], res[1], res[2], err + return sm.scale * res[0], sm.scale * res[1], sm.scale * res[2], err } // soc implements the api.Battery interface