diff --git a/meter/zendure/connection.go b/meter/zendure/connection.go index da8194699..f1c7de9fe 100644 --- a/meter/zendure/connection.go +++ b/meter/zendure/connection.go @@ -73,12 +73,10 @@ func (c *Connection) handler(data string) { } c.data.SetFunc(func(v Data) Data { - if err := mergo.Merge(&v, res.Data); err != nil { + if err := mergo.Merge(&v, res.Data, mergo.WithOverride); err != nil { c.log.ERROR.Println(err) } - c.log.TRACE.Printf("!! data: %+v", v) - return v }) } diff --git a/meter/zendure/connection_test.go b/meter/zendure/connection_test.go new file mode 100644 index 000000000..12eb9bfb2 --- /dev/null +++ b/meter/zendure/connection_test.go @@ -0,0 +1,31 @@ +package zendure + +import ( + "testing" + "time" + + "github.com/evcc-io/evcc/util" + "github.com/stretchr/testify/assert" +) + +func TestHandler(t *testing.T) { + conn := &Connection{ + log: util.NewLogger("test"), + data: util.NewMonitor[Data](time.Minute), + } + + { + conn.handler(`{"solarInputPower":113,"sn":"serial"}`) + res, err := conn.data.Get() + assert.NoError(t, err) + + assert.Equal(t, Data{SolarInputPower: 113, Sn: "serial"}, res) + } + { + conn.handler(`{"solarInputPower":125,"sn":"serial"}`) + res, err := conn.data.Get() + assert.NoError(t, err) + + assert.Equal(t, Data{SolarInputPower: 125, Sn: "serial"}, res) + } +}