From a55ce941c7df026cadb25fc750501bdb58dcb0a0 Mon Sep 17 00:00:00 2001 From: MarkusGH <34029447+MarkusGH@users.noreply.github.com> Date: Sun, 7 Jan 2024 15:59:26 +0100 Subject: [PATCH] OpenWB 2.0: fix enabled state handling (#11543) --- charger/openwb-2.0.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/charger/openwb-2.0.go b/charger/openwb-2.0.go index 224d5aa0c..86fb4da90 100644 --- a/charger/openwb-2.0.go +++ b/charger/openwb-2.0.go @@ -11,9 +11,10 @@ import ( // OpenWB20 charger implementation type OpenWB20 struct { - conn *modbus.Connection - curr uint16 - base uint16 + conn *modbus.Connection + enabled bool + curr uint16 + base uint16 } const ( @@ -106,12 +107,7 @@ func (wb *OpenWB20) Status() (api.ChargeStatus, error) { // Enabled implements the api.Charger interface func (wb *OpenWB20) Enabled() (bool, error) { - b, err := wb.conn.ReadInputRegisters(wb.base+openwbRegActualAmps, 1) - if err != nil { - return false, err - } - - return binary.BigEndian.Uint16(b) == 1, nil + return verifyEnabled(wb, wb.enabled) } func (wb *OpenWB20) setCurrent(u uint16) error { @@ -125,8 +121,11 @@ func (wb *OpenWB20) Enable(enable bool) error { if enable { u = wb.curr } - - return wb.setCurrent(u) + err := wb.setCurrent(u) + if err == nil { + wb.enabled = enable + } + return err } // MaxCurrent implements the api.Charger interface