diff --git a/charger/phoenix-emcp.go b/charger/phoenix-emcp.go index 3306cb5c4..60fa9ce64 100644 --- a/charger/phoenix-emcp.go +++ b/charger/phoenix-emcp.go @@ -2,6 +2,7 @@ package charger import ( "fmt" + "net" "time" "github.com/andig/evcc/api" @@ -17,7 +18,7 @@ const ( ) // PhoenixEMCP is an api.ChargeController implementation for Phoenix EM-CP-PP-ETH wallboxes. -// It uses Modbus TCP to communicate with the wallbox at modbus client id 255. +// It uses Modbus TCP to communicate with the wallbox at modbus client id 180. type PhoenixEMCP struct { log *util.Logger client modbus.Client @@ -32,8 +33,13 @@ func NewPhoenixEMCPFromConfig(log *util.Logger, other map[string]interface{}) ap }{} util.DecodeOther(log, other, &cc) + if _, _, err := net.SplitHostPort(cc.URI); err != nil { + log.FATAL.Printf("config: missing or invalid phoenix EM-CP uri: %s", cc.URI) + } + if cc.ID == 0 { - log.FATAL.Fatal("config: missing slave id") + cc.ID = 180 + log.WARN.Printf("config: missing phoenix EM-CP slave id, assuming default %d", cc.ID) } return NewPhoenixEMCP(cc.URI, cc.ID) diff --git a/charger/phoenix-evcc.go b/charger/phoenix-evcc.go index 7a5dbac3a..8be102c02 100644 --- a/charger/phoenix-evcc.go +++ b/charger/phoenix-evcc.go @@ -30,7 +30,8 @@ func NewPhoenixEVCCFromConfig(log *util.Logger, other map[string]interface{}) ap util.DecodeOther(log, other, &cc) if cc.ID == 0 { - log.FATAL.Fatal("config: missing slave id") + cc.ID = 255 + log.WARN.Printf("config: missing phoenix EV-CC slave id, assuming default %d", cc.ID) } return NewPhoenixEVCC(cc.URI, cc.Device, cc.Comset, cc.Baudrate, cc.ID) diff --git a/charger/wallbe.go b/charger/wallbe.go index 12849bcd8..457984b39 100644 --- a/charger/wallbe.go +++ b/charger/wallbe.go @@ -3,6 +3,7 @@ package charger import ( "encoding/binary" "fmt" + "net" "time" "github.com/andig/evcc/api" @@ -42,6 +43,11 @@ func NewWallbeFromConfig(log *util.Logger, other map[string]interface{}) *Wallbe }{} util.DecodeOther(log, other, &cc) + if _, _, err := net.SplitHostPort(cc.URI); err != nil { + cc.URI = "192.168.0.8:502" + log.WARN.Printf("config: missing or invalid wallbe uri, using default %s", cc.URI) + } + wb := NewWallbe(cc.URI) if cc.Legacy { @@ -53,10 +59,6 @@ func NewWallbeFromConfig(log *util.Logger, other map[string]interface{}) *Wallbe // NewWallbe creates a Wallbe charger func NewWallbe(conn string) *Wallbe { - if conn == "" { - conn = "192.168.0.8:502" - } - handler := modbus.NewTCPClientHandler(conn) client := modbus.NewClient(handler) diff --git a/charger/wallbe_test.go b/charger/wallbe_test.go index 7fd22f26b..d3a31a08a 100644 --- a/charger/wallbe_test.go +++ b/charger/wallbe_test.go @@ -1,15 +1,19 @@ package charger -import "testing" +import ( + "testing" + + "github.com/andig/evcc/util" +) func TestWallbe(t *testing.T) { - wb := NewWallbeFromConfig(nil, nil) + wb := NewWallbeFromConfig(util.NewLogger(""), nil) if wb.factor != 10 { t.Errorf("invalid factor: %d", wb.factor) } - wb = NewWallbeFromConfig(nil, map[string]interface{}{"legacy": true}) + wb = NewWallbeFromConfig(util.NewLogger(""), map[string]interface{}{"legacy": true}) if wb.factor != 1 { t.Errorf("invalid factor: %d", wb.factor)