From d18d895a08dc5cc0ba11aa76e64ab11540d7bfdd Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 5 Mar 2022 12:15:44 +0100 Subject: [PATCH] Modbus: streamline tcp configuration (#2783) --- charger/alfen.go | 2 +- charger/amtron.go | 2 +- charger/cfos.go | 5 +---- charger/innogy.go | 5 +---- charger/vestel.go | 9 +++------ charger/webasto.go | 8 ++++---- meter/cfos.go | 7 +++---- util/modbus/modbus.go | 6 ++++++ 8 files changed, 20 insertions(+), 24 deletions(-) diff --git a/charger/alfen.go b/charger/alfen.go index be4716e9d..427654737 100644 --- a/charger/alfen.go +++ b/charger/alfen.go @@ -58,7 +58,7 @@ func init() { // NewAlfenFromConfig creates a Alfen charger from generic config func NewAlfenFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := modbus.Settings{ + cc := modbus.TcpSettings{ ID: 1, } diff --git a/charger/amtron.go b/charger/amtron.go index 36aecedf5..f1bb58949 100644 --- a/charger/amtron.go +++ b/charger/amtron.go @@ -50,7 +50,7 @@ func init() { // NewAmtronFromConfig creates a Mennekes Amtron charger from generic config func NewAmtronFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := modbus.Settings{ + cc := modbus.TcpSettings{ ID: 0xff, } diff --git a/charger/cfos.go b/charger/cfos.go index 08b37cba1..a4a501ab8 100644 --- a/charger/cfos.go +++ b/charger/cfos.go @@ -28,10 +28,7 @@ func init() { // NewCfosPowerBrainFromConfig creates a cFos charger from generic config func NewCfosPowerBrainFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := struct { - URI string - ID uint8 - }{ + cc := modbus.TcpSettings{ ID: 1, } diff --git a/charger/innogy.go b/charger/innogy.go index f24f47f99..46acdb888 100644 --- a/charger/innogy.go +++ b/charger/innogy.go @@ -56,10 +56,7 @@ func init() { // NewInnogyFromConfig creates a Innogy charger from generic config func NewInnogyFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := struct { - URI string - ID uint8 - }{ + cc := modbus.TcpSettings{ ID: 1, } diff --git a/charger/vestel.go b/charger/vestel.go index 15ac62c1c..e642ca5a3 100644 --- a/charger/vestel.go +++ b/charger/vestel.go @@ -60,10 +60,7 @@ func init() { // NewVestelFromConfig creates a Vestel charger from generic config func NewVestelFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := struct { - URI string - ID uint8 - }{ + cc := modbus.TcpSettings{ ID: 255, } @@ -75,8 +72,8 @@ func NewVestelFromConfig(other map[string]interface{}) (api.Charger, error) { } // NewVestel creates a Vestel charger -func NewVestel(uri string, slaveID uint8) (*Vestel, error) { - conn, err := modbus.NewConnection(uri, "", "", 0, modbus.Tcp, slaveID) +func NewVestel(uri string, id uint8) (*Vestel, error) { + conn, err := modbus.NewConnection(uri, "", "", 0, modbus.Tcp, id) if err != nil { return nil, err } diff --git a/charger/webasto.go b/charger/webasto.go index 81b784621..0c2aaf31c 100644 --- a/charger/webasto.go +++ b/charger/webasto.go @@ -85,7 +85,7 @@ func init() { // NewWebastoLiveFromConfig creates a WebastoLive charger from generic config func NewWebastoLiveFromConfig(other map[string]interface{}) (api.Charger, error) { - cc := modbus.Settings{ + cc := modbus.TcpSettings{ ID: 255, } @@ -93,12 +93,12 @@ func NewWebastoLiveFromConfig(other map[string]interface{}) (api.Charger, error) return nil, err } - return NewWebastoLive(cc.URI, cc.Device, cc.Comset, cc.Baudrate, modbus.ProtocolFromRTU(cc.RTU), cc.ID) + return NewWebastoLive(cc.URI, cc.ID) } // NewWebastoLive creates WebastoLive charger -func NewWebastoLive(uri, device, comset string, baudrate int, proto modbus.Protocol, slaveID uint8) (api.Charger, error) { - conn, err := modbus.NewConnection(uri, device, comset, baudrate, proto, slaveID) +func NewWebastoLive(uri string, id uint8) (api.Charger, error) { + conn, err := modbus.NewConnection(uri, "", "", 0, modbus.Tcp, id) if err != nil { return nil, err } diff --git a/meter/cfos.go b/meter/cfos.go index ae24bfcb1..d84a04a57 100644 --- a/meter/cfos.go +++ b/meter/cfos.go @@ -28,10 +28,9 @@ func init() { // NewCfosPowerBrainFromConfig creates a cFos meter from generic config func NewCfosPowerBrainFromConfig(other map[string]interface{}) (api.Meter, error) { - cc := struct { - URI string - ID uint8 - }{} + cc := modbus.TcpSettings{ + ID: 1, + } if err := util.DecodeOther(other, &cc); err != nil { return nil, err diff --git a/util/modbus/modbus.go b/util/modbus/modbus.go index deb38757f..0e2cd0bda 100644 --- a/util/modbus/modbus.go +++ b/util/modbus/modbus.go @@ -24,6 +24,12 @@ const ( CoilOn uint16 = 0xFF00 ) +// Settings contains the ModBus TCP settings +type TcpSettings struct { + URI string + ID uint8 +} + // Settings contains the ModBus settings type Settings struct { ID uint8