Config UI: visualize Modbusproxy (#24015)

Co-authored-by: Michael Geers <michael@geers.tv>
This commit is contained in:
Maschga 2025-11-13 09:44:39 +01:00 • committed by GitHub
parent 7924922d4b
commit 07bcca2925
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 666 additions and 119 deletions

View file

@ -951,13 +951,33 @@ func configureDevices(conf globalconfig.All) error {
return joinErrors(errs...)
}
// migrateYamlToJson converts a settings value from yaml to json if needed
func migrateYamlToJson[T any](key string) error {
var err error
if settings.IsJson(key) {
// already JSON, nothing to do
return nil
}
var data T
if err := settings.Yaml(key, new(T), &data); err == nil {
settings.SetJson(key, data)
log.INFO.Printf("migrated %s setting to JSON", key)
}
return err
}
func configureModbusProxy(conf *[]globalconfig.ModbusProxy) error {
// migrate settings
if settings.Exists(keys.ModbusProxy) {
*conf = []globalconfig.ModbusProxy{}
if err := settings.Yaml(keys.ModbusProxy, new([]map[string]any), &conf); err != nil {
// TODO: delete if not needed any more
if err := migrateYamlToJson[[]globalconfig.ModbusProxy](keys.ModbusProxy); err != nil {
return err
}
if err := settings.Json(keys.ModbusProxy, &conf); err != nil {
return fmt.Errorf("failed to read modbusproxy setting: %w", err)
}
}
for _, cfg := range *conf {