From 58d946bd474229eb6fa309c2e55c351800cfe89a Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 15 Sep 2020 19:25:39 +0200 Subject: [PATCH] Fix wallbe register decoding for officially unsupported SDM meters --- charger/wallbe.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/charger/wallbe.go b/charger/wallbe.go index 9c7b4c825..2d57c30ae 100644 --- a/charger/wallbe.go +++ b/charger/wallbe.go @@ -175,8 +175,9 @@ func (wb *Wallbe) ChargingTime() (time.Duration, error) { func (wb *Wallbe) decodeReading(b []byte) float64 { v := binary.BigEndian.Uint32(b) + // assuming high register first if wb.encoding == encodingSDM { - bits := (v&0xffff)<<16 | (v>>16)&0xffff + bits := uint32(b[3])<<0 | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 f := math.Float32frombits(bits) return float64(f) }