diff --git a/cmd/configure/localization/de.toml b/cmd/configure/localization/de.toml index 961d4a1b4..be9beeb38 100644 --- a/cmd/configure/localization/de.toml +++ b/cmd/configure/localization/de.toml @@ -115,6 +115,8 @@ ValueError_Used = "Dieser Wert wird bereits verwendet." ValueError_Empty = "Der Wert darf nicht leer sein." ValueError_Float = "Der Wert muss eine Zahl sein. Nachkommastellen mit . anstatt mit , trennen." ValueError_Number = "Der Wert muss eine ganzzahlige Zahl sein." +ValueError_NumberLowerThanMin = "Der Wert muss größer oder gleich {{ .Min }} sein." +ValueError_NumberBiggerThanMax = "Der Wert muss kleiner oder gleich {{ .Max }} sein." Device_Configure = "Konfiguration" Device_Added = "wurde erfolgreich hinzugefügt." diff --git a/cmd/configure/localization/en.toml b/cmd/configure/localization/en.toml index 6dc712e58..002013a6f 100644 --- a/cmd/configure/localization/en.toml +++ b/cmd/configure/localization/en.toml @@ -115,6 +115,8 @@ ValueError_Used = "This value is aready in use." ValueError_Empty = "The value may not be empty." ValueError_Float = "The value has to be a number." ValueError_Number = "The value has to be an integer." +ValueError_NumberLowerThanMin = "The value must be bigger or equal to {{ .Min }}." +ValueError_NumberBiggerThanMax = "The value must be smaller or equal to {{ .Max }}." Device_Configure = "Configuration" Device_Added = "was successfully added." diff --git a/cmd/configure/main.go b/cmd/configure/main.go index 567971da5..ed37eea3f 100644 --- a/cmd/configure/main.go +++ b/cmd/configure/main.go @@ -275,6 +275,7 @@ func (c *CmdConfigure) configureLoadpoints() { } fmt.Println() powerIndex, _ := c.askChoice(c.localizedString("Loadpoint_WallboxMaxPower", nil), powerChoices) + loadpoint.MinCurrent = 6 switch powerIndex { case 0: loadpoint.MaxCurrent = 16 @@ -293,9 +294,11 @@ func (c *CmdConfigure) configureLoadpoints() { } case 3: amperage := c.askValue(question{ - label: c.localizedString("Loadpoint_WallboxMaxAmperage", nil), - valueType: templates.ParamValueTypeNumber, - required: true}) + label: c.localizedString("Loadpoint_WallboxMaxAmperage", nil), + valueType: templates.ParamValueTypeNumber, + minNumberValue: 6, + maxNumberValue: 32, + required: true}) loadpoint.MaxCurrent, _ = strconv.Atoi(amperage) if !chargerHasMeter { diff --git a/cmd/configure/survey.go b/cmd/configure/survey.go index a4651cb67..fb39649be 100644 --- a/cmd/configure/survey.go +++ b/cmd/configure/survey.go @@ -111,12 +111,13 @@ func (c *CmdConfigure) askYesNo(label string) bool { } type question struct { - label, help string - defaultValue, exampleValue interface{} - invalidValues []string - valueType string - mask, required bool - excludeNone bool + label, help string + defaultValue, exampleValue interface{} + invalidValues []string + valueType string + minNumberValue, maxNumberValue int64 + mask, required bool + excludeNone bool } // askBoolValue asks for a boolean value selection for a given question @@ -177,10 +178,16 @@ func (c *CmdConfigure) askValue(q question) string { } if q.valueType == templates.ParamValueTypeNumber { - _, err := strconv.ParseInt(value, 10, 64) + intValue, err := strconv.ParseInt(value, 10, 64) if err != nil { return errors.New(c.localizedString("ValueError_Number", nil)) } + if q.minNumberValue != 0 && intValue < q.minNumberValue { + return errors.New(c.localizedString("ValueError_NumberLowerThanMin", localizeMap{"Min": q.minNumberValue})) + } + if q.maxNumberValue != 0 && intValue > q.maxNumberValue { + return errors.New(c.localizedString("ValueError_NumberBiggerThanMax", localizeMap{"Max": q.maxNumberValue})) + } } return nil