mirror of
https://github.com/jpeletier/koolnova2mqtt.git
synced 2026-04-20 11:40:12 +00:00
wz2b fork and retry strategy
This commit is contained in:
1
go.mod
1
go.mod
@@ -9,4 +9,5 @@ require (
|
||||
github.com/goburrow/modbus v0.1.0
|
||||
github.com/goburrow/serial v0.1.0 // indirect
|
||||
github.com/stretchr/testify v1.6.1
|
||||
github.com/wz2b/modbus v0.1.1
|
||||
)
|
||||
|
||||
2
go.sum
2
go.sum
@@ -17,6 +17,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/wz2b/modbus v0.1.1 h1:GB9KEI8r9TDKJLFoEg59nj9FcR5Q6Glg+7EoDG8OFaE=
|
||||
github.com/wz2b/modbus v0.1.1/go.mod h1:p74iuj8ZYGmZpurWLgFN/dw5MAOlQDTCM8veQhH+7GU=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U=
|
||||
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
|
||||
2
main.go
2
main.go
@@ -63,7 +63,7 @@ func main() {
|
||||
DataBits: *modbusDataBits,
|
||||
Parity: *modbusPortParity,
|
||||
StopBits: *modbusStopBits,
|
||||
Timeout: 5 * time.Second,
|
||||
Timeout: 200 * time.Millisecond,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Error initializing modbus: %s", err)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package modbus
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
gmodbus "github.com/goburrow/modbus"
|
||||
gmodbus "github.com/wz2b/modbus"
|
||||
)
|
||||
|
||||
type Modbus interface {
|
||||
@@ -55,9 +56,16 @@ func (mb *modbus) ReadRegister(slaveID byte, address uint16, quantity uint16) (r
|
||||
return nil, err
|
||||
}
|
||||
defer mb.handler.Close()
|
||||
results, err = mb.client.ReadHoldingRegisters(address-1, quantity)
|
||||
retries := 5
|
||||
for retries > 0 {
|
||||
results, err = mb.client.ReadHoldingRegisters(address-1, quantity)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
retries--
|
||||
log.Printf("Warning: Retried read due to %s\n", err)
|
||||
}
|
||||
return results, err
|
||||
|
||||
}
|
||||
|
||||
func (mb *modbus) WriteRegister(slaveID byte, address uint16, value uint16) (results []byte, err error) {
|
||||
@@ -69,7 +77,15 @@ func (mb *modbus) WriteRegister(slaveID byte, address uint16, value uint16) (res
|
||||
return nil, err
|
||||
}
|
||||
defer mb.handler.Close()
|
||||
results, err = mb.client.WriteSingleRegister(address-1, value)
|
||||
retries := 5
|
||||
for retries > 0 {
|
||||
results, err = mb.client.WriteSingleRegister(address-1, value)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
retries--
|
||||
log.Printf("Warning: Retried write due to %s\n", err)
|
||||
}
|
||||
return results, err
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user