Skip to content

Commit e790af6

Browse files
committed
FoxESS (Modbus): heartbeat: use ensureReg for setpoint writes
Some firmware rejects WriteMultipleRegisters (FC 0x10) with exception 3 when the register already holds the value being written. Use ensureReg in the heartbeat so it skips the write when the setpoint is unchanged, avoiding spurious error logs every 30s.
1 parent fbebc96 commit e790af6

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

charger/foxess-modbus.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ func (wb *FoxESSEVC) heartbeat(ctx context.Context) {
218218
_, err = wb.conn.WriteSingleRegister(foxRegChargingControl, foxChargingStop)
219219
} else if cur != 0 {
220220
if pbox {
221-
err = wb.writeReg(foxRegMaxCurrent, cur)
221+
err = wb.ensureReg(foxRegMaxCurrent, cur)
222222
} else {
223-
err = wb.writeReg(foxRegMaxPower, cur)
223+
err = wb.ensureReg(foxRegMaxPower, cur)
224224
}
225225
}
226226
if err != nil {

0 commit comments

Comments
 (0)