From 0fd07134bef1d1192e60e4e431409c26998cf5f6 Mon Sep 17 00:00:00 2001 From: premultiply <4681172+premultiply@users.noreply.github.com> Date: Tue, 3 Feb 2026 14:22:40 +0100 Subject: [PATCH] ChargeX: fix phase state reg type (#27199) --- charger/chargex.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/charger/chargex.go b/charger/chargex.go index 9906b6d1c..4b0d6fd6c 100644 --- a/charger/chargex.go +++ b/charger/chargex.go @@ -120,7 +120,7 @@ func (wb *ChargeX) setCurrent(current float64) error { return err } - state := binary.BigEndian.Uint16(b) + state := binary.BigEndian.Uint32(b) // Bit 1: ChMode - 0=single phase, 1=3 phase phases := 3 if (state & (1 << 1)) == 0 { @@ -128,7 +128,10 @@ func (wb *ChargeX) setCurrent(current float64) error { } b = make([]byte, 4) - binary.BigEndian.PutUint32(b, uint32(230*current*float64(phases))) + targetPower := uint32(230 * current * float64(phases)) + binary.BigEndian.PutUint32(b, targetPower) + + wb.log.DEBUG.Printf("set charge power: %dW (%.1fA, %dp)", targetPower, current, phases) _, err = wb.conn.WriteMultipleRegisters(chargexRegTargetPower, 2, b) return err