Modernize invertergui: MQTT write support, HA integration, UI updates
Some checks failed
build / inverter_gui_pipeline (push) Has been cancelled

This commit is contained in:
2026-02-19 12:03:52 +11:00
parent 959d1e3c1f
commit a31a0b4829
460 changed files with 19655 additions and 40205 deletions

View File

@@ -53,7 +53,7 @@ func getBase(options multiTag, base int) (int, error) {
func convertMarshal(val reflect.Value) (bool, string, error) {
// Check first for the Marshaler interface
if val.Type().NumMethod() > 0 && val.CanInterface() {
if val.IsValid() && val.Type().NumMethod() > 0 && val.CanInterface() {
if marshaler, ok := val.Interface().(Marshaler); ok {
ret, err := marshaler.MarshalFlag()
return true, ret, err
@@ -68,6 +68,10 @@ func convertToString(val reflect.Value, options multiTag) (string, error) {
return ret, err
}
if !val.IsValid() {
return "", nil
}
tp := val.Type()
// Support for time.Duration
@@ -220,7 +224,7 @@ func convert(val string, retval reflect.Value, options multiTag) error {
retval.SetBool(b)
}
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
base, err := getBase(options, 10)
base, err := getBase(options, 0)
if err != nil {
return err
@@ -234,7 +238,7 @@ func convert(val string, retval reflect.Value, options multiTag) error {
retval.SetInt(parsed)
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
base, err := getBase(options, 10)
base, err := getBase(options, 0)
if err != nil {
return err
@@ -267,7 +271,12 @@ func convert(val string, retval reflect.Value, options multiTag) error {
retval.Set(reflect.Append(retval, elemval))
case reflect.Map:
parts := strings.SplitN(val, ":", 2)
keyValueDelimiter := options.Get("key-value-delimiter")
if keyValueDelimiter == "" {
keyValueDelimiter = ":"
}
parts := strings.SplitN(val, keyValueDelimiter, 2)
key := parts[0]
var value string