diff --git a/meter/sma.go b/meter/sma.go index 3ebc0d61a..c412a7653 100644 --- a/meter/sma.go +++ b/meter/sma.go @@ -109,7 +109,10 @@ func (sm *SMA) receive() { sm.updated = time.Now() } } else if power, ok := msg.Values[sma.ExportPower]; ok { - sm.power = -power + sm.power = 0 + if power > 0 { + sm.power = -power + } sm.updated = time.Now() } else if power, ok := msg.Values[sma.ImportPower]; ok { sm.power = power diff --git a/meter/sma/listener.go b/meter/sma/listener.go index c97e24de1..9297ca233 100644 --- a/meter/sma/listener.go +++ b/meter/sma/listener.go @@ -157,6 +157,8 @@ func (l *Listener) processMessage(src *net.UDPAddr, b []byte) (Telegram, error) Values: obisValues, } + // l.log.TRACE.Printf("recv %v", msg.Values) + return msg, nil } diff --git a/meter/sma/listener_test.go b/meter/sma/listener_test.go index 1d92af471..56b0552ab 100644 --- a/meter/sma/listener_test.go +++ b/meter/sma/listener_test.go @@ -4,6 +4,8 @@ import ( "net" "reflect" "testing" + + "github.com/andig/evcc/util" ) func TestListenerProcessMessage(t *testing.T) { @@ -186,7 +188,9 @@ func TestListenerProcessMessage(t *testing.T) { } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - l := &Listener{} + l := &Listener{ + log: util.NewLogger("sma "), + } buffer := tc.response read := len(buffer)